Нужен ли 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 в вашем браузере будет генерировать только хост (локальные) кандидаты.