Jaki jest największy dopuszczalny numer portu sieciowego TCP / IP dla IPv4?

406

Jaki jest najwyższy numer portu, którego można użyć?

Nazwa Użytkownika
źródło

Odpowiedzi:

565

Numer portu to 16-bitowa liczba całkowita bez znaku, więc 65535.

Greg Hewgill
źródło
216
„Hej, Jim, ile portów powinniśmy obsługiwać?” „Po prostu zrób 16 bitów na dokładkę. Nikt nigdy nie będzie miał więcej niż kilkaset jednocześnie otwartych”.
JessieArr
3
@barlop Sugerowałem, że kiedy po raz pierwszy utworzyli porty, jedna maszyna z setkami połączeń była prawdopodobnie uważana za najgorszy scenariusz. Ale dziś serwery sieciowe, urządzenia sieciowe itp. Mogą zdecydowanie zderzyć się z ograniczeniami liczby portów. Microsoft napisał interesujący artykuł Technet o tym, jak diagnozować i unikać w środowiskach Windows: blogs.technet.microsoft.com/askds/2008/10/29/...
JessieArr
3
@JessieArr w obu tych przypadkach to nie jest tak naprawdę problem 65536, to jest problem A) programów nie zwalniających połączeń, pozostawiających je w stanie „OCZEKIWANIA”, które pokazuje netstat w połączeniu z B) niektóre wcześniejsze wersje systemu Windows zmieniają się z 1024-5000 na i dynamiczne porty. A nawet wtedy, kto wie, czy to się kiedykolwiek wydarzyło, ponieważ żaden program nigdy nie zadał sobie trudu, aby powiadomić kogokolwiek, że nie może uzyskać dynamicznego portu, nie ma też okien. Więc to teoretyczny problem, nawet nie spowodowany przez Numer 65536. Przeglądarka internetowa może być największym użytkownikiem połączeń. Mam 297 linii w moim wyniku netstat. Daleko od 65 tys.
barlop
3
@JessieArr Większość stosów adresów IP używa krotki źródłowego adresu IP, portu źródłowego, docelowego adresu IP i portu docelowego jako unikalnego identyfikatora połączeń. Oznacza to, że serwer może mieć wiele wiele więcej aktywnych połączeń niż dostępne są otwarte porty, a ilość portów umieszcza tylko ograniczenie (aczkolwiek bardzo dużej jednym) od ilości otwartych połączeń między pojedynczym źródłem i jednym przeznaczenia. Nie sądzę, aby ktokolwiek kiedykolwiek działał na serwerach (lub nasłuchiwał połączeń) na więcej niż 65536 portach jednocześnie.
jduncanator
41
@JessieArr - to nauczy cię, jak żartować, to poważna sprawa, wiesz, nie ma czasu na takie rzeczy tutaj: /
Matt
145

Największy numer portu to niepodpisany krótki 2 ^ 16-1: 65535

Port zarejestrowany to port przypisany przez Internet Corporation dla przypisanych nazw i numerów (ICANN) do określonego zastosowania. Każdy zarejestrowany port należy do zakresu 1024–49151.

Od 21 marca 2001 r. Agencją rejestracyjną jest ICANN; przed tym czasem była to IANA.

Porty o numerach niższych niż zarejestrowane porty nazywane są portami dobrze znanymi; porty o numerach większych niż zarejestrowane porty nazywane są portami dynamicznymi i / lub prywatnymi.

Wikipedia: Porty zarejestrowane

Brian R. Bondy
źródło
71

Jak rozumiem, powinieneś używać tylko do 49151, ponieważ od 49152 do 65535 są zarezerwowane dla portów efemerycznych

Smashery
źródło
11
efemeryczny zakres portów różni się w zależności od systemu. Korzystam z systemu Linux Ubuntu z jądrem generycznym 3.19.0-43. $ cat /proc/sys/net/ipv4/ip_local_port_rangedaje wynik 32768 61000. Jeśli chodzi o to, czy należy korzystać z portu w efemerycznym zakresie portów w swoim systemie, podejrzewam, że większość, jeśli nie wszystkie współczesne sieciowe systemy operacyjne pomijają port, który jest już używany.
Keith Reynolds,
37

Po prostu kontynuacja odpowiedzi roztrzaskania . Zakres portów efemerycznych (przynajmniej w Linuksie i podejrzewam, że także inne Unices) nie jest stały. Można to kontrolować, pisząc na adres /proc/sys/net/ipv4/ip_local_port_range

Jedynym ograniczeniem (w odniesieniu do IANA) jest to, że porty poniżej 1024 są oznaczone jako porty dobrze znane. Porty powyżej, z których można korzystać bezpłatnie. Często zdarza się, że porty poniżej 1024 są ograniczone do dostępu administratora, z tego właśnie powodu.

Andrew Edgecombe
źródło
15

Zgodnie z RFC 793 port jest 16-bitowym bez znaku int.

Oznacza to, że zakres wynosi 0 - 65535.

Jednak w tym zakresie porty 0–1023 są zwykle zarezerwowane do określonych celów. Mówię ogólnie, ponieważ poza portem 0 zwykle nie ma egzekwowania rezerwacji 0-1023. Implementacje TCP / UDP zwykle nie wymuszają rezerwacji oprócz 0. Możesz, jeśli chcesz, uruchomić port TLS serwera WWW na porcie 80 lub 25 lub 65535 zamiast standardowego 443. Podobnie, nawet jeśli tak jest standard, że serwery SMTP nasłuchują na porcie 25, można go uruchomić na 80, 443 lub innych.

Większość implementacji rezerwuje 0 na określony cel - losowe przypisanie portów. Dlatego w większości implementacji powiedzenie „nasłuchuj na porcie 0” oznacza „Nie obchodzi mnie, z którego portu korzystam, daj mi tylko trochę nieprzypisanego portu do nasłuchiwania”.

Tak więc wszelkie ograniczenia korzystania z portu z zakresu 0-65535, w tym 0, efemeryczny zakres rezerwacji itp. , Są specyficzne dla implementacji (tj. OS / sterownika) , jednak wszystkie, w tym 0, są poprawnymi portami w RFC 793.

Eldakka
źródło
11

Prawidłowe liczby portów to: od 0 do 2 ^ 16-1 = od 0 do 65535
Jest tak, ponieważ numer portu ma długość 16 bitów.

Porty są jednak podzielone na:
Dobrze znane porty : od 0 do 1023 (używane dla usług systemowych, np. HTTP, FTP, SSH, DHCP ...)
Porty zarejestrowane / użytkownika : od 1024 do 49151 (można go używać na serwerze, ale należy ostrożnie niektóre znane aplikacje: jak serwer systemu zarządzania bazą danych Microsoft SQL Server (MSSQL) lub serwer sieciowy Apache Derby Derby już biorą z tego zakresu, tj. nie jest zalecane przypisywanie portu MSSQL do serwera, w przeciwnym razie, jeśli MSSQL jest uruchomiony, wtedy serwer jest najbardziej prawdopodobnie nie będzie działać z powodu konfliktu portów)
Porty dynamiczne / prywatne : od 49152 do 65535. (nieużywane dla serwerów, a raczej klientów, np. w usłudze NAT)

Podczas programowania możesz używać dowolnych liczb od 0 do 65535 dla swojego serwera, jednak powinieneś trzymać się wyżej wymienionych zakresów, w przeciwnym razie niektóre usługi systemowe lub niektóre aplikacje nie będą działać z powodu konfliktu portów.
Sprawdź listę większości portów tutaj: https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

Mosab Shaheen
źródło
7

Powinno to być 65535.

Chris
źródło