RFC 9293 - Transmission Control Protocol (Übertragungssteuerungsprotokoll)
- Status: Internet Standard
- Veröffentlicht: August 2022
- Stream: IETF
- Aktualisiert: RFC1011, RFC1122, RFC5961
- Ersetzt: RFC793, RFC879, RFC2873, RFC6093, RFC6429, RFC6528, RFC6691
- Errata: Keine Errata
Zusammenfassung (Abstract)
Dieses Dokument spezifiziert das Transmission Control Protocol (TCP, Übertragungssteuerungsprotokoll). TCP ist ein wichtiges Transportschichtprotokoll im Internet-Protokollstapel und hat sich über Jahrzehnte der Nutzung und des Wachstums des Internets kontinuierlich weiterentwickelt. In dieser Zeit wurden zahlreiche Änderungen an TCP vorgenommen, wie es in RFC 793 spezifiziert war, obwohl diese nur stückweise dokumentiert wurden. Dieses Dokument sammelt und bringt diese Änderungen zusammen mit der Protokollspezifikation aus RFC 793.
Dieses Dokument macht RFC 793 sowie die RFCs 879, 2873, 6093, 6429, 6528 und 6691, die Teile von RFC 793 aktualisierten, obsolet. Es aktualisiert die RFCs 1011 und 1122 und sollte als Ersatz für die Teile dieser Dokumente betrachtet werden, die sich mit TCP-Anforderungen befassen. Es aktualisiert auch RFC 5961, indem es eine kleine Klarstellung bei der Reset-Behandlung im SYN-RECEIVED-Zustand hinzufügt. Die TCP-Header-Steuerbits aus RFC 793 wurden ebenfalls basierend auf RFC 3168 aktualisiert.
Inhaltsverzeichnis (Table of Contents)
- 1. Zweck und Umfang (Purpose and Scope)
- 2. Einführung (Introduction)
- 2.1 Anforderungssprache
- 2.2 Wichtige TCP-Konzepte
- 3. Funktionale Spezifikation (Functional Specification)
- 3.1 Header-Format
- 3.2 Spezifische Optionsdefinitionen
- 3.3 TCP-Terminologie-Übersicht
- 3.4 Sequenznummern
- 3.5 Verbindungsaufbau
- 3.6 Verbindungsabbau
- 3.7 Segmentierung
- 3.8 Datenkommunikation
- 3.9 Schnittstellen
- 3.10 Ereignisverarbeitung
- 4. Glossar (Glossary)
- 5. Änderungen gegenüber RFC 793 (Changes from RFC 793)
- 6. Sicherheitsüberlegungen (Security Considerations)
- 7. IANA-Überlegungen (IANA Considerations)
- 8. Referenzen (References)
- 8.1 Normative Referenzen
- 8.2 Informative Referenzen
Anhänge (Appendices)
- Anhang A. TCP-Verbindungszustandsdiagramm
- Anhang B. TCP-Anforderungszusammenfassung
- Anhang C. TCP-Verifizierung
Verwandte Ressourcen
- Offizieller Text: RFC 9293
- Offizielle Seite: RFC 9293 DataTracker
- Errata: RFC Editor Errata
- STD 7: Dieses Dokument ist Teil des Internet Standard 7
Schnellreferenz
Was ist TCP?
TCP (Transmission Control Protocol, Übertragungssteuerungsprotokoll) ist ein zentrales Transportschichtprotokoll im Internet-Protokollstapel, das Folgendes bietet:
- Verbindungsorientiert - Stellt Verbindung vor Kommunikation her
- Zuverlässige Übertragung - Gewährleistet korrekte Datenankunft
- Geordnete Zustellung - Empfängt Daten in gesendeter Reihenfolge
- Flusskontrolle - Verhindert Empfängerüberlastung
- Staukontrolle - Vermeidet Netzwerkstaus
Hauptfunktionen
- ✅ Drei-Wege-Handshake - Verbindungsaufbau
- ✅ Sequenznummern-Mechanismus - Gewährleistet Reihenfolge und Zuverlässigkeit
- ✅ Bestätigung - Bestätigung der Datenankunft
- ✅ Timeout-Neuübertragung - Behandelt Paketverlust
- ✅ Schiebefenster - Flusskontrolle
- ✅ Staukontrolle - Netzwerkstabilität
TCP vs UDP
| Merkmal | TCP | UDP |
|---|---|---|
| Verbindung | Verbindungsorientiert | Verbindungslos |
| Zuverlässigkeit | Zuverlässig | Unzuverlässig |
| Reihenfolge | Garantiert | Nicht garantiert |
| Geschwindigkeit | Langsamer | Schneller |
| Overhead | Höher | Niedriger |
| Anwendungsfälle | HTTP, SMTP, FTP, SSH | DNS, Videostreaming, Gaming |
Bedeutung von RFC 9293
RFC 9293 vs RFC 793:
- RFC 793 (1981) - Original-TCP-Spezifikation
- RFC 9293 (2022) - Neuester Standard, konsolidiert 40 Jahre Evolution
- Macht RFC 793 und mehrere Updates obsolet
- Klärt moderne TCP-Implementierungsanforderungen
- Aktualisiert Sicherheits- und Leistungs-Best-Practices
Hauptverbesserungen:
- Konsolidiert alle TCP-Erweiterungen und Errata
- Klärt obligatorische Optionen
- Aktualisiert Staukontroll-Anforderungen
- Verbessert Sicherheitsüberlegungen
- Spiegelt moderne Netzwerkumgebung wider
Häufige TCP-Ports
- HTTP: 80
- HTTPS: 443
- SMTP: 25
- FTP: 20, 21
- SSH: 22
- Telnet: 23
- POP3: 110
- IMAP: 143
Verwandte RFCs:
- RFC 768 - UDP (User Datagram Protocol)
- RFC 791 - IP (Internet Protocol)
- RFC 5681 - TCP-Staukontrolle
- RFC 7323 - TCP-Erweiterungen (Fensterskalierung, Zeitstempel)
- RFC 7413 - TCP Fast Open
- RFC 8200 - IPv6-Spezifikation
Anhang B. TCP-Anforderungszusammenfassung
Dieser Anhang fasst alle Implementierungsanforderungen zusammen, die in RFC 9293 mit RFC 2119-Schlüsselwörtern (MUST, SHOULD, MAY usw.) markiert sind.
Grundlegende Protokollanforderungen
MUST-Anforderungen (Obligatorisch)
-
Header-Format
- TCP-Implementierungen MÜSSEN dem in RFC 9293 definierten Header-Format folgen
- Reservierte Bits MÜSSEN auf Null gesetzt werden
- Das Prüfsummenfeld MUSS immer berechnet und gesendet werden
-
Optionsverarbeitung
- MUSS die Option Maximum Segment Size (MSS) unterstützen (Kind 2)
- MUSS nicht erkannte Optionen ignorieren
- MUSS End of Option List (EOL, Kind 0) und No-Operation (NOP, Kind 1) unterstützen
-
Sequenznummern
- Die Initial Sequence Number (ISN) MUSS auf unvorhersehbare Weise gewählt werden
- Sequenznummern MÜSSEN jedes Datenbyte verfolgen
-
Verbindungsverwaltung
- MUSS Drei-Wege-Handshake zum Aufbau von Verbindungen verwenden
- MUSS angemessenen Zustandsübergängen folgen
- MUSS den TIME-WAIT-Zustand implementieren
-
Datenübertragung
- MUSS empfangene Daten in Reihenfolge liefern
- MUSS Segment-Prüfsummen validieren
- MUSS Fenstergröße respektieren
-
Fehlerbehandlung
- MUSS Segmente mit ungültigen Prüfsummen verwerfen
- MUSS RST für ungültige Zustände senden
SHOULD-Anforderungen (Empfohlen)
-
Leistung
- Implementierungen SOLLTEN die Fensterskalierungsoption unterstützen (RFC 7323)
- Implementierungen SOLLTEN die Zeitstempeloption unterstützen (RFC 7323)
- Implementierungen SOLLTEN SACK unterstützen (Selective Acknowledgment, RFC 2018)
-
Staukontrolle
- Implementierungen SOLLTEN geeignete Staukontrollalgorithmen verwenden
- SOLLTE den in RFC 5681 definierten Algorithmen folgen
-
Sicherheit
- Implementierungen SOLLTEN sich vor vorhersehbaren ISN-Angriffen schützen
- Implementierungen SOLLTEN Blind-In-Window-Angriffe abmildern (RFC 5961)
MAY-Anforderungen (Optional)
-
Optionale Funktionen
- Implementierungen KÖNNEN den Urgent-Pointer-Mechanismus unterstützen
- Implementierungen KÖNNEN zusätzliche TCP-Optionen unterstützen
-
Optimierungen
- Implementierungen KÖNNEN den Nagle-Algorithmus implementieren
- Implementierungen KÖNNEN den verzögerten ACK-Mechanismus verwenden
Detaillierte Anforderungen nach Kategorie
1. Optionsverarbeitung
Obligatorisch (MUST):
- Kind 0 (EOL): Ende der Optionsliste
- Kind 1 (NOP): No-Operation
- Kind 2 (MSS): Maximale Segmentgröße
Empfohlen (SHOULD):
- Kind 3: Fensterskalierung (RFC 7323)
- Kind 4,5: SACK Erlaubt und SACK (RFC 2018)
- Kind 8: Zeitstempel (RFC 7323)
Optional (MAY):
- Andere standardisierte Optionen
2. Sequenznummern
Obligatorisch (MUST):
- ISN MUSS mit kryptographisch sicherem Zufallszahlengenerator generiert werden
- Sequenznummern MÜSSEN jedes Datenbyte verfolgen
- MUSS doppelte Segmente erkennen und verwerfen
Empfohlen (SHOULD):
- SOLLTE sich vor Sequenznummernangriffen schützen (RFC 6528)
3. Verbindungsverwaltung
Obligatorisch (MUST):
- MUSS Drei-Wege-Handshake implementieren
- MUSS angemessenen Verbindungszustandsübergängen folgen
- MUSS TIME-WAIT-Zustand mindestens 2MSL lang aufrechterhalten
- MUSS simultanes Öffnen und Schließen behandeln
Empfohlen (SHOULD):
- SOLLTE SYN-Flood-Angriffe mit SYN-Cookies oder äquivalentem Mechanismus abmildern
4. Datenübertragung
Obligatorisch (MUST):
- MUSS Daten in Reihenfolge liefern
- MUSS Fenstergrößenbeschränkungen respektieren
- MUSS Prüfsummen validieren
- MUSS verlorene Segmente erneut übertragen
Empfohlen (SHOULD):
- SOLLTE geeignete Timeout-Mechanismen implementieren
- SOLLTE Staukontrollalgorithmen verwenden
5. Fehlerbehandlung
Obligatorisch (MUST):
- MUSS Segmente mit ungültigen Prüfsummen verwerfen
- MUSS RST für ungültige Zustände senden
- MUSS ACKs außerhalb des Bereichs korrekt behandeln
Empfohlen (SHOULD):
- SOLLTE Blind-Reset-Angriffe abmildern (RFC 5961)
Implementierungs-Checkliste
Kernfunktionen
- Vollständige TCP-Header-Verarbeitung
- Drei-Wege-Handshake
- Vier-Wege-Verbindungsabbau
- Sequenznummernverwaltung
- Prüfsummenberechnung und -validierung
- Grundlegende Flusskontrolle (Fenstermechanismus)
- Neuübertragungsmechanismus
- TIME-WAIT-Zustandsbehandlung
Obligatorische Optionen
- MSS-Option (Maximale Segmentgröße)
- EOL (Ende der Optionsliste)
- NOP (No-Operation)
Empfohlene Funktionen
- Fensterskalierung (RFC 7323)
- Zeitstempeloption (RFC 7323)
- SACK (Selective Acknowledgment, RFC 2018)
- Angemessene Staukontrolle (RFC 5681)
- ECN (Explicit Congestion Notification, RFC 3168)
Sicherheitsfunktionen
- Sichere ISN-Generierung
- SYN-Flood-Schutz
- Blind-In-Window-Angriffsabmilderung (RFC 5961)
- Sequenznummernvalidierung
Leistungsoptimierungen
- Verzögertes ACK
- Nagle-Algorithmus
- Schnelle Neuübertragung und schnelle Wiederherstellung
- Angemessene RTT-Messung
Definitionen der Anforderungsebenen
Wie in RFC 2119 definiert:
- MUST / REQUIRED / SHALL: Absolute Anforderung
- MUST NOT / SHALL NOT: Absolutes Verbot
- SHOULD / RECOMMENDED: Sollte befolgt werden, außer aus triftigem Grund
- SHOULD NOT / NOT RECOMMENDED: Sollte vermieden werden, außer aus triftigem Grund
- MAY / OPTIONAL: Wirklich optionales Element
Hinweis: Für vollständige Anforderungsdetails und Kontext beziehen Sie sich auf den Haupttext von RFC 9293. Dieser Anhang bietet eine praktische Zusammenfassung, ersetzt aber nicht die offizielle Spezifikation.