Каким образом STUN выполняет проверку подключения ICE к кандидатским парам? - PullRequest
0 голосов
/ 04 ноября 2018

Я прошел через RFC 5389 и RFC 5245 и более новый RFC 8445. Я понимаю, как работает STUN при возврате рефлексивного адреса сервера или ретранслируемого адреса. Запрос отправляется на сервер STUN.

Мой фундаментальный вопрос касается проверки подключения ICE с использованием STUN. RFC 8445 сообщает на странице 10:

"...At the end of
this process, each ICE agent has a complete list of both its
candidates and its peer's candidates.  It pairs them up, resulting in
candidate pairs.  To see which pairs work, each agent schedules a
series of connectivity checks.  Each check is a STUN request/response
transaction that the client will perform on a particular candidate
pair by sending a STUN request from the local candidate to the remote
candidate."

Для проверки проверок возможности соединения на парах-кандидатах в сообщении STUN должно быть указано минимальное значение для целевого IP-адреса, Port, Proto. Где описана эта структура сообщения STUN? Где я могу получить подробную информацию о том, как STUN выполняет эту проверку подключения?

1 Ответ

0 голосов
/ 06 ноября 2018

Вы найдете структуру сообщения STUN, описанную в RFC-5389, раздел 6. https://tools.ietf.org/html/rfc5389#page-10.

Известные кусочки описания:

сообщения STUN кодируются в двоичном формате с использованием сетевого формата (самый старший байт или октет первым, также известный как большой обратный порядок байт). Порядок передачи подробно описан в Приложении B RFC 791 [RFC0791]. Если не указано иное, числовые константы в десятичном виде (основание 10).

Все сообщения STUN ДОЛЖНЫ начинаться с 20-байтового заголовка, за которым следует ноль или более атрибутов. Заголовок STUN содержит тип сообщения STUN, Волшебное печенье, идентификатор транзакции и длина сообщения.

Наиболее значимые 2 бита каждого сообщения STUN ДОЛЖНЫ быть нулями. Это может использоваться, чтобы отличить пакеты STUN от других протоколов когда STUN мультиплексируется с другими протоколами на том же порту.

Тип сообщения определяет класс сообщения (запрос, успех ответ, отказ или ответ) и метод сообщения (основная функция) сообщения STUN. Хотя есть четыре классы сообщений, в STUN есть только два типа транзакций: транзакции запрос / ответ (которые состоят из сообщения запроса и ответное сообщение) и индикация транзакций (которые состоят из одно сообщение индикации). Классы ответов делятся на ошибки и успешные ответы, помогающие быстро обработать сообщение STUN.

...