Zum Hauptinhalt springen

3. Funktionsspezifikation (Functional Specification)

Dieses Kapitel beschreibt die Funktionsspezifikation von TCP, einschließlich Header-Format, Optionsdefinitionen, Sequenznummerverwaltung, Verbindungsverwaltung und Datenübertragungsmechanismen.

3.1. Header-Format (Header Format)

TCP-Segmente werden als Internet-Datagramme gesendet. Der Internet Protocol (IP)-Header trägt mehrere Informationsfelder, einschließlich der Quell- und Ziel-Host-Adressen. Ein TCP-Header folgt den IP-Headern und liefert TCP-spezifische Informationen.

TCP-Header-Struktur

 0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |C|E|U|A|P|R|S|F| |
| Offset| Rsrvd |W|C|R|C|S|S|Y|I| Window |
| | |R|E|G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| [Options] |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
/ Data /
/ /
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Feldbeschreibungen

Source Port (Quellport): 16 Bits

  • Die Quellportnummer

Destination Port (Zielport): 16 Bits

  • Die Zielportnummer

Sequence Number (Sequenznummer): 32 Bits

  • Die Sequenznummer des ersten Datenoktetts in diesem Segment (außer wenn das SYN-Flag gesetzt ist)
  • Wenn SYN gesetzt ist, ist die Sequenznummer die anfängliche Sequenznummer (Initial Sequence Number, ISN) und das erste Datenoktett ist ISN+1

Acknowledgment Number (Bestätigungsnummer): 32 Bits

  • Wenn das ACK-Kontrollbit gesetzt ist, enthält dieses Feld den Wert der nächsten Sequenznummer, die der Sender des Segments zu empfangen erwartet
  • Sobald eine Verbindung hergestellt ist, wird dies immer gesendet

Data Offset (Datenversatz): 4 Bits

  • Die Anzahl der 32-Bit-Wörter im TCP-Header
  • Zeigt an, wo die Daten beginnen
  • Der TCP-Header (auch einer einschließlich Optionen) hat eine Länge, die ein ganzzahliges Vielfaches von 32 Bits ist

Reserved (Reserviert): 4 Bits

  • Ein Satz von Kontrollbits, die für die zukünftige Verwendung reserviert sind
  • Muss (muss) in generierten Segmenten null sein
  • Muss (muss) in empfangenen Segmenten ignoriert werden, wenn die entsprechenden zukünftigen Funktionen nicht vom sendenden oder empfangenden Host implementiert sind

Control Bits (Kontrollbits): Die Kontrollbits sind auch als "Flags" bekannt. Die Zuweisung wird von der IANA aus dem "TCP Header Flags"-Register verwaltet. Die derzeit zugewiesenen Kontrollbits sind CWR, ECE, URG, ACK, PSH, RST, SYN und FIN.

  • CWR (Congestion Window Reduced, Staufenster reduziert): 1 Bit

    • Siehe RFC 3168
  • ECE (ECN-Echo, ECN-Echo): 1 Bit

    • Siehe RFC 3168
  • URG (Urgent, dringend): 1 Bit

    • Das Feld für den dringenden Zeiger ist signifikant
  • ACK (Acknowledgment, Bestätigung): 1 Bit

    • Das Bestätigungsfeld ist signifikant
  • PSH (Push, Push): 1 Bit

    • Push-Funktion
  • RST (Reset, Reset): 1 Bit

    • Die Verbindung zurücksetzen
  • SYN (Synchronize, Synchronisieren): 1 Bit

    • Sequenznummern synchronisieren
  • FIN (Finish, Beenden): 1 Bit

    • Keine weiteren Daten vom Sender

Window (Fenster): 16 Bits

  • Die Anzahl der Datenoktette, beginnend mit dem im Bestätigungsfeld angegebenen, die der Sender dieses Segments zu akzeptieren bereit ist
  • Der Wert wird verschoben, wenn die Fensterskalierungserweiterung verwendet wird
  • Die Fenstergröße muss (MUST-1) als vorzeichenlose Zahl behandelt werden, sonst erscheinen große Fenstergrößen wie negative Fenster und TCP funktioniert nicht

Checksum (Prüfsumme): 16 Bits

  • Das 16-Bit-Einerkomplement der Einerkomplementsumme aller 16-Bit-Wörter im Header und Text
  • Die TCP-Prüfsumme ist niemals optional
  • Der Sender muss (MUST-2) sie generieren und der Empfänger muss (MUST-3) sie überprüfen

Urgent Pointer (Dringender Zeiger): 16 Bits

  • Kommuniziert den aktuellen Wert des dringenden Zeigers als positiven Versatz von der Sequenznummer in diesem Segment
  • Der dringende Zeiger zeigt auf die Sequenznummer des Oktetts, das den dringenden Daten folgt
  • Dieses Feld ist nur in Segmenten mit gesetztem URG-Kontrollbit zu interpretieren

Options (Optionen): Variable Länge

  • Optionen können Platz am Ende des TCP-Headers belegen und haben eine Länge, die ein Vielfaches von 8 Bits ist
  • Alle Optionen sind in der Prüfsumme enthalten

Hinweis: Dieses Kapitel ist sehr umfangreich. Die vollständige Funktionsspezifikation umfasst Optionsdefinitionen, Terminologieübersicht, Sequenznummerverwaltung, Verbindungsaufbau, Verbindungsabbau, Segmentierung, Datenkommunikation, Schnittstellen und Ereignisverarbeitung. Bitte beziehen Sie sich auf das vollständige Kapitel 3 von RFC 9293 für alle Details.


3.2. Obligatorische Optionen

TCP-Implementierungen müssen (MUST-4) die folgenden Optionen unterstützen:

KindLengthBedeutung
0-Ende der Optionsliste (End of Option List)
1-Keine Operation (No-Operation)
24Maximale Segmentgröße (Maximum Segment Size)

3.3. Verbindungszustände

Eine TCP-Verbindung durchläuft während ihrer Lebensdauer eine Reihe von Zuständen:

  • CLOSED - Repräsentiert überhaupt keinen Verbindungszustand
  • LISTEN - Wartet auf eine Verbindungsanforderung von einem beliebigen entfernten TCP und Port
  • SYN-SENT - Wartet auf eine übereinstimmende Verbindungsanforderung, nachdem eine Verbindungsanforderung gesendet wurde
  • SYN-RECEIVED - Wartet auf eine bestätigende Verbindungsanforderungsbestätigung, nachdem sowohl eine Verbindungsanforderung empfangen als auch gesendet wurde
  • ESTABLISHED - Repräsentiert eine offene Verbindung, empfangene Daten können an den Benutzer geliefert werden
  • FIN-WAIT-1 - Wartet auf eine Verbindungsbeendigungsanforderung vom entfernten TCP oder eine Bestätigung der zuvor gesendeten Verbindungsbeendigungsanforderung
  • FIN-WAIT-2 - Wartet auf eine Verbindungsbeendigungsanforderung vom entfernten TCP
  • CLOSE-WAIT - Wartet auf eine Verbindungsbeendigungsanforderung vom lokalen Benutzer
  • CLOSING - Wartet auf eine Verbindungsbeendigungsanforderungsbestätigung vom entfernten TCP
  • LAST-ACK - Wartet auf eine Bestätigung der zuvor an das entfernte TCP gesendeten Verbindungsbeendigungsanforderung
  • TIME-WAIT - Wartet darauf, dass genügend Zeit vergeht, um sicher zu sein, dass das entfernte TCP die Bestätigung seiner Verbindungsbeendigungsanforderung erhalten hat

Für den vollständigen Inhalt von Kapitel 3 beziehen Sie sich bitte auf das offizielle RFC 9293-Dokument, das detaillierte Informationen enthält über:

  • Optionsdefinitionen und -verarbeitung
  • Sequenznummermechanismen
  • Drei-Wege-Handshake für Verbindungsaufbau
  • Vier-Wege-Handshake für Verbindungsabbau
  • Datensegmentierung und -reassemblierung
  • Flusskontrolle und Staukontrolle
  • Wiederholungsübertragungsmechanismen
  • Benutzerschnittstellenspezifikationen
  • Ereignisverarbeitungslogik