Вопрос

Я заинтересован в одноранговых соединениях в браузере. Поскольку это кажется возможным с WEBRTC, мне интересно, как это работает экзэклти.

Я прочитал некоторые объяснения и увидели об этом диаграммы, и теперь мне ясно, что установленная связь работает над сервером. Сервер кажется, что обменяет некоторые данные между клиентом, которые готовы подключаться друг к другу, чтобы они могли начать прямое соединение, которое не зависит от сервера.

Но это исключительно то, что я не понимаю. До сих пор я думал, что единственный способ создать соединения - это слушать порту на компьютере A и подключаться к этому порту с компьютера B. Но это не так, кажется, не имеет место в Webrtc. Я думаю, что никто из клиентов не начинает слушать порту. Каким-то образом они могут создать соединение без прослушивания портов и приемных соединений. Ни один клиент A, ни клиент B начинает действовать как сервер.

Но как? Какие данные обмениваются на сервере WEBRTC, что клиенты могут использовать для подключения друг к другу?

Спасибо за ваши объяснения для этого :)

Редактировать

Я нашел Это < / a> Статья. Это не связано с webrtc, но я думаю, что это отвечает на мой вопрос. Я не уверен, жесткий. Это все равно будет круто, если кто-то может объяснить мне это и дать мне дополнительные ссылки.

Это было полезно?

Решение

WEBRTC дает предложение SDP к приложению клиента JS для отправки (однако приложение JS хочет) на другое устройство, которое использует, что для генерации ответа SDP.

Хитрость состоит в том, что SDP включает в себя кандидаты льда (эффективно »пытаются поговорить со мной по этому IP-адресу и в этом порту»). Лед работает, чтобы пробить открытые порты в брандмауэрах; Хотя, если обе стороны являются симметричными NATS, это будет вообще невозможно, а альтернативный кандидат (на сервере поворота) можно использовать.

Как только они разговаривают напрямую (или через ход, что фактически это зеркало для пакетов), они могут открыть соединение DTLS и использовать его для ключевых средств носителей SRTP-DTLS и для отправки Datachannels через DTL. .

Редактировать: Сокращение здесь: http://blog.1click.io/10-jargons-abbresizations-for-for-formate WEBRTC-вентиляторы / для остальных, есть гугл. Большинство из них определяются IETF ( http://ietf.org/ )

Редактировать 2: Firefox и Chrome (и SPEC) перешли к использованию «струйки» для кандидатов льда, поэтому кандидаты льда, как правило, добавляются после лица к PeERConnection и обмениваются независимо от первоначального SDP (хотя вы можете дождаться, пока исходные кандидаты готовы перед отправкой предложения и свяжите их вместе). Смотрите https://webrtclossary.com/trickle-ice/ и https://datatracker.ietf.org/doc/draft-ietf-ice-trickle/

Другие советы

Очень хорошее объяснение можно найти в этой книге http: / /chimera.labs.oreilly.com/books/1230000000545/CH03.html#stun_turn_ice . который предоставляет основы на том, как WEBRTC использует ледяную технологию.

 Введите описание изображения здесь

В частности, предполагая IP-адрес STUN Server Server, приложение WEBRTC сначала отправляет запрос привязки к STUN Server. Сервер Shun отвечает ответом, который содержит публичный IP-адрес и порт клиента, как видно из публичной сети.

Теперь приложение обнаруживает свой публичный IP и кортеж портов, который может отправить другому сверстникам через SDP. (Обратите внимание, что SDP отправляются по внешнему каналу сигнализации, F.i. Websocket, установленные через веб-сервис)

с этим механизмом на месте, когда два сверстника хотят поговорить друг с другом через UDP, они могут использовать флажок Установленные Public IP и порты порта для обмена данными.

К сожалению, в некоторых случаях UDP может быть заблокирован брандмауэром. Чтобы решить эту проблему, всякий раз, когда STUN не удается, мы можем использовать протокол Traversal, используя реле вокруг протокола NAT (THENT) в виде отбления, который может работать через UDP и переключиться на TCP, если все остальное не удалось.

Создание соединения P2P WEBRTC имеет 3 шага (обзор 10 000 футов):

  1. Шаг 1: <Сильная> сигнализация : оба свертки подключаются к серверу сигнализации (используя Websockets более 80/443, COMET, SIP, ETC ..) и обмениваться информацией (об их средствах массовой информации, Публичный IP: портовые пары, когда они станут доступными и т. Д.)

  2. Шаг 2: <Сильное> Discovery : Устройства, подключенные к LAN или мобильные сети, не знают об их публичном IP (и порту), в котором они могут быть достигнуты при этом, поэтому они используют серверы Stun / Turn На общественном интернете, чтобы обнаружить их IP: Port Pair (кандидаты льда). В процессе они пробивают отверстие через NAT / маршрутизатор, который используется в шагах:

  3. Шаг 3: <Сильное> соединение P2P : После того, как кандидаты льда обмениваются через начальный канал сигнализации, каждый союзник осознает IP-интерфейс: Port (и отверстия были пробиты в NATS / маршрутизаторах ) Так может быть установлен одноранговый соединение для UDP.

  4.  Введите описание изображения здесь

    Схема выше объясняет процесс с 2 устройствами, подключенными к локальным сетям. Это часть статьи, которую я писал, что касается Устранение неисправностей Проблемы соединения Хорошая работа объяснения того, как работает WEBRTC.

Как работает WEBRTC

Этот документ обеспечивает быстрое и абстрактное введение в WEBRTC. Чтобы получить дополнительную информацию о WEBRTC, пожалуйста, посмотрите на дальнейшее чтение раздел в конце этого документа.

webrtc

webrtc (веб-связь в реальном времени) - это набор технологий, которые разработаны для однорангового объединения в однократную связь между браузерами. Поскольку его имя упоминается, что он совместим с Интернет, и это является Стандарт в W3C один из Важная особенность WEBRTC заключается в том, что она работает даже за адресами NAT.

Peer rebrtc в Peer

WEBRTC использует несколько технологий, чтобы обеспечить одноранговый одноранговый одноранговой связи между браузерами. Эти технологии есть * SDP (протокол описания сеанса) * Ice (Создание подключения интерактивности) * RTP (протокол в реальном времени)

Есть еще одна вещь, которая является сигнализирующим сервером для запуска webrtc. Тем не менее, нет определенного стандарта в реализации сигнализации. Каждая реализация создает свой собственный стиль. Позже даст дополнительную информацию о сигнальном сервере в этом разделе.

Давайте дадим быструю информацию о технологиях выше.

SDP (протокол описания сеанса)

SDP - это простой протокол, и он используется, для которых кодеки поддерживаются в браузерах. Например, предположим, что есть два сверстника ( клиент A и Client B ), который будет подключен через WEBRTC. клиент A и клиент B Создание строк SDP, которые определяют, какие кодеки они поддерживают. Например, Client A a может поддерживать кодеки H264, VP8 и VP9 для кодеков видео, OPUS и PCM для аудио. Client B может поддерживать только H264 для видео и только CODEC OPUS для аудио. Для этого кодеки, которые будут использоваться между клиентом a и клиентом b , являются H264 и OPUS. Если нет общего кодеков между сверстниками, одноранговая связь не может быть установлено.

У вас может возникнуть вопрос о том, как эти строки SDP отправляются между друг друга. Это где происходит сигнальный сервер.

ICE (учреждение соединения интерактивности)

Ice - это магия, которая устанавливает связь между сверстниками, даже если они позади Nat. Давайте снова предположим, что клиент a и клиент b будет подключаться и посмотрите на то, как лед используется для этого.

    .
  • клиент a выясняет их локальный адрес и общественный интернет-адрес, используя STUN Server и отправляет эти адреса клиента B через сервер сигнализации. Каждое адреса, полученные от STUN Server, называются кандидатом на льду

На изображении выше, есть два сервера. Один из них оглушивает, а другие из них - это сервер поворота.

Stun Server используется для того, чтобы позволить клиенту изучать его все адреса. Позвольте мне привести пример, наши компьютеры обычно имеют один локальный адрес в сети 192.168.0.0, и есть второй адрес, который мы видим, когда мы подключаемся к www.whatismyip.com , этот IP-адрес на самом деле является публичным IP-адресом нашего интернет-шлюза (модема, маршрутизатор и т. Д.), Итак, давайте определим STUN Server; Стухий серверы позволяет сверстникам знать их публичные и локальные IP-адреса. BTW, Google предоставляет бесплатный STUN Server (STUN.L.GOOGLE.COM:19302).

Есть еще один сервер, поворот сервера, на изображении. Поворот сервер используется, когда между одноранговыми соединениями не может быть установлено. Поверните сервер, просто решайте данные между сверстниками.

    .
  • client b делает то же самое, получает локальные и публичные IP-адреса от STUN Server и отправляет эти адреса на клиента A через сервер сигнализации.

  • клиент a получает адреса клиента b и пытается каждый IP-адреса, отправив специальные пинги, чтобы создать соединение с помощью Client Client B . Если клиент a получает ответ от любых IP-адресов, он ставит этот адрес в списке с его временем отклика и другие учетные данные. На последнем клиент A выберите лучшие адреса в соответствии с его производительностью.

  • клиент b делает то же самое, чтобы подключиться к клиенту A

RTP (протокол в реальном времени)

RTP - это зрелый протокол для передачи данных в реальном времени. Он основан на UDP. Аудио и видео передаются с RTP в WEBRTC. Существует сестра протокола RTP, которое называется RTCP

(Протокол управления в реальном времени), который предоставляет QoS в RTP. RTP также используется в RTSP (протокол потоковой передачи в реальном времени)

Сервер сигнализации

Последняя часть - это сервер сигнализации, который не определен в WEBRTC. Как упомянуто выше, сигнальный сервер используется для отправки строк SDP и кандидатов на льду между клиентом A и клиентом B . Сервер сигнализации также решает, какие сольники связаны друг с другом. Технология Websocket обычно используется в серверах сигнализации для связи.

Совместимость

За последние годы все браузеры, включая Safari, EDGE выпустили новые версии, поддерживающие WEBRTC. Chrome, Firefox и Opera уже некоторое время поддержали WEBRTC. Видеокодек, который распространен для браузеров, являются H264. Для звука OPUS распространен в браузерах. PCM также можно использовать для аудиокодека, но Aac не используется, даже если AAC поддерживается во всех браузерах из-за проблем лицензирования. IP-камеры обычно поддерживают H264 для видеокодека и PCM или AAC для аудиокодека.

Дальнейшие чтения и ссылки

Кстати, я разработчик в Ant Media Server , который поддерживает масштабируемую один коварный Webrtc и одноранговый для Peer Webrtc Соединение

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top