Согласно RFC 793, порт является 16-битным беззнаковым целым.
Это означает, что диапазон составляет 0 - 65535.
Однако в этом диапазоне порты 0–1023 обычно зарезервированы для определенных целей. Я говорю вообще, потому что, кроме порта 0, обычно нет применения резервирования 0-1023. Реализации TCP / UDP обычно не обеспечивают резервирование, кроме 0. Вы можете, если хотите, запустить порт TLS веб-сервера на порту 80, или 25, или 65535 вместо стандартного 443. Аналогично, даже если SMTP-серверы прослушивают порт 25 по стандарту, вы можете запустить его на 80, 443 или других.
Большинство реализаций резервируют 0 для конкретной цели - случайного назначения порта. Поэтому в большинстве реализаций выражение «прослушивать порт 0» фактически означает «мне все равно, какой порт я использую, просто дайте мне какой-нибудь случайный неназначенный порт для прослушивания».
Таким образом, любое ограничение на использование порта в диапазоне 0-65535, включая 0, диапазон временного резервирования и т. Д., зависит от реализации (т.е. ОС / драйвер) , однако все, включая 0, являются действительными портами в RFC 793.