Протоколы передачи данных

Урок 1

Введение в PHP. Протокол tcp\ip

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

Итак, интернет — это… сеть, составленная совокупностью служб. Таких как www, mail, rss и т.д.

Так как эта сеть  к тому же еще и глобальная, она объединяет оборудование абсолютно разных производителей, построенное на разных архитектурах. Для согласования работы этого оборудования нужны протоколы, это некоторые договорённости, в которых указано, как этому оборудованию взаимодействовать. Протоколов существует очень много, и они представляют некоторый стек (стопку), где каждый протокол отвечает за свою функцию и имеет интерфейс доступа к вызову функций протоколов, расположенных уровнем ниже.   

В основном мы будем касаться работы протокола http. Это высокоуровневый протокол, взаимодействующий с web-сервером и браузером.  Стек протоколов, на которых сейчас базируется de-facto работа интернета, именуется tcp/ip.

Давайте схематично, на примере передачи html страницы, рассмотрим работу http заголовков и  всего стека tcp/ip.

Упрощенно html страница выглядит следующим образом

<!DOCTYPE html>
<html>
  <head>
      ....
  </head>
  <body>
      ....
  </body>
</html>

Таким образом, документ html можно представить в виде заголовка и тела (рис. 1).

передача html документа

Рисунок № 1 — Передача HTML документа

Такая структура прослеживается и при последовательной передаче документа через стек протоколов tcp/ip. Если это наглядно изобразить, то получим следующую картину (рис. 2).

запрос по протоколу tcp ip

Рисунок № 2  — Стек протоколов tcp/ip

Человек осуществляет запрос в текстовом виде через приложение (браузер) и оно, перемещаясь по стеку протоколов (по уровням), при помощи функций этих уровней, попадает на web-сервер. Там наш сервер (например, apache) формирует страницу и отдает ее обратно. Какой из протоколов действует на каждом из уровней, указано на рисунке 2.

Теперь давайте разберем, как именно передается документ (страница HTML) в ответ на запрос пользователя.  Условно назовем единицу обмена информации между клиентом и сервером “документ”.

  1. Документ поступает на уровень http (уровень приложения) и преобразуется путем добавления к нему заголовка http (рис 3).

Добавление заголовка HTTP

Рисунок № 3 — Добавление заголовка HTTP

2. Далее происходит перемещения этого документа с заголовком http на транспортный уровень (рис. 4). Там к нему добавляется заголовок уровня tcp.

Добавление заголовока уровня tcp

Рисунок №4 — Добавление заголовка уровня tcp

3. Далее тоже самое происходит на сетевом уровне (рис. 5). Естественно, вы должны понимать, что это утрированная ситуация и предельно сжата в описании, но суть и идею она передает.

Добавление заголовка сетевого уровня

Рисунок №5 —  Добавление заголовка сетевого уровня

4. Наверное уже очевидно, что на канальном уровне все происходит аналогично (рис. 6).

Добавление заголовка на канальном уровне

Рисунок №6 — Добавление заголовка на канальном уровне

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

Ethernet — позволяет машинам при передаче понять, что данный пакет отправляется для конкретной машины. Заголовок содержит в себе Mac-адрес машины отправителя и получателя.  Mac- адрес — это шестибайтное число, которое привязано к конкретной сетевой карте. Т.е. у каждого хоста есть свой mac-адрес.

IP — в некотором роде схож по смыслу с Mac-адресом, но при распространении данных между сетями IP состоит из номера сети + номер хоста в этой сети.  Заголовок содержит IP адрес отправителя и IP адрес получателя.

TCP — содержит двухбайтовые значения порта отправителя и порта получателя. Они предназначены для однозначной идентификации приложения (например, это может быть браузер или почта). Т.е., если я сделаю запрос на загрузку одной и той же страницы из двух разных браузеров, именно порт позволит прислать один документ в один браузер, а второй — в другой.  Также, в протоколе заложены функции, отвечающие за гарантию получения адресатом документа. Иными словами, протокол отправляет подтверждение о получении пакета, а если такого подтверждения нет, то пакет отправляется повторно.

HTTP — не содержит цифровых идентификаторов. Данный заголовок полностью текстовый. Его мы разберем далее более детально.

5. Далее все это “дело” передается по сети и попадает на канальный уровень хоста клиента, сделавшего запрос. После чего все эти пакеты передаются вверх по стеку,  и на каждом уровне протокол отрезает от пакета с данными свой заголовок и передает его вверх (рис. 7).

Полный цикл передачи документа по протоколам tcp ip

Рисунок №7 — Полный цикл передачи документа по протоколам tcp ip

Подведем итоги:

  • При обмене документами между сервером и клиентом документ проходит четыре уровня стека tcp/ip.
  • Для того, чтобы передача осуществлялась адресно, т.е. чтобы именно то приложение, которое сделало запрос, получило ответ, существуют цифровые идентификаторы, которые встраиваются в заголовки. Такие заголовки есть на всех уровнях кроме приложения, там текстовый заголовок.

“На примере тапка” или гуманитариям.

Большая часть жизни в обществе основана на протоколах\договоренностях и уровнях.

Касательно протоколов тут все очень просто:  представим, что есть преподаватель, профессор. И он идет читать лекцию о раннем Платоне. Он выступает сейчас в качестве сервера, а клиент это его студенты. Так вот есть протокол, гласящий, что профессор будет читать лекцию конкретно в 160 аудитории и на русском языке и все это произойдет в конкретное время. Студенты, следуя договоренности, должны явиться именно в это время и в эту аудиторию, если они, конечно, желают получить передаваемую профессором информацию.

С уровнями тоже ничем не сложнее. Вспомните вашу работу. Ваш начальник имеет “интерфейс”, иначе говоря возможность, чтобы “вызвать ваши функции” или просто сообщить вам о необходимости сделать дело, для которого вы там и предназначены. Он также понятия не имеет о всей сложности выполняемой вами работы. Вы просто выполняете и результат передаете тому, кому положено по “протоколу”.

to be continued…

Автор Виталий Сухомлинов
практикующий Seo-специалист
и программист любитель

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *