Термин

NAT (Network Address Translation)

Короткое определение

Функция роутера, делящая один публичный IPv4-адрес между многими частными устройствами. Причина, по которой WebRTC вынужден использовать STUN, TURN и ICE для установления peer-соединений.

NAT даёт домашней или офисной сети из десятков устройств доступ в интернет через один публичный IPv4. Роутер переписывает src-IP и src-port исходящих пакетов на свой публичный адрес и запоминает маппинг в таблице; входящие ответы переписываются обратно. Для HTTP и других клиент-инициированных протоколов NAT невидим: соединение всегда стартует изнутри, и маппинг всегда есть к моменту прихода ответа.

Для peer-to-peer-стриминга NAT – главная проблема. WebRTC и другие UDP-протоколы хотят, чтобы два endpoint-а говорили напрямую, но ни одна сторона не может сама инициировать соединение к другой, потому что обе сидят за NAT. STUN узнаёт публичный адрес каждой стороны, спрашивая стороннего сервера. ICE координирует обмен кандидатами и попытки прямого соединения. TURN даёт fallback-relay, когда прямое не получается – обычно 10–20 % WebRTC-сессий в продакшене. RFC 8445 (июль 2018) стандартизовал этот танец как ICE.

NAT бывает нескольких типов: full cone (самый разрешающий), restricted cone, port-restricted cone и symmetric (самый ограничивающий). Symmetric NAT – типичен для корпоративных и сотовых 4G/5G сетей – назначает разный внешний порт каждому назначению, ломая hole punching только через STUN и принуждая к TURN. Эксплуатация WebRTC-сервиса обязана закладывать TURN-трафик на процент сессий, которым не удалось спариться напрямую.

Считаете параметры для своего продукта?

Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.