Из Википедии, бесплатной энциклопедии
  (Перенаправлено из обхода с использованием Relay NAT )
Перейти к навигации Перейти к поиску

Обход с использованием реле вокруг NAT ( TURN ) - это протокол, который помогает в обходе трансляторов сетевых адресов (NAT) или межсетевых экранов для мультимедийных приложений. Его можно использовать с протоколом управления передачей (TCP) и протоколом пользовательских дейтаграмм (UDP). Это наиболее полезно для клиентов в сетях, замаскированных симметричными устройствами NAT . TURN не помогает запускать серверы на хорошо известных портах частной сети через NAT; он поддерживает подключение пользователя за NAT только к одному узлу, как, например, в телефонии.

TURN указан в RFC  8656 . Схема TURN URI задокументирована в RFC 7065 . 

Введение [ править ]

NAT, предоставляя преимущества, также имеет недостатки. Самый неприятный из этих недостатков заключается в том, что они нарушают работу многих существующих IP-приложений и затрудняют развертывание новых. Были разработаны руководства, описывающие, как создавать протоколы, "дружественные к 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 использует разрешения для проверки правильности связи между одноранговым сервером TURN.

После создания разрешений у клиента есть два варианта отправки фактических данных: (1) он может использовать механизм отправки или (2) он может зарезервировать канал с помощью запроса ChannelBind. Механизм отправки более прост, но содержит заголовок большего размера, 36 байтов, который может существенно увеличить пропускную способность в ретранслируемом диалоге TURN. Напротив, метод ChannelBind легче: заголовок составляет всего 4 байта, но для него требуется зарезервировать канал, который, помимо прочего, необходимо периодически обновлять.

Используя любой метод, Send или привязку канала, сервер TURN получает данные от клиента и ретранслирует их одноранговому узлу, используя дейтаграммы UDP, которые содержат в качестве своего адреса источника «выделенный адрес ретрансляции транспорта». Одноранговый узел получает данные и отвечает, снова используя дейтаграмму UDP в качестве транспортного протокола, отправляя дейтаграмму UDP на адрес ретранслятора на сервере TURN.

Сервер TURN получает одноранговую дейтаграмму UDP, проверяет разрешения и, если они действительны, пересылает их клиенту.

Этот процесс обходит даже симметричные NAT, потому что и клиент, и одноранговый узел могут, по крайней мере, разговаривать с сервером TURN, который выделил IP-адрес ретранслятора для связи.

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

См. Также [ править ]

Внешние ссылки [ править ]