Запросы к веб-серверу и их обработка предполагают использование протокола TCP, обеспечивающего гарантированную доставку данных и обратную связь. Рассмотрим путь TCP SYN пакета от одного хоста к другому со всеми промежуточными узлами.
TCP SYN — передача пакета по сети с подробным разбором
Что представляет собой 3 way handshake:
- Устройство, которое желает установить связь отправляет SYN пакет (если рассматривать запрос к странице сайта, то соединение инициируется клиентом)
- В ответ сервер отправляет SYN/ACK, что означает готовность к соединению
- Клиент получает SYN/ACK и отвечает ACK
Таким образом, происходит установка соединения. Далее возможна передача данных.
Рассмотрим как работают сетевые устройства, при на первом шаге. С любым пакетом процесс аналогичен и будет повторяться. Предполагается, что отправитель и получатель находятся в разных сетях на удалении друг от друга.
Первая задача клиентского устройства — сформировать пакет SYN: порт отправителя(случайный), порт назначения, IP адрес назначения. Это TCP/IP и третий уровень модели OSI.
В дальнейшем пакет не меняется, к нему только добавляются дополнительные заголовки.
Поскольку адрес назначения не из локальной сети (так и будет если сервер находится в интернете) — пакеты должны уходить на роутер, куда их отправит коммутатор, установленный в офисной сети или у провайдера.
Компьютер-иницатор соединения делает ARP запрос и узнает MAC роутера. ARP — широковещательный запрос, который коммутатор в локальной сети рассылает на все порты кроме того с которого пришел запрос. Отвечает только роутер поскольку в своей таблице маршрутизации видит сеть назначения.
Роутер за коммутатором
MAC во фрейме роутер ставит в качестве получателя, свой MAC в качестве отправителя. Получается дополнительный заголовок второго уровня OSI.
Формируется CRS (или frame check sequence FCS) — хэш пакета md5, добаляет хэш в начало пакета.
Роутер в сети
Первый роутер на пути проверит CRS и сравнит хэш до отправки и полученный им при приеме. Обработка продолжится только при совпадении значений. Так реализована защита от ошибок и перехвата трафика.
Затем распаковывает пакет и видит свой MAC как получателя, отбрасывает заголовок второго уровня.
Роутер проверяет IP адрес назначения, смотрит таблицу роутинга и отправляет пакет на следующий хоп (если нужно предварительно делает ARP, формирует новый заголовок 2 уровня со своим MAC и MAC следующего хопа). Вновь формируется и добавляется CRS.
Следующий хоп повторяет то же, так пока IP адрес получателя не совпадет с тем, который находится в 'зоне ответственности' роутера.
Конечный хост также проверяет CRS, только он распаковывает пакет 3 уровня, который сформирован изначально и выясняет на какой порт требуется доставить и кто является отправителем.
Формируется SYN-ACK и отправляется обратно таким же образом. По этому принципу передаются по TCP/IP сети общего доступа любые данные.
Про разграничение сетей на локальные и сети общего доступа — приватные и публичные адреса.