2015-08-30 9 views
5

У меня есть MCU WebRTC (kurento), работающий на общедоступном IP-адресе , обслуживающий некоторых клиентов, которые только отправляют или получают только звук . Таким образом, каждый клиент напрямую связан с MCU (не друг с другом), который имеет общедоступный IP-адрес.Является ли ICE необходимым для клиент-серверных приложений WebRTC?

Q1: Есть ли необходимость использовать STUN и TURN для обхода NAT? если да Почему ???
Q2: Есть ли какой-либо взлом в WebRTC в браузере, который бы устранил необходимость в STUN и TURN?

На мой взгляд: у большинства клиент-серверных архитектур нет никаких проблем с клиентами за NAT. Какая разница здесь с webrtc?

ответ

4

Да ICE абсолютно необходимо для WebRTC.

Q1: Есть ли необходимость использовать STUN и TURN для обхода NAT ?? если да Почему ???

Для вашего сценария вы не нужно использовать STUN или TURN. Позвольте мне объяснить, почему.

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

Так что если ваш сервер хочет инициировать подключение, ему необходимо, чтобы клиент отправил публичный IP-адрес NAT. Клиент будет использовать STUN-сервер, чтобы узнать свой публичный IP-адрес и отправить его на сервер. Но если клиент инициирует соединение, тогда нет необходимости знать публичный IP-адрес NAT. Клиент может отправлять пакеты на общедоступный сервер, чтобы инициировать соединение. Сервер может знать общедоступный IP-адрес culents из пакета клиентов, а затем они могут подключаться. Поэтому нет необходимости в STUN.

Ваш сервер выполняет роль TURN в этом сценарии. Поэтому вам не нужен сервер TURN.

Q2: Есть ли какие-либо взломы в WebRTC в браузере, которые устраняют необходимость использования STUN и TURN?

Нельзя взломать. В зависимости от сценариев используется TURN/STUN. Для вашего сценария вам не нужно. Если вы хотите создать клиент-клиентское соединение, вам понадобится сервер STUN.

+0

Как мне реализовать клиент, чтобы он инициировал соединение webrtc? Похоже, у нас нет контроля над тем, кто начнет работу в webrtc! –

+0

Вы пишете приложение, вы решаете, кто отправит предложение. –

+0

ICE работает с предложением, модель ответа. Предложение отправки посылки - это тот, кто инициирует соединение. Предложение отправки по одному концу означает отправку описания сеанса, которое на самом деле является информацией об IP-адресах, на другом конце. Когда другой конец получает, он генерирует свое собственное описание сеанса, которое называется ответом и отправляет его на другой конец. После этого начнется проверка льда. Таким образом, у вас должен быть доступ к конечному и клиентскому терминалу. С вашего конечного кода клиента вам необходимо отправить предложение на сервер, а с вашего конечного кода сервера получить это предложение и сгенерировать и отправить ответ обратно клиенту. – Tahlil

1
  • ICE является обязательным
  • но с использованием любого оглушения и превратить сервер не является.
  • Поскольку вы подключаетесь к серверу в общедоступном порту, вам НИКОГДА не нужно использовать сервер TURN, но в зависимости от типа NAT/брандмауэра, который у вас есть, вам может понадобиться сервер STUN
  • вам не нужен для изменения браузеров вообще. Приложение решает, чтобы использовать оглушающий сервер или нет. если вы передадите пустой объект «iceservers» вашему объекту peerconnection при создании, ICE UA в вашем браузере будет генерировать только принимающих (локальных) кандидатов.
+0

Как настроить RTCPearConnetion на клиенте и сервере, чтобы мой MCU работал как TURN? –

+0

Вам не нужен ваш MCU, чтобы действовать как поворот. Не нужно использовать все эти дополнительные механизмы. Ваш MCU сидит по общему адресу, поэтому ICE (или ICE-Lite) достаточно. Ваш сервер сигнализации может сообщить каждому клиенту, который подключается к нему, чтобы инициировать рукопожатие (т. Е. Отправить предложение) вашему MCU. –

Смежные вопросы