web-dev-qa-db-ja.com

WebRTCはTCPまたはUDPを使用しますか?

これは非常に基本的な質問のように聞こえますが、確認が必要です

  1. WebRTCは、ピアツーピアトランスポートとしてTCPまたはUDPを使用しますか?どうすればわかりますか?
  2. 信頼性モードとDTLS契約があることを読みましたが、それらはどのように影響しますか?
  3. このトランスポートは、メディアとデータチャネルの両方で同じですか?
  4. TCPとUDPを切り替えるにはどうすればよいですか?

ブラウザには並列接続の数に制限があり(TCPについて話していると思う)、UDP接続が制限されていない可能性があることを知っているため、これを尋ねます。

64
onmyway133
  1. どちらでも使用できます。デフォルトでは、UDPが優先されますが、接続するピア間のファイアウォールによっては、TCPでしか接続できない場合があります。 Wireshark を使用してパケットをキャプチャし、TCPまたはUDPが使用されているかどうかを確認できます。InChrome chrome://webrtc-internalsにアクセスすると、選択した候補(googActiveConnection)の詳細も表示できます。

  2. 「信頼性モード」は、おそらく DataChannel の信頼性モードを指し、信頼性モードまたは信頼性の低いモードで実行するように構成できます。 DTLSは現在オプションですが、 すぐに暗号化キーを交換するデフォルトの方法 になります(他の非推奨モードはSDESです)。 FirefoxはDTLSのみをサポートしているため、ブラウザの相互運用のために、現時点ではChromeで 有効にする必要があります

  3. RTCPeerConnection(メディア)はTCPまたはUDP、DataChannelはSCTPを使用します。Firefoxで使用されるSCTP実装はUDPの上に実装されます: https: //code.google.com/p/sctp-refimpl/

  4. addIceCandidate で追加する前に、TCPまたはUDP ICE候補を除外することができます。 WebRTCは単に「正しいことをする」ため、使用するトランスポートを強制しようとしないでください。ブラウザは、RTCPeerConnectionまたはDataChannelの制限を超えてWebRTCが使用するTCP接続数を制限しません(つまり、10個のPeerConnectionがあれば、それぞれがTCPを問題なく使用できます)。

89
tom