Основы клиент-серверного взаимодействия

Шлейко Александр

Основы клиент-серверного взаимодействия

Шлейко Александр Яндекс

В уроке

  1. Как работает интернет?
  2. Протокол HTTP
  3. Что такое сервер?
  4. Что мы подразумеваем, когда говорим frontend/backend?
  5. JavaScript

Как работает интернет?

Интернет представляет собой (с учетом определенных упрощений) сеть соединенных между собой компьютеров без определенного центра. Если отбросить роутеры, то каждый компьютер в сети имеет свой уникальный IP-адрес.

IP-адрес – сочетание из четырех (для IPv4) цифр от 0 до 255. IP-адрес может быть привязан к оборудованию (номеру сетевой карты, зашитый производителем).

Есть и технические IP-адреса, например, 127.0.0.1 всегда указывает на текущий компьютер.

Вывод:

Таким образом, зная IP-адрес, мы всегда обратимся к одному, вполне определенному, физическому компьютеру в сети. В сети интернет запросы на самом деле идут с нашего (клиентского) компьютера на те или иные IP-адреса.

Однако в реальности через браузер мы вводим что-то вроде http://netology.ru/. Как это работает?

Domain Name System

Domain Name System

Единственное назначение системы доменных имен (или DNS) – преобразовывать доменные имена (yandex.ru, google.com) в IP-адреса.

Таким образом, после того, как мы ввели в строке браузера привычный адрес социальной сети, браузер сначала делает запрос на DNS-сервер, преобразует доменное имя к IP-адресу, к которому и пойдет запрос.

Возможно, вы видели в настройках соединения вашей операционной системы пункт, касающийся адресов DNS серверов – это как раз о том, куда браузер будет обращаться для преобразования домена в IP-адрес.

Протокол HTTP

Протокол HTTP

После того, как мы нашли в сети компьютер с определенным IP-адресом, встает вопрос о том, как объяснить ему, что нам надо, и получить от него нужную информацию.

Для этого могут быть использованы различные протоколы (FTP, IMAP, и т.д.).

Для передачи веб-страниц с сервера на наши с вами компьютеры используется протокол HTTP – протокол передачи гипертекста.

Гипертекстом называется текст веб-страниц за счёт ссылок, расположенных на них - "порталов" на другие страницы.

Задачи, которые решает протокол HTTP

О сервере

На самом деле, когда мы, занимаясь веб-разработкой, говорим «сервер», мы подразумеваем вовсе не какой-то суровый суперкомпьютер, а лишь набор программного обеспечения, способный взаимодействовать по протоколу HTTP.

Технологии для сервера

В качестве операционной системы для веб-сервера, в большинстве своем, используется Linux.

Варианты дальнейшей начинки могут различаться.

Это может быть классическая связка Apache+PHP+Mysql, образуя вместе с линуксом аббревиатуру «lamp».

Возможны и другие сочетания:

Это может быть и, например, сочетание nodejs+mongodb.

Сервер

Важно, что при любом составе пакета, какая-то часть из пакета отвечает за то, чтобы слушать и обрабатывать входящие запросы (определять, что именно запрошено), другая при запросе обрабатывает написанные скрипты, третья отвечает за чтение и запись в базу данных.

В случае lamp:

Раз «сервер» – это программное обеспечение, то значит, мы не ограничены ни Linux, ни чем-то еще другим. И вот действительно несколько пакетов, с помощью которых можно настроить локальный сервер на windows-машине и работать с ним.

Backend/frontend

Backend

Backend

Итак, сервер получил запрос от клиента. В качестве ответа (так как мы с вами взаимодействуем в протоколе HTTP) будет гипертекст (HTML).

Систему различных скриптов, которые позволяют формировать ответ сервера на разные запросы клиентов (различные ссылки), и называют backend'ом веб-приложения.

Например, скрипт, который выводит текущее время на PHP, может выглядеть так:

      
        <?php echo date("Y-m-d H:i"); ?>
      
    

Frontend

Frontend

Кроме формирования различных страниц на сервере, есть возможность «оживить» наше веб-приложение на клиенте. За это отвечает JavaScript.

JavaScript-коды можно писать самому, размещая их в тегах script вашего HTML-документа.

Можно (и нужно) также пользоваться готовыми библиотеками, которые зачастую «из коробки» имеют функционал, на самостоятельную разработку которого понадобиться куча времени.

Для установки таких библиотек часто достаточно выполнить несложные инструкции, как тут: fotorama.io

Спасибо за внимание!

Шлейко Александр