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


81

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

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

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

回答:


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

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

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

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


1
素晴らしい答えです!Chrome 31以降、データチャネルにはデフォルトでSCTPが使用されます。
サム・ダットン

1
素晴らしい答えを揺さぶる。ソースをありがとう。
デンビンスキー2017年

@SCTPがオーディオ/ビデオで使用されない理由は何ですか?それが効果的に「エキストラ」(現在はそれは主に、UDPの上に実装されます)とUDPではありません
パベルP

1
将来のユーザーの場合:1。でchrome://webrtc-internals、「統計の読み取り元:レガシー」を選択する必要があります
ThomasOrlita19年

私が個人的に「WebRTCはTCPまたはUDPを使用していますか」という質問をした理由は、それが信頼できるかどうかを確認するためです。ポイント3によると、メディアはTCPまたはUDPを使用しますが、DataChannelはSCTPを使用するため、SCTPは信頼できるため(SCTP RFCによる)、DataChannelは信頼できるはずです。これはポイント2矛盾します。ですから、誰かが素晴らしいことを明確にできれば!
ベンバターワース
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.