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:
| Kind | Length | Bedeutung |
|---|---|---|
| 0 | - | Ende der Optionsliste (End of Option List) |
| 1 | - | Keine Operation (No-Operation) |
| 2 | 4 | Maximale 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