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


1
좋은 대답입니다! Chrome 31부터 SCTP는 기본적으로 데이터 채널에 사용됩니다.
Sam Dutton 2013 년

1
흔들리는 멋진 대답. 출처에 감사드립니다.
The Dembinski

@SCTP가 오디오 / 비디오에서 사용되지 않는 이유는 무엇입니까? "extras"를 사용하여 효과적으로 udp를 사용하지 않습니까 (현재 대부분 udp 위에 구현되어 있음)
Pavel P

1
향후 사용자 : 1. chrome://webrtc-internals에서 "Read Stats From : Legacy"를 선택해야합니다.
Thomas

제가 개인적으로 "WebRTC가 TCP 또는 UDP를 사용합니까"라는 질문을 한 이유는 신뢰할 수 있는지 여부를 확인하기 위해서입니다. Point 3은 Media가 TCP 또는 UDP를 사용하지만 DataChannel은 SCTP를 사용하므로 SCTP가 신뢰할 수 있기 때문에 DataChannel이 신뢰할 수 있어야합니다 ( SCTP RFC 에 따라 ). 이것은 포인트 2모순됩니다. 그래서 누군가가 위대함을 명확히 할 수 있다면!
Ben Butterworth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.