Network Working Group E. Kohler
Request for Comments: 4340 UCLA
Category: Standards Track M. Handley
UCL
S. Floyd
ICIR
March 2006
Datagram Congestion Control Protocol (DCCP)
Status of This Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2006).
Abstract
The Datagram Congestion Control Protocol (DCCP) is a transport
protocol that provides bidirectional unicast connections of
congestion-controlled unreliable datagrams. DCCP is suitable for
applications that transfer fairly large amounts of data and that can
benefit from control over the tradeoff between timeliness and
reliability.
Table of Contents
1. Introduction ....................................................5
2. Design Rationale ................................................6
3. Conventions and Terminology .....................................7
3.1. Numbers and Fields .........................................7
3.2. Parts of a Connection ......................................8
3.3. Features ...................................................9
3.4. Round-Trip Times ...........................................9
3.5. Security Limitation ........................................9
3.6. Robustness Principle ......................................10
4. Overview .......................................................10
4.1. Packet Types ..............................................10
4.2. Packet Sequencing .........................................11
4.3. States ....................................................12
4.4. Congestion Control Mechanisms .............................14
Kohler, et al. Standards Track [Page 1]
RFC 4340 Datagram Congestion Control Protocol (DCCP) March 2006
4.5. Feature Negotiation Options ...............................15
4.6. Differences from TCP ......................................16
4.7. Example Connection ........................................17
5. Packet Formats .................................................18
5.1. Generic Header ............................................19
5.2. DCCP-Request Packets ......................................22
5.3. DCCP-Response Packets .....................................23
5.4. DCCP-Data, DCCP-Ack, and DCCP-DataAck Packets .............23
5.5. DCCP-CloseReq and DCCP-Close Packets ......................25
5.6. DCCP-Reset Packets ........................................25
5.7. DCCP-Sync and DCCP-SyncAck Packets ........................28
5.8. Options ...................................................29
5.8.1. Padding Option .....................................31
5.8.2. Mandatory Option ...................................31
6. Feature Negotiation ............................................32
6.1. Change Options ............................................32
6.2. Confirm Options ...........................................33
6.3. Reconciliation Rules ......................................33
6.3.1. Server-Priority ....................................34
6.3.2. Non-Negotiable .....................................34
6.4. Feature Numbers ...........................................35
6.5. Feature Negotiation Examples ..............................36
6.6. Option Exchange ...........................................37
6.6.1. Normal Exchange ....................................38
6.6.2. Processing Received Options ........................38
6.6.3. Loss and Retransmission ............................40
6.6.4. Reordering .........................................41
6.6.5. Preference Changes .................................42
6.6.6. Simultaneous Negotiation ...........................42
6.6.7. Unknown Features ...................................43
6.6.8. Invalid Options ....................................43
6.6.9. Mandatory Feature Negotiation ......................44