コンピュータネットワークにおいて、データグラム輻輳制御プロトコル(DCCP)はメッセージ指向のトランスポート層プロトコルです。DCCPは、信頼性の高い接続確立、切断、明示的輻輳通知(ECN)、輻輳制御、および機能ネゴシエーションを実現します。IETFは、2006年3月に提案標準であるRFC 4340としてDCCPを公開しました。RFC 4336は、その概要を説明しています。
DCCPは、アプリケーション層で輻輳制御メカニズムを実装することなく、それらのメカニズムにアクセスする方法を提供します。伝送制御プロトコル(TCP)のようにフローベースのセマンティクスを可能にしますが、信頼性の高い順序通りの配信は提供しません。ストリーム制御伝送プロトコル(SCTP)のように、複数のストリーム内での順序付き配信はDCCPでは利用できません。DCCP接続には、データトラフィックだけでなく、確認応答トラフィックも含まれます。確認応答は、送信者にパケットが到着したかどうか、および明示的輻輳通知(ECN)によってマークされたかどうかを通知します。確認応答は、使用されている輻輳制御メカニズムが要求する信頼性で送信され、場合によっては完全に信頼性が確保されます。
DCCPには、TCPのようにバイトIDではなく、パケットIDに対応する非常に長い(48ビット)シーケンス番号を使用するオプションがあります。シーケンス番号の長さが長いのは、「DCCPリセットを接続に注入するなどの盲目的な攻撃」を防ぐためです。[ 1 ]
DCCPは、データ配信に時間制約のあるアプリケーションに役立ちます。このようなアプリケーションには、ストリーミングメディア、マルチプレイヤーオンラインゲーム、インターネット電話などがあります。これらのアプリケーションでは、古いメッセージはすぐに役に立たなくなるため、失われたメッセージを再送信するよりも新しいメッセージを受信する方が望ましいです。2017年現在このようなアプリケーションは、多くの場合、TCPを使用するか、ユーザーデータグラムプロトコル(UDP)を使用して独自の輻輳制御メカニズムを実装するか、あるいは輻輳制御を全く行わないかのいずれかです。DCCPはこれらのアプリケーションにとって有用であるだけでなく、必要に応じてUDP/DCCPの上に信頼性の高い、あるいは順序通りの配信のためのメカニズムを追加することで、UDPベースのアプリケーションに対する一般的な輻輳制御メカニズムとしても機能します。この文脈において、DCCPは、異なるものの、一般的にTCPと互換性のある輻輳制御メカニズムの使用を可能にします。
以下のオペレーティングシステムはDCCPを実装しています。
ユーザー空間ライブラリ:
DCCP汎用ヘッダーは、拡張シーケンス番号ビットであるXの値によって異なる形式をとります。Xが1の場合、シーケンス番号フィールドは48ビット長となり、汎用ヘッダーは16バイトになります。以下にその例を示します。
Xがゼロの場合、シーケンス番号の下位24ビットのみが送信され、汎用ヘッダーは12バイト長になります。
TCPプロトコルにマルチパス機能を追加する拡張( MPTCP)と同様に、DCCPのマルチパス拡張がIETFで議論されており、[ 9 ] MP-DCCPと表記されています 。最初の実装は、オペレーターと学術機関の協力的なアプローチで既に開発、テスト、発表されており[ 10 ]、オープンソースソリューションとして利用可能です。