Який найбільший номер мережевого порту TCP / IP, дозволений для IPv4?


Відповіді:


565

Номер порту - це непідписане 16-бітове ціле число, тому 65535.


216
"Гей, Джіме, скільки портів ми повинні підтримувати?" "Просто зробіть це 16 біт для хорошої міри. Ніхто ніколи не буде мати більше, ніж кілька сотень відкритих відразу, вершини".
JessieArr

3
@barlop Я припускав, що коли вони створили порти, одна машина з сотнями з'єднань, ймовірно, вважалася найгіршим сценарієм. Але сьогодні веб-сервери, мережеві пристрої тощо можуть напевно наштовхнутися на обмеження кількості портів. Microsoft написала цікаву статтю Technet про те, як діагностувати та уникати цього в середовищах Windows: blogs.technet.microsoft.com/askds/2008/10/29/…
JessieArr

3
@JessieArr в обох випадках це насправді не проблема 65536, це проблема А) програм, які не випускають з'єднань, залишаючи їх у стані "ЗАЧЕКАЙТЕ", що netstat показує в поєднанні з B). Деякі попередні версії Windows збираються лише з 1024-5000 для динамічні порти. І навіть тоді, хто знає, чи це взагалі колись траплялося, оскільки жодна програма ніколи не намагалася нікому повідомляти, що не може отримати динамічний порт, а також не має windows. Отже, це проблема з третьою проблемою, навіть не дуже спричинена Номер 65536. Веб-браузер, можливо, є найбільшим користувачем з'єднань. У моєму виході netstat є 297 рядків. Далеко від 65K
barlop

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 зарезервовано для ефемерних портів


11
Діапазон ефемерних портів залежить від системи. Я запускаю Linux ubuntu з ядром 3.19.0-43. $ cat /proc/sys/net/ipv4/ip_local_port_rangeпризводить до виходу 32768 61000. Що стосується того, чи варто або не слід використовувати порт у ефемерному порту системи, я підозрюю, що більшість сучасних мережевих операційних систем пропускатимуться через порт, який уже використовується.
Кіт Рейнольдс

37

Просто продовження відповіді розгрому . Діапазон ефемерних портів (як мінімум, в Linux, і я підозрюю, що також в інших Unices) не є фіксованим. Це можна контролювати, написавши до /proc/sys/net/ipv4/ip_local_port_range

Єдине обмеження (що стосується IANA) полягає в тому, що порти нижче 1024 позначаються як добре відомі порти. Порти вище, які безкоштовні для використання. Часто ви виявите, що порти нижче 1024 обмежені для доступу суперпользователя, я вважаю, саме з цієї причини.


15

За даними RFC 793, порт - це 16-бітний неподписаний int.

Це означає, що діапазон становить 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.



11

Дійсні числа портів: від 0 до 2 ^ 16-1 = 0 до 65535
Це пов'язано з тим, що номер порту дорівнює 16 бітам.

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

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.