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

урок 1

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

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

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

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

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

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

Упрощенно 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 не будет опубликован. Обязательные поля помечены *