Zum Hauptinhalt springen

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)​

Anhänge (Appendices)​


Verwandte Ressourcen​


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​

MerkmalTCPUDP
VerbindungVerbindungsorientiertVerbindungslos
ZuverlässigkeitZuverlässigUnzuverlässig
ReihenfolgeGarantiertNicht garantiert
GeschwindigkeitLangsamerSchneller
OverheadHöherNiedriger
AnwendungsfälleHTTP, SMTP, FTP, SSHDNS, 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)​

  1. 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
  2. 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
  3. Sequenznummern

    • Die Initial Sequence Number (ISN) MUSS auf unvorhersehbare Weise gewählt werden
    • Sequenznummern MÜSSEN jedes Datenbyte verfolgen
  4. Verbindungsverwaltung

    • MUSS Drei-Wege-Handshake zum Aufbau von Verbindungen verwenden
    • MUSS angemessenen Zustandsübergängen folgen
    • MUSS den TIME-WAIT-Zustand implementieren
  5. Datenübertragung

    • MUSS empfangene Daten in Reihenfolge liefern
    • MUSS Segment-Prüfsummen validieren
    • MUSS Fenstergröße respektieren
  6. Fehlerbehandlung

    • MUSS Segmente mit ungültigen Prüfsummen verwerfen
    • MUSS RST für ungültige Zustände senden

SHOULD-Anforderungen (Empfohlen)​

  1. 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)
  2. Staukontrolle

    • Implementierungen SOLLTEN geeignete Staukontrollalgorithmen verwenden
    • SOLLTE den in RFC 5681 definierten Algorithmen folgen
  3. Sicherheit

    • Implementierungen SOLLTEN sich vor vorhersehbaren ISN-Angriffen schützen
    • Implementierungen SOLLTEN Blind-In-Window-Angriffe abmildern (RFC 5961)

MAY-Anforderungen (Optional)​

  1. Optionale Funktionen

    • Implementierungen KÖNNEN den Urgent-Pointer-Mechanismus unterstützen
    • Implementierungen KÖNNEN zusätzliche TCP-Optionen unterstützen
  2. 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.