Was ist die größte für IPv4 zulässige TCP / IP-Netzwerkportnummer?

406

Was ist die höchste Portnummer, die man verwenden kann?

Nutzername
quelle

Antworten:

565

Die Portnummer ist eine vorzeichenlose 16-Bit-Ganzzahl, also 65535.

Greg Hewgill
quelle
216
"Hey, Jim, wie viele Ports sollten wir unterstützen?" "Machen Sie es einfach 16 Bit für ein gutes Maß. Niemand wird jemals mehr als ein paar hundert auf einmal offen haben, oben."
JessieArr
3
@barlop Ich schlug vor, dass beim Erstellen von Ports ein einzelner Computer mit Hunderten von Verbindungen wahrscheinlich als Worst-Case-Szenario angesehen wurde. Heutzutage können Webserver, Netzwerkgeräte usw. definitiv auf Einschränkungen der Portanzahl stoßen. Microsoft hat einen interessanten Technet-Artikel darüber geschrieben, wie man ihn in Windows-Umgebungen diagnostiziert und vermeidet: blogs.technet.microsoft.com/askds/2008/10/29/…
JessieArr
3
@JessieArr In beiden Fällen handelt es sich nicht wirklich um ein 65536-Problem. Es handelt sich um ein Problem, bei dem A) Programme keine Verbindungen freigeben und sie in einem "WAIT" -Zustand belassen, den netstat in Kombination mit B) einigen früheren Windows-Versionen zeigt, die nur von 1024-5000 für gehen Und selbst dann, wer weiß, ob das jemals passiert ist, da sich kein Programm jemals die Mühe gemacht hat, irgendjemandem zu melden, dass es keinen dynamischen Port bekommen konnte, und Windows auch nicht. Es ist also ein theoretisches Problem, das nicht einmal wirklich durch das verursacht wird 65536 Nummer. Der Webbrowser ist möglicherweise der größte Benutzer von Verbindungen. Ich habe 297 Zeilen in meiner Netstat-Ausgabe. Weit entfernt von 65K
Barlop
3
@JessieArr Die meisten IP-Stacks verwenden ein Tupel aus Quell-IP-Adresse, Quellport, Ziel-IP-Adresse und Zielport als eindeutige Kennung für Verbindungen. Dies bedeutet, dass ein Server viel mehr aktive Verbindungen haben kann, als offene Ports verfügbar sind, und die Anzahl der Ports begrenzt nur die Anzahl der offenen Verbindungen zwischen einer einzelnen Quelle und einem einzelnen Ziel (wenn auch sehr groß). Ich glaube nicht, dass jemals jemand Server auf mehr als 65536 Ports gleichzeitig ausführen (oder auf Verbindungen warten) wird.
jduncanator
41
@JessieArr - das wird dir beibringen, einen Witz zu machen, das ist eine ernste Angelegenheit, die du kennst, hier ist keine Zeit für so etwas: /
Matt
145

Die größte Portnummer ist eine vorzeichenlose kurze 2 ^ 16-1: 65535

Ein registrierter Port ist ein Port, der von der Internet Corporation für zugewiesene Namen und Nummern (ICANN) einer bestimmten Verwendung zugewiesen wurde. Jeder registrierte Port liegt im Bereich von 1024 bis 49151.

Seit dem 21. März 2001 ist die Registrierungsstelle ICANN; vor dieser Zeit war es IANA.

Ports mit niedrigeren Nummern als die registrierten Ports werden als bekannte Ports bezeichnet. Port mit Nummern, die größer als die der registrierten Ports sind, werden als dynamische und / oder private Ports bezeichnet.

Wikipedia: Registrierte Häfen

Brian R. Bondy
quelle
71

Soweit ich weiß, sollten Sie nur bis zu 49151 verwenden, da ab 49152 bis zu 65535 für kurzlebige Ports reserviert sind

Smashery
quelle
11
Der kurzlebige Portbereich variiert je nach System. Ich verwende Ubuntu Linux mit dem generischen Kernel 3.19.0-43. $ cat /proc/sys/net/ipv4/ip_local_port_rangeführt zur Ausgabe 32768 61000. Ich vermute, dass die meisten, wenn nicht alle modernen Netzwerkbetriebssysteme einen bereits verwendeten Port überspringen, wenn ein Port im kurzlebigen Portbereich des Systems verwendet werden soll oder nicht.
Keith Reynolds
37

Nur eine Fortsetzung der Antwort von Smashery . Der kurzlebige Portbereich (zumindest unter Linux und ich vermute auch andere Unices) ist nicht festgelegt. Dies kann durch Schreiben an gesteuert werden /proc/sys/net/ipv4/ip_local_port_range

Die einzige Einschränkung (für IANA) besteht darin, dass Ports unter 1024 als bekannte Ports bezeichnet werden. Darüber hinausgehende Ports können kostenlos verwendet werden. Oft werden Sie feststellen, dass Ports unter 1024 auf den Superuser-Zugriff beschränkt sind, glaube ich aus genau diesem Grund.

Andrew Edgecombe
quelle
15

Gemäß RFC 793 ist der Port ein 16-Bit-Int ohne Vorzeichen.

Dies bedeutet, dass der Bereich zwischen 0 und 65535 liegt.

Innerhalb dieses Bereichs sind die Ports 0 bis 1023 jedoch im Allgemeinen für bestimmte Zwecke reserviert. Ich sage allgemein, weil außer Port 0 normalerweise keine Durchsetzung der 0-1023-Reservierung erfolgt. TCP / UDP- Implementierungen erzwingen normalerweise keine Reservierungen außer 0. Sie können, wenn Sie möchten, den TLS-Port eines Webservers auf Port 80, 25 oder 65535 anstelle des Standards 443 ausführen. Ebenso auch Als Standard, dass SMTP-Server Port 25 überwachen, können Sie ihn auf 80, 443 oder anderen ausführen.

Die meisten Implementierungen reservieren 0 für einen bestimmten Zweck - zufällige Portzuweisung. In den meisten Implementierungen bedeutet "Listen on Port 0" tatsächlich "Es ist mir egal, welchen Port ich verwende, geben Sie mir einfach einen zufälligen, nicht zugewiesenen Port zum Abhören".

Jede Einschränkung bei der Verwendung eines Ports im Bereich von 0 bis 65535, einschließlich 0, kurzlebiger Reservierungsbereich usw., ist implementierungsspezifisch (dh Betriebssystem / Treiber) , jedoch sind alle, einschließlich 0, gültige Ports im RFC 793.

Eldakka
quelle
11

Gültige Nummern für Ports sind: 0 bis 2 ^ 16-1 = 0 bis 65535 Dies
liegt daran, dass eine Portnummer 16 Bit lang ist.

Die Ports sind jedoch unterteilt in:
Bekannte Ports : 0 bis 1023 (wird für Systemdienste verwendet, z. B. HTTP, FTP, SSH, DHCP ...)
Registrierte / Benutzer-Ports : 1024 bis 49151 (Sie können sie für Ihren Server verwenden, aber sein Vorsicht einige bekannte Anwendungen: wie der MSSQL-Server (Microsoft SQL Server Database Management System) oder der Apache Derby Network Server, die bereits aus diesem Bereich stammen, dh es wird nicht empfohlen, den MSSQL-Port Ihrem Server zuzuweisen, da sonst MSSQL ausgeführt wird, dann Ihr Server am meisten wird wahrscheinlich aufgrund eines Portkonflikts nicht ausgeführt)
Dynamische / private Ports : 49152 bis 65535. (wird nicht für die Server verwendet, sondern für die Clients, z. B. im NAT-Dienst)

Bei der Programmierung können Sie für Ihren Server die Nummern 0 bis 65535 verwenden. Sie sollten sich jedoch an die oben genannten Bereiche halten, da sonst einige Systemdienste oder einige Anwendungen aufgrund von Portkonflikten nicht ausgeführt werden.
Überprüfen Sie die Liste der meisten Ports hier: https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

Mosab Shaheen
quelle
7

Es sollte 65535 sein.

Chris
quelle