как привязать порт TCP - PullRequest
0 голосов
/ 26 июля 2010

Любое тело знает, как номер порта детально связан с сокетом и как порт используется для пересылки пакета, полученного на транспортном уровне, в сокет, который читает этот порт?

спасибо.

1 Ответ

4 голосов
/ 26 июля 2010

Приложение связывается с локальным IP-адресом и портом, используя функцию bind(). Удаленный IP-адрес и порт определяются другим концом соединения во время установления соединения.

В ядре во время установления TCP-соединения сокет помещается в хеш-таблицу на основе данных, включающих локальный адрес, локальный порт, удаленный адрес и удаленный порт. Когда поступает входящий tcp-сегмент, эти значения извлекаются из заголовка и используются для поиска соответствующего сокета в хэш-таблице. В Linux этот поиск происходит в функции inet_lookup_established(). Аналогичная функция inet_lookup_listener() используется для поиска прослушивающего сокета из другой хеш-таблицы для нового соединения; в этом случае удаленный IP-адрес и порт не используются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...