Чи використовує WebRTC TCP або UDP?


81

Це звучить як дуже елементарне запитання, але мені потрібне підтвердження

  1. Чи використовує WebRTC TCP або UDP як свій одноранговий транспорт? Звідки я знаю ?
  2. Я прочитав, що існують режим надійності та угода DTLS, як вони впливають?
  3. Чи однаковий цей транспорт як для Media, так і для DataChannel?
  4. Як переключитись між TCP та UDP?

Я запитую це, тому що знаю, що браузери мають обмеження на кількість паралельних з'єднань (думаю, вони говорять про TCP), і, можливо, з'єднання UDP не обмежене.

Відповіді:


111
  1. Він може використовувати будь-який. За замовчуванням перевага надається UDP, але в залежності від брандмауера (ів) між приєднаними одноранговими мережами, можливо, він зможе підключитися лише до TCP. Ви можете використовувати Wireshark для захоплення пакетів і перевірки використання TCP або UDP. У Chrome ви також можете переглянути деталі обраного кандидата ( googActiveConnection), перейшовши до chrome://webrtc-internals.

  2. "Режим надійності", ймовірно, відноситься до режиму надійності каналу даних , який може бути налаштований на роботу в надійному або ненадійному режимі. DTLS відноситься до факультативного, але незабаром методу обміну ключами шифрування (інший застарілий режим - SDES). Firefox підтримує лише DTLS, тому для взаємодії браузера наразі вам потрібно буде ввімкнути його в Chrome .

  3. RTCPeerConnection (медіа) використовуватиме TCP або UDP, тоді як DataChannel використовує SCTP. Реалізація SCTP, що використовується Firefox, реалізована поверх UDP: https://code.google.com/p/sctp-refimpl/ .

  4. Можна відфільтрувати кандидатів TCE або UDP ICE перед тим, як додавати їх за допомогою addIceCandidate. Як правило, ви не повинні намагатися примусити транспорт, що використовується, оскільки WebRTC просто "зробить все правильно". Браузер не обмежує кількість TCP-з'єднань, що використовуються WebRTC, понад будь-які обмеження на RTCPeerConnection або DataChannel (тобто, якщо ви можете мати 10 PeerConnections, кожен може використовувати TCP без будь-яких проблем).


1
Чудова відповідь! У Chrome 31 для каналів даних за замовчуванням використовується SCTP.
Сем Даттон,

1
Гойдаюча дивовижна відповідь. Дякую за джерела.
Dembinski

@ Будь-яка причина, через яку аудіо / відео не використовується SCTP? Хіба це не ефективно udp з "додатками" (в даний час це реалізовано поверх udp переважно)
Pavel P

1
Для майбутніх користувачів: у 1. chrome://webrtc-internalsви повинні вибрати "Читати статистику від: Спадщина"
Thomas Orlita

Причиною того, чому я особисто задав питання "чи використовує WebRTC TCP або UDP", є перевірка того, був він надійним чи ні. У пункті 3 сказано, що ЗМІ використовуватиме TCP або UDP, але DataChannel використовуватиме SCTP, тому DataChannel повинен бути надійним, оскільки SCTP є надійним (відповідно до SCTP RFC ). Це суперечить пункту 2. , тож якби хтось міг пояснити чудово!
Бен Баттерворт,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.