#networking #operating-system #network-programming
Вопрос:
В модели TCP/IP это показывает, что сообщение прикладного уровня отправляется на уровень TCP, который разбивает его на сегменты и добавляет порты источника и назначения в заголовки сегментов, а затем на уровень IP, который инкапсулирует каждый входящий сегмент TCP в IP-пакет и добавляет IP-адреса источника и назначения в заголовки пакетов.
Как IP-адреса источника/назначения передаются на уровень IP, поскольку он просто (предположительно) получает сегмент TCP, содержащий только порты источника/назначения?
Передаются ли также некоторые другие метаданные по слоям, которые поддерживают эту информацию об IP-адресе, с уровня приложения на уровень IP через уровень TCP?
Ответ №1:
В общем, все слои пересекаются еще до того, как пакет покидает ваш компьютер. Точка зрения слоя может вводить в заблуждение, потому что она не соответствует тому, как можно было бы думать о слоях. С полностью многоуровневой точки зрения у вас есть отдельные слои, и каждый слой не зависит от последнего. С сетями на самом деле это не так.
Приложение (уровень 7) создает сокет с socket()
функцией. Функция сокета возвращает псевдофайловый дескриптор, который передается последующим функциям для установления соединения. После этого приложение создает структуру, которая включает используемый порт (уровень 4) и IP-адрес назначения (уровень 3). Затем приложение вызывает connect, и ОС инкапсулирует все это в пакет с локальными MAC-адресами (уровень 2), которые будут использоваться в локальной сети. Затем пакет покидает компьютер на физическом носителе (уровень 1).
Вы видите, что пакет пересек все уровни и оказался на физическом носителе еще до того, как покинул ваш компьютер. Таким образом, ОС имеет полный контекст для создания соответствующего пакета для отправки на маршрутизатор. Уровень «приложение» может вводить в заблуждение, потому что в целом он не представляет собой реальное приложение, такое как программа. Я бы сказал, что в реальном сценарии приложение отвечает за все, вплоть до уровня 3, а затем ОС обрабатывает уровни 2 и 1, используя таблицу маршрутизации и тому подобное.
Точка зрения уровня-это не та, где уровень 3 пересекается только тогда, когда пакет меняет сеть. Уровень 3 пересекается, когда пакет TCP, содержащий порты, инкапсулируется в пакет с IP-адресами назначения и источника. Все это происходит на вашем компьютере перед инкапсуляцией в пакет с MAC-адресами назначения и источника и отправкой на физический носитель. Таким образом, ОС имеет полный контекст для создания надлежащих пакетов для отправки по физическому носителю.