Offensichtlich bezieht sich die häufigste Verwendung des Wortes Hafen auf die Schifffahrt. In der Informatik wird jedoch auch der Begriff Port verwendet. Tatsächlich hat es zwei Verwendungen. Die erste bezieht sich auf die Buchse, in die ein Kabel eingesteckt werden kann. Typische Beispiele wären ein USB- oder Ethernet-Anschluss. Technisch gesehen könnte man sich eine Ethernet-Buchse als Netzwerkanschluss vorstellen. Das ist nicht die akzeptierte Bedeutung des Wortes Port im Netzwerkbereich. Ein Netzwerkport ist eine logische Zahl, die angibt, für welchen Prozess oder Netzwerkdienst der Netzwerkverkehr bestimmt ist oder von dem er gesendet wird.
Warum sind Portnummern notwendig?
Wenn Ihr Computer mit einem Webserver im Internet kommuniziert, trägt er seine IP-Adresse in das Absenderfeld ein. Dadurch weiß der Server, an welche IP-Adresse er die Antwort senden muss. Wenn diese Antwort an Ihren Computer zurückgesendet wird, interpretiert Ihr Browser die Antwort und rendert die Webseite.
Dies funktioniert gut in einem idealisierten System mit einer einzigen Software, die Netzwerkverkehr erstellt und empfängt. Die reale Welt ist jedoch nicht so. In jedem Computer gibt es eine Reihe von Software, die Netzwerkverkehr verursacht. Um sicherzustellen, dass der Netzwerkverkehr korrekt an das richtige Programm übergeben wird, in einigen Fällen der richtige Prozess in einem Programm. Als letzte Adressierungsschicht wird die Portnummer verwendet.
Stellen Sie sich vor, Sie haben einen Webbrowser mit zwei geöffneten Registerkarten und gleichzeitig ein Online-Videospiel. Jeder Browser-Tab muss in der Lage sein, Netzwerkverkehr möglichst gleichzeitig zu senden und zu empfangen. Das Online-Spiel muss außerdem Netzwerkverkehr senden und empfangen. Sie möchten nicht, dass Ihr Spiel zufällige Webantworten herausfiltern muss, und Sie möchten auch nicht, dass Ihr Browser Ihren Spieldatenverkehr filtert. Beiden Tabs und dem Spiel wird jeweils mindestens ein Netzwerkport zugewiesen, damit der beabsichtigte Empfängerprozess leicht ermittelt werden kann.
Das gleiche funktioniert auch für Server. Angenommen, Sie haben einen Server, auf dem sowohl ein Webserver als auch ein E-Mail-Server ausgeführt werden. In diesem Fall kann das Betriebssystem anhand der Portnummer leicht unterscheiden, welche Netzwerkpakete für welchen Dienst bestimmt sind.
Was sind Portnummern?
Portnummern haben die Form einer 16-Bit-Ganzzahl ohne Vorzeichen. Das bedeutet, dass es sechzehn binäre Bits gibt, um die Zahlen zu bilden, keine negativen Zahlen, und alle Zahlen sind ganz. Dies ermöglicht 65536 mögliche Portnummern von 0 bis 65535. Es gibt kein physisches Portsystem.
Das gesamte Adressierungsschema ist wie bei IP-Adressen und MAC-Adressen völlig logisch. Sie können sich die IP- und MAC-Adressen als die Adresse auf einem Brief vorstellen, um ihn zu Ihrem Haus / Computer zu bringen. In dieser Analogie wäre die Portnummer wie der Name auf dem Umschlag, um sicherzustellen, dass sie die richtige Person/den richtigen Prozess in Ihrem Haus/Computer erreicht.
Innerhalb des Portnummernraums gibt es eine andere Struktur. Portnummer 0 ist reserviert. Im TCP-Verkehr ist 0 völlig ungenutzt. Bei UDP-Datenverkehr ist die Portnummer optional, wobei ein Port von 0 „kein Port“ bedeutet. Dies funktioniert für UDP, da es sich um ein zustandsloses Protokoll handelt, das nicht unbedingt eine Antwort erwartet. TCP- und UDP-Ports sind getrennt. Ein Dienst kann an einen oder mehrere Ports auf einem oder beiden Protokollen gebunden werden. Dienste, die beide verwenden, verbinden sich in der Regel mit denselben Portnummern in TCP und UDP.
Die Ports 1-1023 sind als „bekannte“ Ports bekannt und erfordern im Allgemeinen Administratorberechtigungen, um eine Bindung herzustellen. Einige bekannte Ports sind 80 für HTTP, 443 für HTTPS und 53 für DNS. Als nächstes haben Sie den Bereich 1024 – 49151. Diese werden als „registrierte“ Ports bezeichnet. Dies sind Ports, die regelmäßig von bestimmten Diensten verwendet werden, aber das ist nicht üblich genug oder war nicht früh genug, um eine Nummer unter 1023 zu erhalten. Ports zwischen 49152 und 65535 werden als flüchtige Ports bezeichnet.
Die Verwendung von Portnummern
IANA, die Internet Assigned Numbers Authority, verwaltet die bekannten und registrierten Portlisten. Bekannten Ports ist nur ein Dienst zugeordnet. Registrierte Ports können jedoch eine Reihe bekannter Dienste haben, die den Port standardmäßig verwenden.
Im Allgemeinen hält nichts ein Programm davon ab, sich an eine beliebige Portnummer zu binden. Wie oben erwähnt, erfordern Portnummern unter 1024 in der Regel Administrator- oder Root-Berechtigungen zum Binden. Dennoch können Sie jeden Dienst zwingen, sich beispielsweise an Port 80 zu binden, auch wenn es sich nicht um einen Webserver handelt. Portnummern in den bekannten und registrierten Bereichen werden in der Regel nur von Netzwerk-Listenern verwendet, wobei kurzlebige Ports im Allgemeinen zum Initiieren von Verbindungen verwendet werden.
Ein Listener ist ein Port, der geöffnet und offen gelassen wird. Es wartet auf Nachrichten, damit es sie verarbeiten und eine Antwort senden kann. Dies ist fast ausschließlich das Verhalten von serverartigen Diensten wie einem Webserver. Der Webserver würde auf den Ports 80 und 443 gehostet, während ein Browser, der eine Verbindung zu diesen Ports herstellt, lokal einen kurzlebigen Port verwenden würde.
Standard-Portnummern für Anwendungs-Listener bedeuten, dass es einfach ist zu wissen, wie man sich tatsächlich mit einem Dienst verbindet. Wenn Sie beispielsweise HTTPS vor eine URL setzen, geht Ihr Browser standardmäßig davon aus, dass er eine Verbindung zu Port 443 herstellen muss. In einigen Fällen werden Listener auf alternativen Ports eingerichtet. Dies kann daran liegen, dass ein anderer Dienst oder eine Version des Dienstes bereits den Standardport verwendet. Es kann auch ein Versuch der Sicherheit durch Unklarheit sein.
Fazit
Ein Netzwerkport ist eine logische Adresse. Die Software kann sich an einen Port binden, sodass das Betriebssystem weiß, dass jeder an diesen Port gesendete Datenverkehr für diesen Prozess bestimmt ist. Portnummern reichen von 0 bis 65535. Viele Dienste sind einer Standardportnummer zugeordnet. Die Server verwenden diese Ports, während Geräte, die sich mit ihnen verbinden, zufällige Ports mit hoher Nummer verwenden. Dies ermöglicht eine einfache Standardverbindung zu Diensten und stellt sicher, dass die Verbindung zu einem solchen Dienst Sie nicht daran hindert, selbst einen anderen Dienst zu hosten.