Как TCP получает информацию о порте?

Вопрос или проблема

Я изучаю модели OSI и TCP/IP и у меня есть некоторые путаницы:

Например, я ввожу этот адрес: 192.168.4.5:9300 в браузере, и все эти ДАННЫЕ передаются на транспортный уровень в двоичном виде. Как уровень TCP в обеих моделях извлекает информацию о порте, такой как src/dest, из ДАННЫХ прикладного уровня?

TCP использует собственный заголовок, который содержит эту информацию:
введите описание изображения здесь
https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure

Прикладные данные, следующими за заголовком, не содержат такой информации.

IP-адреса источника и назначения содержатся в заголовке инкапсулирующего IP-пакета. TCP-сегмент (заголовок + данные) следует за этим заголовком.
введите описание изображения здесь
https://en.wikipedia.org/wiki/IPv4#Packet_structure

Как уровень TCP в обеих моделях извлекает информацию о порте, такой как src/dest, из ДАННЫХ прикладного уровня?

Он не извлекает.

Как вы знаете, сетевой протокол (обычно известный как “TCP/IP”) не соответствует модели OSI. Модель OSI имеет транспортный уровень, но TCP не является транспортным уровнем OSI. На самом деле модель OSI, возможно, устарела. Она применялась к в значительной степени устаревшим протоколам, таким как X.25, я бы сказал, что она неактуальна для каких-либо интернет-протоколов, которые активно используются в прошлом или настоящем.

В TCP/IP (V4) заголовок TCP находится в начале части данных IP-пакета. Первые элементы заголовка TCP – это 16-битный номер порта источника и номер порта назначения.

Элемент данных TCP содержит заголовок и данные протокола прикладного уровня. Данные прикладного уровня не нуждаются в номерах TCP-портов и обычно не содержат этой информации.

Например, я ввожу этот адрес: 192.168.4.5:9300 в браузере, и все эти ДАННЫЕ передаются на транспортный уровень в двоичном виде

Однако он не передается как единый двоичный blob. Интерфейс между уровнями не ограничивается этим – он определяется в терминах различных функций (или ‘примитивов’, как их называет OSI), которые нижний уровень предоставляет верхнему уровню, и они могут быть указаны для принятия любого количества параметров, не обязательно только ‘двоичных данных’.

  • Например, ITU-T X.214, также известный как ISO 8072 (что является определением “Транспортной службы” OSI), указывает, что транспортный уровень должен предоставлять функцию T-CONNECT(src_address, dst_address, [и т.д.], user_data) в дополнение к T-DATA(user_data).

    (Хотя определения услуг OSI не были написаны для TCP/IP – например, “Транспортный” уровень фактически описывает конкурирующие протоколы OSI TP0-TP4, но они по общему функционалу схожи с TCP интернета.)

  • Аналогично, RFC 9293 (спецификация TCP/IP), конкретно раздел 3.9.1 “Интерфейс пользователя/TCP”, определяет функцию OPEN (локальный порт, удаленный сокет, активный/пассивный, [и т.д.]) в дополнение к SEND (...).

  • На практике это обычно реализуется в стиле “BSD-сокетов”, где браузер создает сокет, вызывает connect(<адрес, порт>) на сокете (запрашивая TCP выполнить рукопожатие), а затем каждый send() ссылается на уже установленный дескриптор сокета.

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

Ответ или решение

Краткий ответ на ваш вопрос о том, как протокол TCP получает информацию о портах, требует понимания нескольких ключевых аспектов передачи данных в стековых моделях OSI и TCP/IP.

1. Стек протоколов: структура уровней

В стеке TCP/IP использование слоев значительно отличается от модели OSI. Несмотря на то что обе модели имеют транспортный слой, TCP работает не согласно определению OSI, а представляет собой собственный протокол, который используется в интернете. В TCP/IP модель структуры данных и передачи данных четко определена, что позволяет эффективно обрабатывать как адресацию IP, так и сопоставление портов.

2. Как формируется структура данных TCP

Когда пользователи вводят адрес, например, 192.168.4.5:9300, браузер осуществляет следующие шаги:

  • Разделение адреса на компоненты: IP-адрес (192.168.4.5) и номер порта (9300) извлекаются в браузере.
  • Создание сокета: Браузер создает сокет, используя системные вызовы, такие как socket() и connect(), где локальный и удаленный адреса передаются в виде отдельных параметров.

3. Заголовок TCP и информация о портах

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

  • Структура заголовка TCP: Заголовок TCP помещается в начале сегмента TCP, и в нем находятся следующие поля:
    • Порт источника: указывает номер порта, с которого инициируется соединение.
    • Порт назначения: указывает номер порта, к которому происходит подключение.

Эти поля помещаются в заголовок автоматически при формировании пакета TCP, и они не извлекаются из прикладной информации, переданной на более высоком уровне.

4. Роль других слоев

При передаче данных через сеть:

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

5. Заключение

Важно понимать, что TCP не извлекает информацию о портах из данных прикладного уровня. Вместо этого данные передаются вместе с заголовком TCP, который содержит необходимую информацию. При этом взаимодействие между слоями осуществляется через четко определенные интерфейсы и функции, которые отдают приоритет отделению информации по разным уровням вместо передачи данных "с одним куском" в бинарном формате.

Эта структура не только обеспечивает высокую степень управляемости и эффективности, но и позволяет протоколам работать согласованно в сложных сетевых топологиях. Познание особенностей работы TCP и взаимодействия его с другими слоями сетевой модели соответствует современным требованиям в области информационных технологий и обеспечит вам глубокое понимание процесса передачи данных.

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

Капча загружается...