メインコンテンツまでスキップ

4. 要件 (Requirements)

本節では 2 つのブラウザ間のピアツーピア (P2P) データチャネルの要件を列挙します。本節は参考情報のみです。

要件 1: 複数の同時データチャネルをサポートしなければなりません (MUST)。同じ PeerConnection 内に、データチャネルと並行してゼロ個以上の SRTP メディアストリームが存在する場合があり、これらの SRTP メディアストリームの数と状態(アクティブ/非アクティブ)はいつでも変化する可能性があります。

要件 2: 信頼性のあるデータチャネルと信頼性のないデータチャネルの両方を同時にサポートしなければなりません (MUST)。

要件 3: PeerConnection のデータチャネルは輻輳制御されなければなりません (MUST)。個別に、クラスとして、または PeerConnection の SRTP メディアストリームと共同で制御できます。これにより、データチャネルがこれらの SRTP メディアストリームに輻輳問題を引き起こさないことが保証されます。

要件 4: アプリケーションは、各データチャネルの相対的な優先度について、互いに対して、および SRTP メディアストリームに対してガイダンスを提供できるべきです (SHOULD)。

要件 5: データチャネルはセキュアでなければなりません (MUST)。機密性、完全性、送信元認証を可能にします。詳細は [RFC8826] と [RFC8827] を参照してください。

要件 6: データチャネルはメッセージフラグメンテーション (Message Fragmentation) サポートを提供しなければなりません (MUST)。JavaScript アプリケーションが送信するメッセージのサイズに関わらず、IP 層のフラグメンテーションを回避できます。また、大きなデータチャネル転送が他のデータチャネルのトラフィックを過度に遅延させないことも保証しなければなりません (MUST)。

要件 7: データチャネル転送プロトコルはそのプロトコルフィールド内にローカル IP アドレスをエンコードしてはなりません (MUST NOT)。これは潜在的なプライベート情報を漏洩し、そのアドレスに依存すると失敗を引き起こします。

要件 8: データチャネル転送プロトコルは、画像ファイル転送などのためにアプリケーション層で無制限の長さの「メッセージ」(仮想ソケットストリーム)をサポートすべきです (SHOULD)。実装は合理的なメッセージサイズ制限を強制する場合があります。

要件 9: データチャネル転送プロトコルは IP フラグメンテーションを避けるべきです (SHOULD)。パス MTU (PMTU) 発見をサポートしなければならず (MUST)、特に PMTU 発見のために ICMP または ICMPv6 の生成や返送に依存してはなりません (MUST NOT)。

要件 10: ユーザーアプリケーション空間でプロトコルスタックを実装できなければなりません (MUST)。