Ответ 1
A STUN server is used to get an external network address.
TURN servers are used to relay traffic if direct (peer to peer) connection fails.
URL-адреса для серверов STUN и/или TURN (необязательно), заданные приложением WebRTC в объекте конфигурации iceServers, который является первым аргументом для конструктора RTCPeerConnection.
пример использования большего количества этого сервера:
var ICE_config= {
'iceServers': [
{
'url': 'stun:stun.l.google.com:19302'
},
{
'url': 'turn:192.158.29.39:3478?transport=udp',
'credential': 'JZEOEt2V3Qb0y27GRntt2u2PAYA=',
'username': '28224511:1379330808'
},
{
'url': 'turn:192.158.29.39:3478?transport=tcp',
'credential': 'JZEOEt2V3Qb0y27GRntt2u2PAYA=',
'username': '28224511:1379330808'
}
]
}
pc = new RTCPeerConnection(ICE_config);
Как только RTCPeerConnection имеет эту информацию, волшебство ICE происходит автоматически: RTCPeerConnection использует инфраструктуру ICE для разработки наилучшего пути между одноранговыми узлами, при необходимости работая с серверами STUN и TURN.
STUN: STUN-серверы живут в общедоступном Интернете и имеют одну простую задачу: проверьте IP-адрес порта входящего запроса (из приложения, работающего за NAT), и отправьте этот адрес в ответ. Другими словами, приложение использует STUN-сервер для обнаружения своего IP-порта с публичной точки зрения. Этот процесс позволяет одноранговому узлу WebRTC получить общедоступный адрес для себя, а затем передать его другому одноранговому узлу через механизм сигнализации, чтобы настроить прямую ссылку. (На практике разные NAT работают по-разному, и могут быть несколько слоев NAT, но принцип все тот же.)
TURN: TURN RTCPeerConnection пытается настроить прямую связь между одноранговыми узлами по протоколу UDP. Если это не удастся, RTCPeerConnection прибегает к TCP. Если это не удается, серверы TURN могут использоваться как резервные, ретранслирующие данные между конечными точками.
Просто повторить: TURN используется для ретрансляции аудио/видео/передачи данных между одноранговыми узлами, а не сигнальными данными!
Серверы TURN имеют общедоступные адреса, поэтому к ним могут быть подключены одноранговые узлы, даже если сверстники находятся за брандмауэрами или прокси. У серверов TURN есть концептуально простая задача - передать поток, но, в отличие от серверов STUN, они по своей сути потребляют большую полосу пропускания. Другими словами, серверы TURN должны быть более жесткими.
см. этот