WebRTC có sử dụng TCP hoặc UDP không?


81

Đây có vẻ là một câu hỏi rất cơ bản, nhưng tôi cần xác nhận

  1. WebRTC có sử dụng TCP hoặc UDP làm phương tiện truyền tải ngang hàng không? Làm sao tôi biết ?
  2. Tôi đọc rằng có chế độ tin cậy và thỏa thuận DTLS, chúng ảnh hưởng như thế nào?
  3. Việc vận chuyển này có giống nhau đối với cả Media và DataChannel không?
  4. Làm cách nào để chuyển đổi giữa TCP và UDP?

Tôi hỏi điều này vì tôi biết rằng các trình duyệt có giới hạn về số lượng kết nối song song (tôi nghĩ rằng họ nói về TCP) và có thể kết nối UDP không bị giới hạn.

Câu trả lời:


110
  1. Nó có thể sử dụng một trong hai. Theo mặc định, ưu tiên được cấp cho UDP, nhưng tùy thuộc vào (các) tường lửa ở giữa các đồng đẳng kết nối nó có thể chỉ có thể kết nối với TCP. Bạn có thể sử dụng Wireshark để nắm bắt các gói và xác minh xem TCP hay UDP đang được sử dụng hay không. Trong Chrome, bạn cũng có thể xem chi tiết về ứng cử viên đã chọn ( googActiveConnection) bằng cách truy cập chrome://webrtc-internals.

  2. "Chế độ tin cậy" có thể đề cập đến chế độ tin cậy của DataChannel , có thể được cấu hình để chạy ở chế độ đáng tin cậy hoặc không đáng tin cậy. DTLS đề cập đến phương pháp hiện tại là tùy chọn, nhưng sẽ sớm trở thành phương thức mặc định để trao đổi khóa mã hóa (chế độ không dùng nữa là SDES). Firefox chỉ hỗ trợ DTLS, vì vậy để tương tác trình duyệt, bạn hiện cần bật nó trong Chrome .

  3. RTCPeerConnection (phương tiện) sẽ sử dụng TCP hoặc UDP, trong khi DataChannel sử dụng SCTP. Triển khai SCTP được Firefox sử dụng được triển khai trên UDP: https://code.google.com/p/sctp-refimpl/ .

  4. Có thể lọc ra các ứng cử viên ICE TCP hoặc UDP trước khi thêm chúng với addIceCandidate. Nói chung, bạn không nên cố ép phương tiện được sử dụng vì WebRTC sẽ chỉ "làm đúng". Trình duyệt không giới hạn số lượng kết nối TCP được WebRTC sử dụng vượt quá bất kỳ giới hạn nào trên RTCPeerConnection hoặc DataChannel (nghĩa là nếu bạn có 10 PeerConnections, mỗi người có thể sử dụng TCP mà không gặp bất kỳ vấn đề gì).


1
Câu trả lời chính xác! Từ Chrome 31, SCTP được sử dụng theo mặc định cho các kênh dữ liệu.
Sam Dutton

1
Câu trả lời tuyệt vời. Cảm ơn bạn cho các nguồn.
The Dembinski

@Bất kỳ lý do nào SCTP không được âm thanh / video sử dụng? Không phải là nó có hiệu quả udp với "extras" (hiện tại nó được thực hiện trên đầu trang của udp chủ yếu)
Pavel P

1
Đối với người dùng trong tương lai: trong 1. chrome://webrtc-internals, bạn phải chọn "đọc Thống kê Từ: Legacy"
Thomas Orlita

Lý do cá nhân tôi đặt câu hỏi "WebRTC sử dụng TCP hay UDP" là để xem nó có đáng tin cậy hay không. Điểm 3 nói rằng, Media sẽ sử dụng TCP hoặc UDP, nhưng DataChannel sẽ sử dụng SCTP, vì vậy DataChannel phải đáng tin cậy, vì SCTP là đáng tin cậy (theo SCTP RFC ). Điều này mâu thuẫn với điểm 2. , vì vậy nếu ai đó có thể làm sáng tỏ tuyệt vời!
Ben Butterworth
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.