Zum Hauptinhalt springen

3. Background (Hintergrund)

3. Background (Hintergrund)

Das Transmission Control Protocol (TCP, Übertragungssteuerungsprotokoll) [RFC0793] und das User Datagram Protocol (UDP, Benutzerdatagrammprotokoll) [RFC0768] haben über die Jahrzehnte als die beiden am weitesten verbreiteten Transportprotokolle im Internet einen bemerkenswerten Erfolg genossen. Sie haben sich auf das Konzept der "Ports" als logische Entitäten für die Internetkommunikation verlassen. Ports dienen zwei Zwecken: Erstens bieten sie eine Demultiplexing-Kennung zur Unterscheidung von Transportsitzungen zwischen demselben Endpunktpaar, und zweitens können sie auch das Anwendungsprotokoll und den zugehörigen Dienst identifizieren, mit dem sich Prozesse verbinden. Neuere Transportprotokolle wie das Stream Control Transmission Protocol (SCTP, Stromsteuerungsübertragungsprotokoll) [RFC4960] und das Datagram Congestion Control Protocol (DCCP, Datagramm-Überlastungskontrollprotokoll) [RFC4342] haben ebenfalls das Konzept der Ports für ihre Kommunikationssitzungen übernommen und verwenden 16-Bit-Portnummern auf dieselbe Weise wie TCP und UDP (und UDP-Lite [RFC3828], eine Variante von UDP).

Portnummern sind das ursprüngliche und am weitesten verbreitete Mittel zur Anwendungs- und Dienstidentifikation im Internet. Ports sind 16-Bit-Zahlen, und die Kombination von Quell- und Zielportnummern zusammen mit den IP-Adressen der kommunizierenden Endsysteme identifiziert eindeutig eine Sitzung eines bestimmten Transportprotokolls. Portnummern sind auch unter ihren zugehörigen Dienstnamen bekannt, wie "telnet" für Portnummer 23 und "http" (sowie "www" und "www-http") für Portnummer 80.

Alle beteiligten Parteien —— Hosts, die Dienste ausführen, Hosts, die auf Dienste auf anderen Hosts zugreifen, und Zwischengeräte (wie Firewalls und NATs), die Dienste einschränken —— müssen sich darauf einigen, welcher Dienst einem bestimmten Zielport entspricht. Obwohl dies letztendlich eine lokale Entscheidung ist, die nur zwischen den Endpunkten einer Verbindung Bedeutung hat, ist es für viele Dienste üblich, einen Standardport zu haben, auf dem diese Server normalerweise lauschen, wenn möglich, und diese Ports werden von der Internet Assigned Numbers Authority (IANA) durch das Dienstnamen- und Portnummernregister [PORTREG] aufgezeichnet.

Im Laufe der Zeit kann die Annahme, dass eine bestimmte Portnummer notwendigerweise einen bestimmten Dienst impliziert, weniger wahr werden. Zum Beispiel können mehrere Instanzen desselben Dienstes auf demselben Host im Allgemeinen nicht auf demselben Port lauschen, und mehrere Hosts hinter demselben NAT-Gateway können nicht alle eine Zuordnung für denselben Port auf der externen Seite des NAT-Gateways haben, unabhängig davon, ob statische Portzuordnungen verwendet werden, die vom Benutzer manuell konfiguriert wurden, oder dynamische Portzuordnungen, die automatisch mit einem Portzuordnungsprotokoll wie dem NAT Port Mapping Protocol [NAT-PMP] oder dem Internet Gateway Device [IGD] konfiguriert wurden.

Anwendungen können Portnummern direkt verwenden, Portnummern basierend auf Dienstnamen über Systemaufrufe wie getservbyname() auf UNIX nachschlagen, Portnummern durch Durchführung von Abfragen für DNS-SRV-Einträge [RFC2782] [DNS-SD] nachschlagen oder Portnummern auf verschiedene andere Arten wie den TCP Port Service Multiplexer (TCPMUX) [RFC1078] bestimmen.

Designer von Anwendungen und Anwendungsebenen-Protokollen können bei IANA einen zugewiesenen Dienstnamen und eine Portnummer für eine bestimmte Anwendung beantragen und können —— nach der Zuweisung —— davon ausgehen, dass keine andere Anwendung diesen Dienstnamen oder diese Portnummer für ihre Kommunikationssitzungen verwenden wird. Anwendungsdesigner haben auch die Möglichkeit, nur einen zugewiesenen Dienstnamen ohne entsprechende feste Portnummer anzufordern, wenn ihre Anwendung keine benötigt, wie z. B. Anwendungen, die DNS-SRV-Einträge verwenden, um Portnummern zur Laufzeit dynamisch nachzuschlagen. Da der Portnummernraum endlich ist (und daher Konservierung ein wichtiges Ziel ist), wird die Alternative der Verwendung von Dienstnamen anstelle von Portnummern nach Möglichkeit EMPFOHLEN.