Zum Hauptinhalt springen

2. Einführung (Introduction)

RFC 793 enthält eine Diskussion der TCP-Entwurfsziele und bietet Beispiele für dessen Betrieb, einschließlich Beispielen für Verbindungsaufbau (Connection Establishment), Verbindungsbeendigung (Connection Termination) und Paketwiederholungsübertragung (Packet Retransmission) zur Behebung von Verlusten.

Dieses Dokument beschreibt die grundlegende Funktionalität, die in modernen TCP-Implementierungen erwartet wird, und ersetzt die Protokollspezifikation in RFC 793. Es repliziert oder versucht nicht, den Einführungs- und Philosophieinhalt in den Abschnitten 1 und 2 von RFC 793 zu aktualisieren. Andere Dokumente werden referenziert, um Erklärungen zur Funktionstheorie, Begründung und detaillierte Diskussion von Entwurfsentscheidungen zu liefern. Dieses Dokument konzentriert sich nur auf das normative Verhalten des Protokolls.

Die „TCP-Roadmap (TCP Roadmap)" [49] bietet einen umfassenderen Leitfaden zu den RFCs, die TCP definieren und verschiedene wichtige Algorithmen beschreiben. Die TCP-Roadmap enthält Abschnitte über dringend empfohlene Verbesserungen, die Leistung und andere Aspekte von TCP über den in diesem Dokument spezifizierten Grundbetrieb hinaus verbessern. Als ein Beispiel ist die Implementierung der Staukontrolle (Congestion Control) (z.B. [8]) eine TCP-Anforderung, aber es ist ein komplexes Thema für sich und wird in diesem Dokument nicht im Detail beschrieben, da es viele Optionen und Möglichkeiten gibt, die die grundlegende Interoperabilität nicht beeinflussen. Ähnlich enthalten die meisten heutigen TCP-Implementierungen die Hochleistungserweiterungen in [47], aber diese sind nicht strikt erforderlich oder werden in diesem Dokument nicht diskutiert. Multipath-Überlegungen für TCP sind auch separat in [59] spezifiziert.

Eine Liste der Änderungen gegenüber RFC 793 ist in Abschnitt 5 enthalten.

2.1. Anforderungssprache (Requirements Language)

Die Schlüsselwörter „MUST" (muss), „MUST NOT" (darf nicht), „REQUIRED" (erforderlich), „SHALL" (muss), „SHALL NOT" (darf nicht), „SHOULD" (sollte), „SHOULD NOT" (sollte nicht), „RECOMMENDED" (empfohlen), „NOT RECOMMENDED" (nicht empfohlen), „MAY" (kann) und „OPTIONAL" (optional) in diesem Dokument sind wie in BCP 14 [3] [12] beschrieben zu interpretieren, wenn und nur wenn sie in Großbuchstaben erscheinen, wie hier gezeigt.

Jede Verwendung von RFC 2119-Schlüsselwörtern im Dokument ist individuell gekennzeichnet und in Anhang B referenziert, der die Implementierungsanforderungen zusammenfasst.

Sätze, die „MUST" verwenden, sind als „MUST-X" gekennzeichnet, wobei X ein numerischer Bezeichner ist, der es ermöglicht, die Anforderung leicht zu finden, wenn sie aus Anhang B referenziert wird.

Ähnlich sind Sätze, die „SHOULD" verwenden, mit „SHLD-X", „MAY" mit „MAY-X" und „RECOMMENDED" mit „REC-X" gekennzeichnet.

Für die Zwecke dieser Kennzeichnung sind „SHOULD NOT" und „MUST NOT" genauso gekennzeichnet wie „SHOULD" und „MUST"-Instanzen.

2.2. Wichtige TCP-Konzepte (Key TCP Concepts)

TCP bietet Anwendungen einen zuverlässigen (Reliable), geordneten (In-Order) Byte-Stream-Dienst (Byte-Stream Service).

Der Anwendungs-Byte-Stream wird über das Netzwerk über TCP-Segmente (TCP Segments) übertragen, wobei jedes TCP-Segment als Internet Protocol (IP)-Datagramm gesendet wird.

Die TCP-Zuverlässigkeit besteht aus der Erkennung von Paketverlusten (über Sequenznummern (Sequence Numbers)) und Fehlern (über Prüfsummen pro Segment (Per-Segment Checksums)) sowie der Korrektur über Wiederholungsübertragung (Retransmission).

TCP unterstützt die Unicast-Zustellung (Unicast Delivery) von Daten. Es gibt Anycast-Anwendungen (Anycast), die TCP erfolgreich ohne Modifikationen verwenden können, obwohl ein gewisses Risiko der Instabilität aufgrund von Änderungen im Weiterleitungsverhalten niedrigerer Schichten besteht [46].

TCP ist verbindungsorientiert (Connection Oriented), obwohl es nicht inhärent eine Lebenserkennungsfähigkeit (Liveness Detection Capability) enthält.

Der Datenfluss wird bidirektional (Bidirectionally) über TCP-Verbindungen unterstützt, obwohl Anwendungen frei sind, Daten nur unidirektional zu senden, wenn sie dies wünschen.

TCP verwendet Portnummern (Port Numbers), um Anwendungsdienste (Application Services) zu identifizieren und um unterschiedliche Flüsse (Distinct Flows) zwischen Hosts zu multiplexen.

Eine detailliertere Beschreibung der TCP-Funktionen im Vergleich zu anderen Transportprotokollen finden Sie in Abschnitt 3.1 von [52]. Eine weitere Beschreibung der Motivationen für die Entwicklung von TCP und seiner Rolle im Internet-Protokollstapel finden Sie in Abschnitt 2 von [16] und früheren Versionen der TCP-Spezifikation.