Порт 0 имеет особое значение в сетевом программировании, особенно в операционных системах Unix, когда речь идет о программировании сокетов, где этот порт используется для запроса динамических портов, выделенных системой. Порт 0 — это порт с подстановочным знаком, указывающий системе найти подходящий номер порта.
В отличие от большинства номеров портов, порт 0 является зарезервированным портом в сети TCP/IP, то есть он не используется в сообщениях TCP или UDP. Сетевые порты в TCP и UDP находятся в диапазоне от 0 до 65535.
Номера портов в диапазоне от 0 до 1023 идентифицируются как системные порты. Управление по присвоению номеров Интернета (IANA) ведет официальный список предполагаемого использования этих номеров портов в Интернете, и системный порт 0 не должен использоваться.
Как порт 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 (как входящие, так и исходящие сообщения) для защиты от этих эксплойтов.