Spec-Zone.ru › Web APIs

Введение в протоколы WebRTC

В этой статье представлены протоколы, на базе которых построена API WebRTC.

ICE

Interactive Connectivity Establishment (ICE) — это фреймворк, позволяющий вашему веб-браузеру подключаться к другим участникам. Существует много причин, по которым прямое соединение от участника A к участнику B не сработает. Необходимо обойти межсетевые экраны, которые препятствуют открытию подключений, получить уникальный адрес, если, как в большинстве случаев, у вашего устройства нет публичного IP-адреса, и передавать данные через сервер, если ваш маршрутизатор не позволяет вам напрямую подключаться к другим участникам. ICE использует серверы STUN и/или TURN для достижения этой цели, как описано ниже.

STUN

Session Traversal Utilities for NAT (STUN) — это протокол для определения вашего публичного адреса и выявления любых ограничений в вашем маршрутизаторе, которые препятствуют прямому подключению к другому участнику.

Клиент отправит запрос на сервер STUN в интернете, который ответит публичным адресом клиента и укажет, доступен ли клиент за NAT маршрутизатора.

An interaction between two users of a WebRTC application involving a STUN server.

NAT

Network Address Translation (NAT) используется для присвоения вашему устройству публичного IP-адреса. Маршрутизатор будет иметь публичный IP-адрес, а каждое подключенное к нему устройство — частный IP-адрес. Запросы будут переведены с частного IP-адреса устройства на публичный IP-адрес маршрутизатора с уникальным портом. Таким образом, вам не нужен уникальный публичный IP-адрес для каждого устройства, но вы все равно можете быть обнаружены в интернете.

Некоторые маршрутизаторы могут накладывать ограничения на то, кто может подключаться к устройствам в сети. Это может означать, что даже если сервер STUN обнаружил публичный IP-адрес, не любой может установить подключение. В этой ситуации нам необходимо использовать TURN.

TURN

Некоторые маршрутизаторы с NAT используют ограничение под названием «симметричный NAT». Это означает, что маршрутизатор будет принимать подключения только от тех участников, с которыми вы ранее были подключены.

Traversal Using Relays around NAT (TURN) предназначен для обхода ограничения симметричного NAT, открывая подключение к серверу TURN и передавая всю информацию через этот сервер. Вы создадите подключение с сервером TURN и сообщите всем участникам отправлять пакеты на сервер, который затем перенаправит их вам. Это, очевидно, влечёт некоторую дополнительную нагрузку, поэтому используется только в случае отсутствия альтернатив.

An interaction between two users of a WebRTC application involving STUN and TURN servers.

SDP

Session Description Protocol (SDP) — это стандарт для описания мультимедийного содержимого соединения, такого как разрешение, форматы, кодеки, шифрование и т. д., чтобы оба участника понимали друг друга после начала передачи данных. По сути, это метаданные, описывающие содержимое, а не само медиасодержимое.

Технически SDP не является протоколом, а форматом данных, используемым для описания соединений, которые обмениваются медиа между устройствами.

Документирование SDP выходит за рамки этой документации; однако здесь стоит отметить несколько моментов.

Структура

SDP состоит из одной или нескольких строк текста UTF-8, каждая из которых начинается с символа типа, за которым следует знак равенства ("="), а за ним следует структурированный текст, содержащий значение или описание, формат которого зависит от типа. Строки текста, начинающиеся с определенной буквы, обычно называются "буквенными строками". Например, строки, предоставляющие описания медиа, имеют тип "m", поэтому эти строки называются "m-строками".

Дополнительная информация

Для получения дополнительной информации об SDP, ознакомьтесь со следующими полезными ресурсами:

  • Спецификация: RFC 8866: SDP: Session Description Protocol
  • Реестр IANA параметров SDP

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Protocols

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API