tcp syn


Запросы к веб-серверу и их обработка предполагают использование протокола TCP, обеспечивающего гарантированную доставку данных и обратную связь. Рассмотрим путь TCP SYN пакета от одного хоста к другому со всеми промежуточными узлами.



TCP SYN — передача пакета по сети с подробным разбором


Что представляет собой 3 way handshake:

  1. Устройство, которое желает установить связь отправляет SYN пакет (если рассматривать запрос к странице сайта, то соединение инициируется клиентом)
  2. В ответ сервер отправляет SYN/ACK, что означает готовность к соединению
  3. Клиент получает SYN/ACK и отвечает ACK


Таким образом, происходит установка соединения. Далее возможна передача данных.


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


tcp syn




Первая задача клиентского устройства — сформировать пакет 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 сети общего доступа любые данные.


Про разграничение сетей на локальные и сети общего доступа — приватные и публичные адреса.

Сказать спасибо