Обход с использованием реле вокруг NAT
Эта статья нуждается в дополнительных цитатах для проверки . ( декабрь 2023 г. ) |
Обход с использованием реле вокруг NAT ( TURN ) — это протокол , который помогает проходить через трансляторы сетевых адресов (NAT) или межсетевые экраны для мультимедийных приложений. Его можно использовать с протоколом управления передачей (TCP) и протоколом пользовательских датаграмм (UDP). Это наиболее полезно для клиентов в сетях, замаскированных устройствами с симметричным NAT . TURN не помогает запускать серверы на известных портах частной сети через NAT; он поддерживает соединение пользователя за NAT только с одним узлом, как, например, в телефонии.
ПОВОРОТ определяется РФК 8656 . Схема TURN URI описана в РФК 7065 .
Введение
[ редактировать ]Трансляция сетевых адресов (NAT) — механизм, который служит мерой по смягчению проблемы исчерпания адресов IPv4 при переходе на IPv6 , сопровождается различными ограничениями. Самым неприятным среди этих ограничений является тот факт, что NAT нарушает работу многих существующих IP-приложений и затрудняет развертывание новых. [ 1 ] Были разработаны рекомендации, описывающие, как создавать протоколы, дружественные к NAT, но многие протоколы просто не могут быть созданы в соответствии с этими рекомендациями. Примеры таких протоколов включают мультимедийные приложения и обмен файлами.
Утилиты обхода сеанса для NAT (STUN) предоставляют приложению один из способов прохождения NAT. STUN позволяет клиенту получить транспортный адрес (IP-адрес и порт), который может быть полезен для получения пакетов от однорангового узла. Однако адреса, полученные STUN, могут использоваться не всеми узлами. Эти адреса работают в зависимости от топологических условий сети. Следовательно, STUN сам по себе не может обеспечить комплексное решение для обхода NAT.
Полное решение требует средств, с помощью которых клиент может получить транспортный адрес, с которого он сможет получать мультимедиа от любого узла, который может отправлять пакеты в общедоступный Интернет. Этого можно достичь только путем ретрансляции данных через сервер, расположенный в общедоступном Интернете. Обход с использованием реле вокруг NAT (TURN) — это протокол, который позволяет клиенту получать IP-адреса и порты от такого ретранслятора.
Хотя TURN почти всегда обеспечивает подключение клиента, это требует больших ресурсов для провайдера сервера TURN. Поэтому желательно использовать TURN только в крайнем случае, предпочитая другие механизмы (такие как STUN или прямое соединение), когда это возможно. Для этого можно использовать методологию интерактивного установления соединений (ICE) для обнаружения оптимальных средств подключения.
Протокол
[ редактировать ]Процесс начинается, когда клиентский компьютер хочет связаться с одноранговым компьютером для транзакции данных, но не может этого сделать, поскольку и клиент, и одноранговый узел находятся за соответствующими NAT. Если STUN не является вариантом, поскольку один из NAT является симметричным NAT (тип NAT, который, как известно, несовместим с STUN), необходимо использовать TURN.
Сначала клиент обращается к серверу TURN с запросом «Выделить». Запрос Allocate просит сервер TURN выделить некоторые из своих ресурсов для клиента, чтобы он мог связаться с одноранговым узлом. Если выделение возможно, сервер выделяет адрес клиенту для использования в качестве ретранслятора и отправляет клиенту ответ «Выделение успешное», который содержит «выделенный ретранслируемый транспортный адрес», расположенный на сервере TURN.
Во-вторых, клиент отправляет запрос CreatePermissions на сервер TURN, чтобы создать систему проверки разрешений для связи между одноранговыми серверами. Другими словами, когда с одноранговым узлом наконец связываются и отправляют информацию обратно на сервер TURN для передачи клиенту, сервер TURN использует разрешения для проверки правильности связи между одноранговыми серверами.
После создания разрешений у клиента есть два варианта отправки фактических данных: (1) он может использовать механизм отправки или (2) он может зарезервировать канал с помощью запроса ChannelBind. Механизм отправки более прост, но содержит заголовок большего размера (36 байт), что может существенно увеличить пропускную способность в ретранслируемом сеансе TURN. Напротив, метод ChannelBind легче: размер заголовка составляет всего 4 байта, но он требует резервирования канала, который, помимо прочего, необходимо периодически обновлять.
Используя любой метод, отправку или привязку канала, сервер TURN получает данные от клиента и передает их партнеру с помощью дейтаграмм UDP, которые в качестве исходного адреса содержат «выделенный ретрансляционный транспортный адрес». Узел получает данные и отвечает, снова используя дейтаграмму UDP в качестве транспортного протокола, отправляя дейтаграмму UDP на адрес ретрансляции на сервере TURN.
Сервер TURN получает одноранговую датаграмму UDP, проверяет разрешения и, если они действительны, пересылает ее клиенту.
Этот процесс обходит даже симметричные NAT, поскольку и клиент, и одноранговый узел могут, по крайней мере, общаться с сервером TURN, который выделил IP-адрес ретранслятора для связи.
Хотя TURN более надежен, чем STUN, поскольку он помогает проходить через большее количество типов NAT, связь TURN ретранслирует всю связь через сервер, требуя гораздо большей пропускной способности сервера, чем протокол STUN, который обычно разрешает только общедоступный IP-адрес и ретранслирует информацию клиенту и коллеге, чтобы они могли использовать ее в прямом общении. По этой причине протокол ICE требует использования STUN в первую очередь и использования TURN только при работе с симметричными NAT или в других ситуациях, когда STUN не может быть использован.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Мэтьюз, Филип; Розенберг, Джонатан; Махи, Рохан (апрель 2010 г.). Обход с использованием реле вокруг NAT (TURN): расширения реле для утилит обхода сеанса для NAT (STUN) (отчет). Рабочая группа по интернет-инжинирингу.