Traversal Using Relay NAT

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Traversal Using Relay NAT (TURN) — это протокол, который позволяет узлу за NAT или брандмауэром получать входящие данные через TCP или UDP соединения. Такая возможность особенно актуальна для узлов позади симметричных NAT, или брандмауэров, которые собираются стать принимающей стороной в соединении с одним конкретным узлом (peer-ом).

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

В этом плане он сохраняет функции безопасности, обеспеченные симметричным NAT и брандмауэрами, но меняет таблицы трансляции так, чтобы узел на внутренней стороне мог стать принимающей стороной соединения.

Протокол TURN описан в RFC 5766, обновление TURN для поддержки IPv6 описано в RFC 6156. Схема URI для TURN документирована в RFC 7065.

Введение[править | править вики-текст]

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

Session Traversal Utilities for NAT (STUN) предусматривает одно средство для прохождения NAT. STUN позволяет клиенту получить транспортный адрес (IP адрес и порт), который может быть полезен для приема пакетов от peer-ов. Однако адреса, полученные через STUN, не могут быть доступны всем peer-ам. Эти адреса работают в зависимости от топологии сети. Таким образом, STUN сам по себе не может обеспечить комплексное решение для обхода NAT.

Законченное решение требует средств, с помощью которых клиент мог бы получить транспортный адрес, на который он мог бы получать поток данных от любого peer-а который может передавать пакеты данных в публичный интернет. Это может быть достигнуто лишь путем ретрансляции данных через сервер, который находится в общедоступном Интернете. Эта спецификация описывает Traversal Using Relay NAT (TURN), протокол, который позволяет клиенту получить IP-адреса и порты от таких peer-ов.

Хотя TURN будет почти всегда обеспечивать подключение к клиенту, он создает большую нагрузку на провайдера TURN-сервера. Поэтому рекомендуется использовать TURN только в крайнем случае, предпочитая другие механизмы (например, STUN или прямое подключение), когда это возможно. Для достижения этого может использоваться методология Interactive Connectivity Establishment (ICE), чтобы найти оптимальное средство связи.