Для чего используется порт 0?

Порт 0 не является реальным номером порта, но для него есть цель

Порт 0 имеет особое значение в сетевом программировании, особенно в ОС Unix, когда речь идет о программировании сокетов, где порт используется для запроса системных динамических портов. Порт 0 подобен подстановочному порту, который сообщает системе найти подходящий номер порта.

В отличие от большинства номеров портов, порт 0 является зарезервированным портом в сетях TCP/IP, что означает, что он не должен использоваться в сообщениях TCP или UDP.

Сетевые порты в TCP и UDP варьируются от нуля до 65535. Номера портов в диапазоне от нуля до 1023 определяются как системные порты или общеизвестные порты. Управление по присвоению номеров в Интернете (IANA) ведет официальный список предполагаемого использования этих номеров портов в Интернете, и системный порт 0 не должен использоваться.

Как TCP/UDP порт 0 работает в сетевом программировании

Конфигурирование нового сетевого сокета требует, чтобы один номер порта был выделен как на стороне источника, так и на стороне назначения. Сообщения TCP или UDP, отправленные отправителем (источником), содержат оба номера портов, чтобы получатель сообщения (получатель) мог выдавать ответные сообщения для правильной конечной точки протокола.

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

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

Альтернативно, он может вместо этого предоставить порт 0 для bind () в качестве параметра соединения. Это запускает операционную систему для автоматического поиска и возврата подходящего доступного порта в диапазоне номеров динамических портов TCP/IP.

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

Unix, Windows и другие операционные системы незначительно отличаются по своей обработке порта 0, но применяется то же общее соглашение.

Порт 0 и безопасность сети

Сетевой трафик, отправляемый через Интернет на хосты, прослушивающие порт 0, может генерироваться злоумышленниками или случайно запрограммированными приложениями. Ответные сообщения, генерируемые хостами в ответ на трафик порта 0, могут помочь злоумышленникам узнать больше о поведении и потенциальных сетевых уязвимостях этих устройств.

Многие интернет-провайдеры (ISP) блокируют трафик на порту 0 – как входящие, так и исходящие сообщения – для защиты от этих эксплойтов.

Оцените статью
Solutics.ru
Добавить комментарий