TURN: различия между версиями

Материал из in.wiki
Перейти к навигации Перейти к поиску
 
(не показано 8 промежуточных версий 2 участников)
Строка 1: Строка 1:
'''Traversal Using Relay NAT (TURN)''' — это протокол, который позволяет узлу за [[NAT]] или брандмауэром получать входящие данные через [[TCP]] или [[UDP]] соединения. Такая возможность особенно актуальна для узлов позади [[Network address translation#Symmetric NAT|симметричных NAT]], или брандмауэров, которые собираются стать принимающей стороной в соединении с одним конкретным узлом (peer-ом).
+
'''Traversal Using Relay around NAT (TURN)''' — это протокол, который позволяет узлу за [[NAT]] или брандмауэром получать входящие данные через [[TCP]]- или [[UDP]]- соединения. Такая возможность особенно актуальна для узлов позади [[Network address translation#Symmetric NAT|симметричных NAT]], или брандмауэров, которые собираются стать принимающей стороной в соединении с одним конкретным узлом (peer-ом).
  
 
TURN не предназначен для проброса портов [[Сервер (программное обеспечение)|сервера]] через NAT, он поддерживает соединения точка-точка между узлами расположенными за NAT (как в [[IP-телефония|IP-телефонии]]).
 
TURN не предназначен для проброса портов [[Сервер (программное обеспечение)|сервера]] через NAT, он поддерживает соединения точка-точка между узлами расположенными за NAT (как в [[IP-телефония|IP-телефонии]]).
Строка 5: Строка 5:
 
В этом плане он сохраняет функции безопасности, обеспеченные симметричным NAT и [[Межсетевой экран|брандмауэрами]], но меняет таблицы трансляции так, чтобы узел на внутренней стороне мог стать принимающей стороной соединения.
 
В этом плане он сохраняет функции безопасности, обеспеченные симметричным NAT и [[Межсетевой экран|брандмауэрами]], но меняет таблицы трансляции так, чтобы узел на внутренней стороне мог стать принимающей стороной соединения.
  
Протокол TURN описан в RFC 5766, обновление TURN для поддержки IPv6 описано в RFC 6156. Схема URI для TURN документирована в RFC 7065.
+
Протокол TURN описан в [[Документ:RFC 5766|RFC 5766]], обновление TURN для поддержки IPv6 описано в [[Документ:RFC 6156|RFC 6156]]. Схема URI для TURN документирована в [[Документ:RFC 7065|RFC 7065]].
  
== Введение ==
+
TURN тесно связан с аналогичным, но более простым протоколом [[STUN]] и является частью [[Interactive Connectivity Establishment]]  ([[ICE (сетевая технология)|ICE]]) - набора технологий, разработанных [[IETF]] для обеспечения связи компьютерных устройств в режиме точка-точка.
  
NAT, обладая массой преимуществ, включает и много недостатков. Самым существенным из которых является нарушение работы многих существующих сетевых приложений, и сложности с разработкой новых. Были разработаны рекомендации, которые описывают, как разрабатывать дружественные с NAT протоколы, но многие протоколы просто не могут быть построены в соответствии с этими рекомендациями. В качестве примера таких протоколов служат мультимедийные приложения и совместное использование файлов.
+
== Как работает TURN ==
 +
TURN целесообразно использовать в тех случаях, когда использование STUN невозможно<ref>В силу технического отсутствия сервера STUN, или в силу того, что оба узла сети, пытающиеся коммуницировать, находятся за NAT и имеют только локальные IP-адреса.</ref>, так как этот протокол выдвигает большие требования к пропускной способности сервера.
  
Session Traversal Utilities for NAT ([[STUN]]) предусматривает один из способов прохождения NAT. STUN позволяет клиенту получить транспортный адрес (IP адрес и порт), который может быть полезен для приема пакетов от peer-ов. Однако адреса, полученные через STUN, не могут быть доступны всем peer-ам. Эти адреса работают в зависимости от топологии сети. Таким образом, STUN сам по себе не может обеспечить комплексное решение для обхода NAT.
+
Также как и в случае протокола STUN, TURN-агент со стороны клиента, обращается к TURN-серверу с просьбой предоставить [[публичный IP]] и [[Порт (сетевые протоколы)|порт]] для работы соединения. TURN-сервер возвращает свои IP и порт. Вторая сторона P2P соединения действует также. После установления соединения TURN-сервер работает в качестве [[Прокси-сервер|прокси-сервера]].
 
 
Законченное решение требует средств, с помощью которых клиент мог бы получить транспортный адрес, на который он мог бы получать поток данных от любого peer-а который может передавать пакеты данных в публичный интернет. Это может быть достигнуто лишь путём ретрансляции данных через сервер, который находится в общедоступном Интернете. Эта спецификация описывает Traversal Using Relay NAT (TURN), протокол, который позволяет клиенту получить IP-адреса и порты от таких peer-ов.
 
 
 
Хотя TURN будет почти всегда обеспечивать подключение к клиенту, он создает большую нагрузку на провайдера TURN-сервера. Поэтому рекомендуется использовать TURN только в крайнем случае, предпочитая другие механизмы (например, STUN или прямое подключение), когда это возможно. Для достижения этого может использоваться методология Interactive Connectivity Establishment (ICE), чтобы найти оптимальное средство связи.
 
  
 +
== Ссылки ==
  
 +
* [https://samag.ru/archive/article/2017 Всё, что вы хотели знать о протоколе SIP] - содержит общее описание работы TURN
 +
* [https://habr.com/ru/companies/dataart/articles/282612/ P2P в браузере] - описание применения TURN в инфраструктуре [[WebRTC]].
 +
* [https://voxlink.ru/kb/asterisk-configuration/obzor-protokolov-stun-turn-i-ice-ih-principy-raboty-s-nat-i-ispolzovanie-dlja-voip/ Денис Здесенко. Обзор протоколов STUN, TURN и ICE, их принципы работы с NAT и использование для VoIP. 09.01.2020.]
  
 +
== Примечания ==
 
[[Категория:TCP/IP]]
 
[[Категория:TCP/IP]]
 
[[Категория:Сетевые протоколы]]
 
[[Категория:Сетевые протоколы]]
 
[[Категория:NAT]]
 
[[Категория:NAT]]
 
[[Категория:IP-телефония]]
 
[[Категория:IP-телефония]]

Текущая версия от 02:01, 21 августа 2023

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

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

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

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

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

Как работает TURN[править | править код]

TURN целесообразно использовать в тех случаях, когда использование STUN невозможно[1], так как этот протокол выдвигает большие требования к пропускной способности сервера.

Также как и в случае протокола STUN, TURN-агент со стороны клиента, обращается к TURN-серверу с просьбой предоставить публичный IP и порт для работы соединения. TURN-сервер возвращает свои IP и порт. Вторая сторона P2P соединения действует также. После установления соединения TURN-сервер работает в качестве прокси-сервера.

Ссылки[править | править код]

Примечания[править | править код]

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