Какой самый большой номер сетевого порта TCP / IP допустим для IPv4?

Ответы:

565

Номер порта представляет собой 16-разрядное целое число без знака, то есть 65535.

Грег Хьюгилл
источник
216
"Эй, Джим, сколько портов мы должны поддерживать?" "Просто сделайте это 16 битами для хорошей меры. Ни у кого никогда не будет больше чем нескольких сотен открытых, вершины".
ДжессиАрр
3
@ barlop Я предполагал, что когда они впервые создали порты, один компьютер с сотнями соединений, вероятно, считался худшим сценарием. Но сегодня веб-серверы, сетевые устройства и т. Д. Могут определенно столкнуться с ограничениями количества портов. Microsoft написала интересную статью Technet о том, как ее диагностировать и избежать в средах Windows: blogs.technet.microsoft.com/askds/2008/10/29/…
JessieArr
3
@JessieArr в обоих случаях это не проблема 65536, а проблема A), когда программы не освобождают соединения, оставляя их в состоянии «WAIT», которое netstat показывает в сочетании с B), некоторые более ранние версии Windows работают только с 1024-5000 для динамические порты. И даже тогда, кто знает, случалось ли это когда-либо, так как ни одна программа не удосужилась сообщить кому-либо, что она не может получить динамический порт, и не имеет окон. Так что это проблема с теорией, даже не вызванная 65536 число. Веб-браузер может быть самым большим пользователем соединений. У меня 297 строк в выводе netstat. Вдали от 65К
баролл
3
@JessieArr Большинство IP-стеков используют в качестве уникального идентификатора соединений кортеж IP-адреса источника, порта источника, IP-адреса назначения и порта назначения. Это означает , что сервер может иметь много много более активных соединений , чем имеется в наличии открытых портов, а количество портов только накладывает ограничение (хотя и очень большие один) на количестве открытых соединений между одним источником и одним назначением. Я не думаю, что кто-либо когда-либо будет запускать серверы (или прослушивать соединения) более чем на 65536 портов одновременно.
jduncanator
41
@JessieArr - это научит вас пытаться пошутить, это серьезное дело, вы знаете, здесь нет времени на подобные вещи: /
Мэтт
145

Самый большой номер порта - это беззнаковое короткое 2 ^ 16-1: 65535

Зарегистрированный порт - это порт, назначенный Интернет-корпорацией по присвоению имен и номеров (ICANN) для определенного использования. Каждый зарегистрированный порт находится в диапазоне 1024–49151.

С 21 марта 2001 года регистрационным агентством является ICANN; до этого времени это была IANA.

Порты с номерами ниже, чем у зарегистрированных портов, называются хорошо известными портами; порт с номерами, превышающими номера зарегистрированных портов, называются динамическими и / или частными портами.

Википедия: зарегистрированные порты

Брайан Р. Бонди
источник
71

Насколько я понимаю, вы должны использовать только до 49151, так как от 49152 до 65535 зарезервированы для эфемерных портов

Smashery
источник
11
эфемерный диапазон портов зависит от системы. Я использую Ubuntu Linux с 3.19.0-43-generic ядром. $ cat /proc/sys/net/ipv4/ip_local_port_rangeрезультаты в выходе 32768 61000. Что касается того, следует или не следует использовать порт в эфемерном диапазоне портов своей системы, я подозреваю, что большинство, если не все современные сетевые операционные системы, будут пропускать порт, который уже используется.
Кит Рейнольдс
37

Просто продолжение ответа Smashery . Эфемерный диапазон портов (по крайней мере в Linux, и я подозреваю, что и другие Unices) не является фиксированным. Это можно контролировать, написав /proc/sys/net/ipv4/ip_local_port_range

Единственное ограничение (в отношении IANA) состоит в том, что порты ниже 1024 назначаются как хорошо известные порты. Порты выше, которые бесплатны для использования. Часто вы обнаружите, что порты ниже 1024 ограничены доступом суперпользователя, я думаю, именно по этой причине.

Эндрю Эджкомб
источник
15

Согласно 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.

Eldakka
источник
11

Допустимые номера для портов: от 0 до 2 ^ 16-1 = от 0 до 65535
Это потому, что номер порта имеет длину 16 бит.

Однако порты делятся на:
общеизвестные порты : от 0 до 1023 (используются для системных служб, например, HTTP, FTP, SSH, DHCP ...)
Зарегистрированные / пользовательские порты : от 1024 до 49151 (вы можете использовать его для своего сервера, но Остерегайтесь некоторых известных приложений: например, сервер системы управления базами данных Microsoft SQL Server или сервер Apache Derby Network Server уже используют этот диапазон, т.е. не рекомендуется назначать порт MSSQL вашему серверу, в противном случае, если MSSQL работает, то ваш сервер наиболее вероятно, не будет работать из-за конфликта портов)
Динамические / частные порты : от 49152 до 65535. (не используются для серверов, а не для клиентов, например, в службе NATing)

При программировании вы можете использовать любые числа от 0 до 65535 для вашего сервера, однако вы должны придерживаться диапазонов, упомянутых выше, в противном случае некоторые системные службы или некоторые приложения не будут работать из-за конфликта портов.
Проверьте список большинства портов здесь: https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

Мосаб Шахин
источник