| Internetprotokollfamilie |
|---|
| Anwendungsschicht |
| Transportschicht |
|
| Internetschicht |
| Verbindungsschicht |
In der Rechnernetzwerktechnik ist das Datagram Congestion Control Protocol ( DCCP ) ein nachrichtenorientiertes Transportprotokoll . DCCP implementiert zuverlässigen Verbindungsaufbau und -abbau, explizite Staubenachrichtigung (ECN), Staukontrolle und Feature-Aushandlung. Die IETF veröffentlichte DCCP im März 2006 als RFC 4340 , einen vorgeschlagenen Standard . RFC 4336 bietet eine Einführung.
Betrieb
DCCP ermöglicht den Zugriff auf Mechanismen zur Staukontrolle, ohne diese auf der Anwendungsschicht implementieren zu müssen . Es erlaubt flussbasierte Semantik wie das Transmission Control Protocol (TCP), bietet jedoch keine zuverlässige Zustellung in der richtigen Reihenfolge. Sequenzielle Zustellung innerhalb mehrerer Datenströme, wie im Stream Control Transmission Protocol (SCTP), ist in DCCP nicht möglich. Eine DCCP-Verbindung enthält neben Datenverkehr auch Bestätigungsbenachrichtigungen. Bestätigungen informieren den Sender darüber, ob seine Pakete angekommen sind und ob sie durch Explicit Congestion Notification (ECN) markiert wurden. Die Übertragung von Bestätigungen erfolgt so zuverlässig, wie es der verwendete Staukontrollmechanismus erfordert, im Idealfall sogar vollständig zuverlässig.
DCCP bietet die Option für sehr lange (48-Bit) Sequenznummern, die einer Paket-ID entsprechen, anstatt einer Byte-ID wie bei TCP. Die lange Länge der Sequenznummern soll vor „bestimmten Blindangriffen, wie dem Einschleusen von DCCP-Resets in die Verbindung“, schützen. [ 1 ]
Anwendungen
DCCP eignet sich für Anwendungen mit zeitkritischen Datenübertragungen. Dazu gehören Streaming-Medien , Multiplayer-Online-Spiele und Internettelefonie . In solchen Anwendungen verlieren alte Nachrichten schnell an Wert, sodass der Empfang neuer Nachrichten dem erneuten Senden verlorener Nachrichten vorzuziehen ist. Bis 2017 nutzten diese Anwendungen häufig entweder TCP oder das User Datagram Protocol (UDP) mit eigenen Mechanismen zur Staukontrolle oder verzichteten ganz darauf. DCCP ist nicht nur für diese Anwendungen nützlich, sondern kann auch als allgemeiner Staukontrollmechanismus für UDP-basierte Anwendungen dienen, indem es bei Bedarf Mechanismen für eine zuverlässige und sequenzielle Zustellung zusätzlich zu UDP/DCCP bereitstellt. In diesem Kontext ermöglicht DCCP die Verwendung verschiedener, aber im Allgemeinen TCP-kompatibler Staukontrollmechanismen.
Implementierungen
Folgende Betriebssysteme implementieren DCCP:
- FreeBSD , Version 5.1 [ 2 ] als Patch
- Linux seit Version 2.6.14, [ 3 ] aber seit Version 6.4 aufgrund mangelnder Wartung als veraltet gekennzeichnet und für 2025 zur Entfernung vorgesehen. [ 4 ] Linux 6.16 verzichtet auf DCCP. [ 5 ]
Benutzerbibliothek:
- Die DCCP-TP- Implementierung, archiviert am 23.07.2008 in der Wayback Machine , ist für Portabilität optimiert, wurde aber seit Juni 2008 nicht mehr verändert. [ 8 ]
- Ziel dieser Implementierung von GoDCCP ist es, ein standardisiertes, portables und NAT-freundliches Framework für Peer-to-Peer-Kommunikation mit flexibler Staukontrolle je nach Anwendung bereitzustellen.
Paketstruktur
Der generische DCCP-Header hat je nach Wert des Bits X (Erweiterte Sequenznummern) unterschiedliche Formen. Ist X gleich eins, ist das Sequenznummernfeld 48 Bit lang und der generische Header umfasst 16 Byte, wie folgt.
| Offset | Oktett | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Oktett | Bisschen | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
| 0 | 0 | Quellport | Zielhafen | ||||||||||||||||||||||||||||||
| 4 | 32 | Datenversatz | CCVal | CsCov | Prüfsumme | ||||||||||||||||||||||||||||
| 8 | 64 | Res | Typ | X | Reserviert | Sequenznummer (höchste Bits)↴ | |||||||||||||||||||||||||||
| 12 | 96 | ↪Sequenznummer | |||||||||||||||||||||||||||||||
Wenn X gleich Null ist, werden nur die unteren 24 Bits der Sequenznummer übertragen, und der generische Header ist 12 Byte lang.
| Offset | Oktett | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Oktett | Bisschen | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
| 0 | 0 | Quellport | Zielhafen | ||||||||||||||||||||||||||||||
| 4 | 32 | Datenversatz | CCVal | CsCov | Prüfsumme | ||||||||||||||||||||||||||||
| 8 | 64 | Res | Typ | X | Sequenznummer | ||||||||||||||||||||||||||||
- Quellport: 16 Bit
- Identifiziert den sendenden Port.
- Zielport: 16 Bit
- Identifiziert den Empfangsport.
- Datenoffset: 8 Bit
- Der Versatz vom Beginn des DCCP-Headers des Pakets bis zum Beginn seines Anwendungsdatenbereichs, in 32-Bit-Wörtern.
- CCVal: 4 Bit
- Wird von der HC-Sender CCID verwendet.
- Prüfsummenabdeckung (CsCov): 4 Bit
- Die Prüfsummenabdeckung bestimmt die Teile des Pakets, die durch das Prüfsummenfeld abgedeckt werden.
- Prüfsumme: 16 Bit
- Die Internet-Prüfsumme des DCCP-Headers des Pakets (einschließlich Optionen), eines Pseudo-Headers der Netzwerkschicht und, abhängig von der Prüfsummenabdeckung, aller, einiger oder keiner der Anwendungsdaten.
- Reserviert (Res): 3 Bits; Res == 0
- Absender MÜSSEN dieses Feld in generierten Paketen auf Nullen setzen, und Empfänger MÜSSEN seinen Wert ignorieren.
- Typ: 4 Bit
- Das Feld „Typ“ gibt den Typ des Pakets an.
- Erweiterte Sequenznummern (X): 1 Bit
- Auf eins setzen, um die Verwendung eines erweiterten generischen Headers mit 48-Bit-Sequenz- und Bestätigungsnummern anzuzeigen.
- Sequenznummer: 48 oder 24 Bit
- Identifiziert das Paket eindeutig in der Sequenz aller Pakete, die die Quelle über diese Verbindung gesendet hat.
Aktuelle Entwicklung
Ähnlich wie die Erweiterung des TCP- Protokolls um Mehrwegeempfang ( MPTCP ) wird derzeit bei der IETF eine Mehrwege-Erweiterung von DCCP diskutiert [ 9 ] , die entsprechend als MP-DCCP bezeichnet wird . Erste Implementierungen wurden bereits in Zusammenarbeit zwischen Netzbetreibern und Forschungseinrichtungen entwickelt, getestet und vorgestellt [ 10 ] und sind als Open-Source-Lösung verfügbar.
Siehe auch
- Stream Control Transmission Protocol (SCTP)
- Transportschicht § Vergleich der Transportschichtprotokolle
Referenzen
- ^ RFC 4340 Abschnitt 7.6
- ^ "[dccp] FreeBSD implementation" . www.ietf.org . Abgerufen am 18. April 2018 .
- ^ „Linux erhält DCCP [LWN.net]“ . lwn.net . Abgerufen am 18. April 2018 .
- ^ "dccp: Print deprecation notice" . kernel.org .
- ^ „Linux 6.16 soll das Datagram Congestion Control Protocol „DCCP“ entfernen“ . www.phoronix.com . Abgerufen am 15. April 2025 .
- ^ „Linux 6.16 soll das Datagram Congestion Control Protocol „DCCP“ entfernen“ . www.phoronix.com . Abgerufen am 29. Mai 2025 .
- ^ "Merge branch 'net-retire-dccp-socket'" . git.kernel.org .
- ^ „Änderungsprotokoll für das dccp-tp-Wiki, abgerufen am 13. Juni 2011“ . Archiviert vom Original am 4. Oktober 2011. Abgerufen am 13. Juni 2011 .
- ^ Amend, Markus; Brunstrom, Anna; Kassler, Aneas; Rakocevic, Veselin; Johnson, Stephen (9. November 2021). "DCCP-Erweiterungen für den Mehrwegebetrieb mit mehreren Adressen" .
- ^ "Multipath-Erweiterung für DCCP" .
Externe Links
Protokollspezifikationen
- RFC 4340 — Datagramm-Staukontrollprotokoll
- RFC 5595 – Die Dienstcodes des Datagramm-Staukontrollprotokolls (DCCP)
- RFC 5596 — DCCP Simultaneous-Open-Technik zur Erleichterung der NAT/Middlebox-Traversal
- RFC 5762 — RTP und DCCP
- RFC 5238 — Datagram Transport Layer Security (DTLS) over DCCP
- RFC 5634 — Schnellstart für DCCP
- RFC 6773 — Ein Datagramm-Staukontrollprotokoll: UDP-Kapselung für NAT-Traversal
Staukontroll-IDs
- RFC 4341 — Profil für DCCP-Staukontrolle ID 2: TCP-ähnliche Staukontrolle
- RFC 4342 — Profil für DCCP-Staukontrolle ID 3: TCP-freundliche Ratenkontrolle (TFRC)
- RFC 5622 — Profil für DCCP-Staukontrolle ID 4: TCP-freundliche Ratenkontrolle für kleine Pakete (TFRC-SP)
Weitere Informationen
- RFC 4336 — Problemstellung für das Datagramm-Staukontrollprotokoll (DCCP)
- DCCP-Seite von einem der DCCP-Autoren
- DCCP-Unterstützung in Linux
- Datagramm-Staukontrollprotokoll (DCCP)