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.