Нужен ли ICE для приложений клиент-сервер WebRTC?

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

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

По моему мнению: большинство клиент-серверных архитектур не имеют никаких проблем с клиентами за NAT . В чем разница с webrtc?

2 ответа

Решение

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

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

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

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

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

Ваш сервер выполняет роль TURN в этом сценарии. Таким образом, вам не нужен сервер TURN.

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

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

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