Port (Protokoll)
Ein Port ist der Teil einer Netzwerk-Adresse, der die Zuordnung von TCP- und UDP-Verbindungen und -Datenpaketen zu Server- und Client-Programmen durch Betriebssysteme bewirkt. Zu jeder Verbindung dieser beiden Protokolle gehören stets zwei Ports, je einer auf Seite des Clients und des Servers.
Gültige Portnummern sind 0 bis 65 535 (= 216 − 1).
Zweck
Ports dienen zwei Zwecken:
- Primär sind Ports ein Merkmal zur Unterscheidung mehrerer Verbindungen zwischen demselben Paar von Endpunkten.[1]
- Ports können auch Netzwerkprotokolle und entsprechende Netzwerkdienste identifizieren (z. B. HTTPS läuft standardmäßig über den TCP-Port 443, RDP hingegen über UDP-/TCP-Port 3389).
Beispiele
- Ein Webbrowser kann während eines laufenden HTTP-Downloads einen weiteren Download von ein und demselben Webserver starten, weil der Browser dann (Client-seitig) einen weiteren Port öffnet und so eine zusätzliche Verbindung zum selben Port 80 des Servers aufbaut. Der Server antwortet den unterschiedlichen Ports des Browsers mit unterschiedlichen jeweils zusammengehörigen Inhalten. Für eine Unterscheidung der Verbindungen genügen also verschiedene Portnummern an nur einem der beiden Endpunkte.
- Der Port 25 ist für das Simple Mail Transfer Protocol (SMTP) reserviert. Wenn eine Verbindung zum Port 25 eines Servers aufgebaut wird, wird diese Verbindung vom SMTP-Dienst des Servers angenommen, sofern dieser Dienst verfügbar ist.
Funktionsweise
Startende Server fordern beim Betriebssystem bestimmte Ports an, um Verbindungen annehmen zu können. Dies sind in aller Regel „well-known Ports“, da hier die Portnummer nicht veröffentlicht werden oder bekannt sein muss. Die Nummern sind vielmehr den betreffenden Programmen fest zugeordnet.
Clients fordern beim Betriebssystem normalerweise einen zufälligen Port an (zumeist im sehr hohen Bereich über 30.000), um Verbindungen aufbauen zu können. Allerdings kann ein Client sich auch an einen bestimmten Port binden (Aufruf von bind()
); dies ist zum Beispiel nötig für bestimmte verbindungslose Protokolle, beschränkt allerdings die Nutzung dieses Clients auf einen Prozess pro Computer.
Der Verbindungsaufbau erfolgt durch den Client, der dazu den Port des Servers kennen muss. Durch den Verbindungsaufbau erfährt der Server den Port des Clients, sodass er diesem antworten kann. Im Falle der Benutzung eines „well-known Ports“ wird gleichzeitig die Portnummer serverseitig geändert, um die bekannte, standardisierte Portnummer auch weiterhin für neue Verbindungen bereitstellen zu können.
Geschichte
Portnummern wurden ursprünglich AEN genannt, was für Another Eightbit Number stand.[2]
1981 wurde mit dem Transmission Control Protocol ein viel größerer Bereich von 16 Bit definiert.[3]
Die Standardisierung geht maßgeblich auf Initiativen von Jon Postel Anfang der 1970er-Jahre zurück.[4][5]
Standardisierung
Seit 2011 beschreibt mit RFC 6335 ein Request for Comments das Verfahren, nach dem die Internet Assigned Numbers Authority (IANA) Ports Protokollen zuordnet. Es werden drei Bereiche unterschieden: System Ports, User Ports und Dynamic Ports.
System Ports
Ports 0 bis 1023 (0hex bis 3FFhex)
Diese Ports werden auch „well-known Ports“ genannt und sind für Netzwerkdienste reserviert, wenn sie nicht bereits als „reservierte Ports“ der IANA selbst (etwa für zukünftige Erweiterungen) zugewiesen worden sind, was etwa insbesondere auf die Intervall-Grenzen zutrifft (zum Beispiel: 0, 1023, 1024), die also nicht für die Verwendung für Server zur Verfügung stehen. Neue Zuordnungen erfolgen nur unter Beteiligung der Internet Engineering Task Force (IETF).
User Ports
Ports 1024 bis 49151 (400hex bis BFFFhex)
Diese Ports sind für registrierte Dienste vorgesehen, können aber auch für Clientprogramme verwendet werden. Die dynamische Zuordnung für Clientprogramme wird von der Mehrzahl der aktuellen Betriebssysteme nicht mehr durchgeführt, da hierfür die „Dynamic Ports“ vorgesehen sind. In diesem Bereich können auf Antrag neue Zuordnungen ohne Beteiligung der IETF erfolgen.
Dynamic Ports
Ports 49152 bis 65535 (C000hex bis FFFFhex)
Diese Ports werden vom Betriebssystem dynamisch an Clientprogramme vergeben.
Ergänzung: Linuxsysteme halten sich sehr oft nicht an diesen Standard und vergeben die Clientports im Bereich zwischen 32768 und 61000. Ursprünglich waren von der IANA die Ports ab 1024 für Clientprogramme vorgesehen. Bei der Umstellung des Portbereiches gab es jedoch einige Diskussionen, bis sich die heutige Einteilung durchsetzte. Die Umstellung wurde in Linux allerdings während der Diskussionszeit vorgenommen und nicht auf den endgültigen Standard umgesetzt. Als Begründung hierfür wird auch immer wieder angeführt, dass der Bereich der Dynamic Ports zu klein ist. Einige NAT-Router verwenden sogar noch niedrigere Ports.
Bedeutung
Abweichungen von den Zuordnungen der IANA erschweren die Kontaktaufnahme, ohne sie verhindern zu können.
Einen Überblick von Zuordnungen gibt die Liste der standardisierten Ports.
Dienstnamen
Ports sind neben Protokollen auch Namen für die entsprechenden Netzwerkdienste zugeordnet. Ein solcher Service Name kann beispielsweise für SRV Resource Records verwendet werden.
Auf einem Unix-Rechner ist diese Liste in der Datei /etc/services
definiert.
Unter Betriebssystemen der Windows-NT-Linie findet sich diese unter %WINDIR%\system32\drivers\etc\services
, bei der Windows9x-Linie direkt im Windows-Ordner (%WINDIR%\services
).
Portfilter
Eine Portweiterleitung bewirkt, dass ein angesprochener Port über einen zweiten Port an ein anderes System weitergeleitet wird.
Eine Portsperre ist das Sperren oder Drosseln eines bestimmten Portes bzw. des darauf zugreifenden Netzwerkdienstes. Das Sperren von Ports wird von einigen Internet Service Providern eingesetzt, um unerwünschte Dienste zu blockieren. Bei Providern können Dienste beispielsweise unerwünscht sein, weil sie sehr viel Datenverkehr verursachen, wie beispielsweise beim Filesharing.
Ports können auch mit einer Firewall gesperrt werden. Bei einer lokalen Firewall wird normalerweise andersherum vorgegangen: Nur die tatsächlich benötigten Ports werden freigegeben und alle anderen Ports bleiben gesperrt. Somit werden die Angriffspunkte auf das geschützte Netz bzw. den PC reduziert.
Portscanner
Portscanner dienen dem Auffinden von Ports und können ein Anzeichen eines Angriffs sein. Unterstützt die Firewall bzw. der Paketfilter das Portknocking, so kann ein Portscan erschwert werden, indem Ports erst dann geöffnet werden, wenn ihnen eine vorher vereinbarte Folge von Paketen gesendet wurde.
Weblinks
- Service Name and Transport Protocol Port Number Registry – Liste der Zuordnungen bei der Internet Assigned Numbers Authority
Einzelnachweise
- Internet Engineering Task Force (Hrsg.): Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Service Name and Transport Protocol Port Number Registry (= Best Current Practice. Band 165). ISSN 2070-1721, S. 6 (BCP 165 [abgerufen am 22. Februar 2012]).
- RFC 433 – Socket Number List, Dezember 1972
- RFC 793 – Transmission Control Protocol, September 1981
- RFC 204 – Sockets in use, August 1971
- RFC 349 – Socket Number List, Mai 1972