Wofür wird Port 0 verwendet?

Port 0 ist keine echte Portnummer, aber es gibt einen Grund dafür

Port 0 hat eine besondere Bedeutung bei der Netzwerkprogrammierung, insbesondere unter Unix, wenn es um die Socket-Programmierung geht, bei der der Port zum Anfordern von vom System zugewiesenen dynamischen Ports verwendet wird. Port 0 ist ein Wildcard-Port, der das System anweist, eine geeignete Portnummer zu finden.

Im Gegensatz zu den meisten Portnummern ist Port 0 ein reservierter Port im TCP / IP-Netzwerk. Dies bedeutet, dass er nicht in TCP- oder UDP-Nachrichten verwendet werden sollte. Netzwerkports in TCP und UDP reichen von der Nummer Null bis 65535. Portnummern im Bereich zwischen Null und 1023 werden als Systemports oder bekannte Ports definiert. Die Internet Assigned Numbers Authority (IANA) führt eine offizielle Liste der beabsichtigten Verwendung dieser Portnummern im Internet, und Systemport 0 darf nicht verwendet werden.

So funktioniert der TCP / UDP-Port 0 bei der Netzwerkprogrammierung

Für die Konfiguration einer neuen Netzwerk-Socket-Verbindung muss eine Portnummer sowohl auf der Quell- als auch auf der Zielseite zugewiesen werden. Vom Absender (Quelle) gesendete TCP- oder UDP-Nachrichten enthalten beide Portnummern, sodass der Nachrichtenempfänger (Ziel) Antwortnachrichten an den richtigen Protokollendpunkt senden kann.

IANA hat zugewiesene Systemports für grundlegende Internetanwendungen wie Webserver (Port 80) vorab zugewiesen, aber viele TCP- und UDP-Netzwerkanwendungen haben keinen eigenen Systemport und müssen bei jeder Ausführung einen vom Betriebssystem ihres Geräts beziehen.

Um seine Quellportnummer zuzuweisen, rufen Anwendungen TCP / IP-Netzwerkfunktionen wie bind () auf, um eine anzufordern. Die Anwendung kann eine feste (fest codierte) Nummer für bind () bereitstellen, wenn sie eine bestimmte Nummer anfordern möchte. Eine solche Anforderung kann jedoch fehlschlagen, da eine andere Anwendung, die auf dem System ausgeführt wird, diese derzeit verwendet.

Alternativ kann Port 0 für bind () als Verbindungsparameter angegeben werden. Dadurch sucht das Betriebssystem automatisch nach einem geeigneten verfügbaren Port im dynamischen TCP / IP-Portnummernbereich und gibt diesen zurück.

Der Anwendung wird nicht Port 0 gewährt, sondern ein anderer dynamischer Port. Der Vorteil dieser Programmierkonvention ist die Effizienz. Anstatt dass jede Anwendung Code implementiert und ausführt, um mehrere Ports zu testen, bis sie einen gültigen erhalten, sind Apps auf das Betriebssystem angewiesen.

Unix, Windows und andere Betriebssysteme unterscheiden sich in der Behandlung von Port 0, es gilt jedoch dieselbe allgemeine Konvention.

Port 0 und Netzwerksicherheit

Netzwerkverkehr, der über das Internet an Hosts gesendet wird, die Port 0 abhören, wird möglicherweise von Netzwerkangreifern oder versehentlich von falsch programmierten Anwendungen generiert. Die Antwortnachrichten, die Hosts als Antwort auf den Datenverkehr von Port 0 generieren, helfen Angreifern dabei, das Verhalten und die potenziellen Netzwerkanfälligkeiten dieser Geräte zu ermitteln.

Viele Internet Service Provider (ISPs) blockieren den Datenverkehr auf Port 0 - sowohl eingehende als auch ausgehende Nachrichten -, um sich vor diesen Exploits zu schützen.