[tcp] WebRTC는 TCP 또는 UDP를 사용합니까?

매우 기본적인 질문처럼 들리지만 확인이 필요합니다.

  1. WebRTC는 피어 투 피어 전송으로 TCP 또는 UDP를 사용합니까? 내가 어떻게 알아 ?
  2. 신뢰성 모드와 DTLS 계약이 있다는 것을 읽었습니다. 어떤 영향을 미칩니 까?
  3. 이 전송이 미디어와 데이터 채널 모두에 대해 동일합니까?
  4. TCP와 UDP간에 어떻게 전환합니까?

나는 브라우저가 병렬 연결 수에 제한이 있다는 것을 알고 있고 (TCP에 대해 이야기한다고 생각합니다) UDP 연결이 제한되지 않는다는 것을 알고 있기 때문에 이것을 묻습니다.



답변

  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. .NET을 사용하여 추가하기 전에 TCP 또는 UDP ICE 후보를 필터링 할 수 있습니다 addIceCandidate. 일반적으로 WebRTC는 “올바른 일을 수행”하기 때문에 사용 된 전송을 강제로 사용하지 않아야합니다. 브라우저는 RTCPeerConnection 또는 DataChannel의 제한을 초과하여 WebRTC에서 사용하는 TCP 연결 수를 제한하지 않습니다 (즉, 10 개의 PeerConnection을 가질 수있는 경우 각각 문제없이 TCP를 사용할 수 있음).


답변