In Computernetzwerken ist ein Port ein Kommunikationsendpunkt . Auf Softwareebene innerhalb eines Betriebssystems ist ein Port ein logisches Konstrukt, das einen bestimmten Prozess oder einen Netzwerkdienst identifiziert . Ein Port wird eindeutig durch eine Nummer, die Portnummer , identifiziert, die sich aus dem Transportprotokoll und der Netzwerk -IP-Adresse zusammensetzt . Portnummern sind 16-Bit- Ganzzahlen ohne Vorzeichen .
Die gebräuchlichsten Transportprotokolle, die Portnummern verwenden, sind das Transmission Control Protocol (TCP) und das User Datagram Protocol (UDP). Der Port vervollständigt die Ziel- und Absenderadresse einer Nachricht innerhalb eines Hosts , um auf einen Betriebssystemprozess zu verweisen.
Bestimmte Portnummern sind reserviert, um spezifische Dienste zu identifizieren und so die Weiterleitung eingehender Datenpakete an laufende Anwendungen zu ermöglichen. Portnummern unter 1024 kennzeichnen die historisch am häufigsten genutzten Dienste und werden daher als bekannte Portnummern bezeichnet . Höher nummerierte Ports stehen Anwendungen zur allgemeinen Nutzung zur Verfügung und werden als ephemere Ports bezeichnet .
Ports ermöglichen die Multiplexierung mehrerer Dienste oder Kommunikationssitzungen an einer einzigen Netzwerkadresse. Im Client-Server-Modell der Anwendungsarchitektur können mehrere simultane Kommunikationssitzungen für denselben Dienst initiiert werden.
Portnummer
Bei TCP und UDP ist die Portnummer eine 16-Bit-Ganzzahl ohne Vorzeichen im Bereich von 0 bis 65535. Bei TCP ist Port 0 reserviert und kann nicht verwendet werden, während bei UDP der Quellport optional ist und der Wert 0 bedeutet, dass kein Port angegeben wird . Ein Prozess ordnet seine Eingabe- oder Ausgabekanäle über einen Internet-Socket zu . Ein Socket ist ein Dateideskriptor , der mit einem Transportprotokoll , einer Netzwerkadresse (z. B. einer IP-Adresse ) und einer Portnummer verknüpft ist. Dieser Vorgang wird als Bindung bezeichnet . Ein Socket dient einem Prozess zum Senden und Empfangen von Daten über das Netzwerk. Die Netzwerksoftware des Betriebssystems ist dafür zuständig, ausgehende Daten von allen Anwendungsports ins Netzwerk zu übertragen und eingehende Netzwerkpakete an die Prozesse weiterzuleiten, indem sie die IP-Adresse und Portnummer des Pakets einem Socket zuordnet. Bei TCP kann nur ein Prozess an eine bestimmte IP-Adresse und Portkombination gebunden sein. Häufige Anwendungsfehler, sogenannte Portkonflikte , treten auf, wenn mehrere Programme versuchen, dieselbe Portnummer auf derselben IP-Adresse mit demselben Protokoll zu verwenden.
Anwendungen, die gängige Dienste implementieren, verwenden häufig speziell reservierte , bekannte Portnummern, um Serviceanfragen von Clients zu empfangen. Dieser Vorgang wird als Listening bezeichnet und beinhaltet den Empfang einer Anfrage auf dem bekannten Port, wodurch gegebenenfalls ein 1:1-Server-Client-Dialog über diesen Listening-Port aufgebaut wird. Andere Clients können sich gleichzeitig mit demselben Listening-Port verbinden; dies funktioniert, da eine TCP-Verbindung durch ein Tupel aus lokaler Adresse, lokalem Port, Remote-Adresse und Remote-Port identifiziert wird. [ 1 ] Die bekannten Ports sind durch Konventionen definiert, die von der Internet Assigned Numbers Authority (IANA) überwacht werden. In vielen Betriebssystemen benötigen Anwendungen spezielle Berechtigungen, um sich an diese Ports zu binden, da diese oft als kritisch für den Betrieb von IP-Netzwerken gelten. Umgekehrt verwendet der Client einer Verbindung typischerweise eine hohe Portnummer, die für die kurzfristige Nutzung reserviert ist und daher als ephemerer Port bezeichnet wird .
Gängige Portnummern
Die IANA ist für die weltweite Koordination des DNS-Root-Servers, der IP-Adressierung und anderer Protokollressourcen zuständig. Dies umfasst die Registrierung häufig verwendeter TCP- und UDP-Portnummern für bekannte Internetdienste.
Die Hafennummern sind in drei Bereiche unterteilt: die bekannten Häfen , die registrierten Häfen und die dynamischen oder privaten Häfen .
Die bekannten Ports (auch Systemports genannt ) sind diejenigen, die von 0 bis 1023 nummeriert sind. Die Anforderungen für neue Zuweisungen in diesem Bereich sind strenger als für andere Registrierungen. [ 2 ]
| Nummer | Abtretung |
|---|---|
| 20 | Dateitransferprotokoll (FTP) Datenübertragung |
| 21 | Befehlssteuerung des Dateiübertragungsprotokolls (FTP) |
| 22 | Sichere Shell (SSH)-Anmeldung |
| 23 | Telnet -Fernzugriffsdienst, unverschlüsselte Textnachrichten |
| 25 | E-Mail-Zustellung über das Simple Mail Transfer Protocol (SMTP) |
| 53 | Domain Name System (DNS)-Dienst |
| 67, 68 | Dynamisches Host-Konfigurationsprotokoll (DHCP) |
| 80, 8080 | Hypertext Transfer Protocol (HTTP), das im World Wide Web verwendet wird |
| 110 | Post Office Protocol (POP3) |
| 119 | Netzwerk-Nachrichtenübertragungsprotokoll (NNTP) |
| 123 | Netzwerkzeitprotokoll (NTP) |
| 143 | Internet Message Access Protocol (IMAP) Verwaltung digitaler Post |
| 161 | Simple Network Management Protocol (SNMP) |
| 194 | Internet Relay Chat (IRC) |
| 443 | HTTP Secure (HTTPS) HTTP über TLS/SSL |
| 546, 547 | DHCPv6 ist die IPv6-Version von DHCP. |
Die registrierten Ports sind diejenigen von 1024 bis 49151. Die IANA führt die offizielle Liste der bekannten und registrierten Portbereiche. [ 3 ]
Die dynamischen oder privaten Ports sind diejenigen von 49152 bis 65535. Ein häufiger Anwendungsfall für diesen Bereich sind temporäre Ports .
Netzwerkverhalten
Transportprotokolle wie das Transmission Control Protocol (TCP) und das User Datagram Protocol (UDP) übertragen Daten mithilfe von Protokolldateneinheiten (PDUs). Bei TCP ist die PDU ein Segment , bei UDP ein Datagramm . Beide Protokolle verwenden ein Header- Feld zur Angabe der Quell- und Zielportnummern. Die Portnummern sind im Header des Transportprotokollpakets kodiert und können nicht nur von den sendenden und empfangenden Hosts, sondern auch von anderen Komponenten der Netzwerkinfrastruktur interpretiert werden. Insbesondere Firewalls werden häufig so konfiguriert, dass sie Pakete anhand ihrer Quell- oder Zielportnummern unterscheiden. Portweiterleitung ist ein Beispiel für eine Anwendung dieses Verfahrens.
Port-Scanning
Das sequenzielle Ansprechen mehrerer Ports eines einzelnen Hosts wird gemeinhin als Port-Scanning bezeichnet . Dies geschieht üblicherweise entweder im Zusammenhang mit Angriffen durch Cyberkriminelle oder durch Netzwerkadministratoren, die nach möglichen Sicherheitslücken suchen, um solche Angriffe zu verhindern. Portverbindungsversuche werden häufig von Hosts überwacht und protokolliert. Beim Port Knocking werden mehrere Portverbindungsversuche (Knocks) von einem Client-Computer aus durchgeführt, um einen Port auf dem Server zu öffnen, über den dann eine Verbindung hergestellt werden kann.
Beispiele
Ein Beispiel für die Verwendung von Ports ist die E-Mail- Zustellung . Ein Server zum Senden und Empfangen von E-Mails benötigt in der Regel zwei Dienste. Der erste Dienst dient dem Transport von E-Mails zu und von anderen Servern. Dies geschieht mit dem Simple Mail Transfer Protocol (SMTP). Eine Standard-SMTP-Anwendung lauscht auf TCP-Port 25 auf eingehende Anfragen. Der zweite Dienst ist üblicherweise entweder das Post Office Protocol (POP) oder das Internet Message Access Protocol (IMAP). E-Mail-Clients auf den PCs der Benutzer nutzen diese, um E-Mails vom Server abzurufen. Der POP-Dienst lauscht auf TCP-Port 110. Beide Dienste können auf demselben Host-Computer laufen. In diesem Fall kennzeichnet die Portnummer den Dienst, der von einem entfernten Computer angefordert wurde – sei es der Computer des Benutzers oder ein anderer Mailserver.
Während die Portnummer eines Servers fest definiert ist (IANA bezeichnet diese als bekannte Ports), wird die Portnummer des Clients häufig aus dem dynamischen Portbereich gewählt (siehe unten). In manchen Anwendungen verwenden Client und Server jeweils spezifische, von der IANA zugewiesene Portnummern. Ein gutes Beispiel hierfür ist DHCP , bei dem der Client immer UDP-Port 68 und der Server immer UDP-Port 67 verwendet.
Verwendung in URLs
Portnummern sind Bestandteil von Web- URLs ( Uniform Resource Locators ), werden aber in den meisten Fällen weggelassen. Standardmäßig verwendet HTTP Port 80 und HTTPS Port 443. Eine URL wie http://www.example.com:8080/path/beispielsweise „ http://example.com/ ...
Geschichte
Das Konzept der Portnummern wurde von den frühen Entwicklern des ARPANET in informeller Zusammenarbeit von Softwareautoren und Systemadministratoren etabliert. Der Begriff „Portnummer“ war damals noch nicht gebräuchlich. In den frühen Entwicklungsphasen des Netzwerks wurde stattdessen der Begriff „ Socketnummer“ verwendet. Eine Socketnummer für einen entfernten Host war eine 40-Bit-Zahl. [ 4 ] Die ersten 32 Bit ähnelten der heutigen IPv4- Adresse, aber damals bildeten die acht höchstwertigen Bit die Hostnummer. Der niederwertigste Teil der Socketnummer (Bits 33 bis 40) wurde als „ Another Eightbit Number“ (AEN) bezeichnet. [ 5 ] Heute bezeichnet der Begriff „Netzwerk-Socket“ ein verwandtes, aber eigenständiges Konzept, nämlich die interne Adresse eines Endpunkts, die nur innerhalb des Knotens verwendet wird.
Am 26. März 1972 forderten Vint Cerf und Jon Postel in RFC 322 die Dokumentation der damaligen Nutzung und die Erstellung eines Socketnummernkatalogs. Netzwerkadministratoren wurden gebeten, eine Notiz einzureichen oder anzurufen, in der sie „die Funktion und die Socketnummern der Netzwerkdienstprogramme auf jedem Host“ beschrieben. [ 6 ] Dieser Katalog wurde anschließend im Dezember 1972 als RFC 433 veröffentlicht und enthielt eine Liste der Hosts mit ihren Portnummern und der jeweils im Netzwerk verwendeten Funktion. Diese erste Registrierungsfunktion diente primär der Dokumentation der Nutzung und wies darauf hin, dass die Portnummernnutzung zwischen einigen Hosts für „nützliche öffentliche Dienste“ in Konflikt stand. [ 5 ] Das Dokument versprach eine Lösung der Konflikte auf Grundlage eines Standards, den Postel im Mai 1972 in RFC 349 veröffentlicht hatte. Darin schlug er erstmals die offizielle Zuweisung von Portnummern an Netzwerkdienste vor und empfahl eine dedizierte administrative Funktion, die er als „ Zar“ bezeichnete , zur Pflege der Registrierung. [ 7 ] Die 256 Werte der AEN wurden in folgende Bereiche unterteilt:
| Portnummernbereich | Abtretung |
|---|---|
| 0 bis 63 | Netzwerkweite Standardfunktionen |
| 64 bis 127 | Wirtsspezifische Funktionen |
| 128 bis 239 | Für zukünftige Verwendung reserviert |
| 240 bis 255 | Jede experimentelle Funktion |
Der Telnet- Dienst erhielt die erste offizielle Zuweisung des Wertes 1. Im Detail lautete die erste Zuweisungsgruppe: [ 7 ]
| Portnummer | Abtretung |
|---|---|
| 1 | Telnet |
| 3 | Dateiübertragung |
| 5 | Remote-Job-Einstieg |
| 7 | Echo |
| 9 | Verwerfen |
Im frühen ARPANET wurde der AEN auch als Socket-Name bezeichnet [ 8 ] und zusammen mit dem Initial Connection Protocol (ICP), einer Komponente des Network Control Protocol (NCP), verwendet [ 9 ] . NCP war der Vorläufer der modernen Internetprotokolle. Auch heute noch ist der Begriff „ Dienstname“ eng mit Portnummern verbunden; er bezeichnet Textzeichenketten, die in einigen Netzwerkfunktionen eine numerische Portnummer repräsentieren.
Siehe auch
Referenzen
- ^ Postel, John. Transport Control Protocol . IETF . doi : 10.17487/RFC0793 . RFC 793. Abgerufen am 1. Januar 2023 .
- ^ Michelle Cotton; Lars Eggert; et al. (August 2011). Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Service Name and Transport Protocol Port Number Registry . IETF . doi : 10.17487/RFC6335 . BCP 165. RFC 6335 .
- ^ „Portnummern“ . Internet Assigned Numbers Authority (IANA).
- ^ Crocker, S. (16. März 1970). Protokollnotizen . IETF . doi : 10.17487/RFC0036 . RFC 36 .
- ^ a b Postel, J.; Neigus, N. (22. Dezember 1972). Socket number list . IETF . doi : 10.17487/RFC0433 . RFC 433 .
- ^ Cerf, V.; Postel, J. (26. März 1972). Bekannte Sockelnummern . IETF . doi : 10.17487/RFC0322 . RFC 322 .
- ^ a b Postel, J. (30. Mai 1972). Proposed Standard Socket Numbers . IETF . doi : 10.17487/RFC0349 . RFC 349 .
- ^ Shoshani, A.; Harslem, E. (14. Juli 1971). Initial Connection Protocol – Reviewed . IETF . doi : 10.17487/RFC0197 . RFC 197 .
- ^ Postel, Jon; Feinler, E. (Januar 1978). ARPANET Protocol Handbook . Menlo Park, CA: Network Information Center. NIC 7104.