Zum Hauptinhalt springen

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.