INTEGRITY Документация

Что такое TURN?

Что такое TURN?

TURN (Traversal Using Relays around NAT) представляет собой протокол, который помогает обходить трансляторы сетевых адресов (NAT) или брандмауэры для организации прямой одноранговой связи. Это расширение протокола STUN (Session Traversal Utilities for NAT), определённое в RFC 8656.

Как использовать TURN?

Подобно тому как для работы с HTTP используется веб-браузер или cURL, для работы с протоколом TURN в приложении потребуется инструмент или библиотека.

Большинство пользователей TURN применяют его в составе библиотеки WebRTC, например встроенной в браузер, или в составе Pion, webrtc-rs или libwebrtc.

Вы также можете использовать TURN напрямую в своём приложении. Pion предлагает клиентскую библиотеку TURN для Golang, как и webrtc-rs на Rust.

Ключевые понятия для понимания TURN

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

  2. TURN Server: сервер-ретранслятор, который выступает посредником для трафика между клиентами за NAT. Служба TURN в Cloudflare Realtime является примером TURN-сервера.

  3. TURN Client: приложение или устройство, использующее протокол TURN для взаимодействия через TURN-сервер. Это ваше приложение. Оно может быть веб-приложением, использующим API WebRTC, или нативным приложением для мобильных устройств или настольных компьютеров.

  4. Выделение: Когда TURN-сервер создает allocation, он резервирует уникальные для этого клиента IP-адрес и порт.

  5. Relayed Transport Address: IP-адрес и порт, зарезервированные на TURN-сервере, которые другие пользователи в интернете могут использовать для отправки данных TURN-клиенту.

Как работает TURN

  1. TURN-клиент отправляет запрос Allocate на TURN-сервер.
  2. TURN-сервер создаёт выделение и возвращает клиенту ретранслируемый транспортный адрес.
  3. После этого клиент может передать этот ретранслируемый адрес своим пирам.
  4. Когда пир отправляет данные на ретранслируемый адрес, TURN-сервер пересылает их клиенту.
  5. Когда клиент хочет отправить данные пиру, он отправляет их через TURN-сервер, который затем пересылает их пиру.

TURN против VPN

TURN работает похоже на VPN (Virtual Private Network, виртуальную частную сеть), однако серверы TURN и VPN решают разные задачи и работают по-разному.

VPN представляет собой универсальный инструмент, который шифрует весь интернет-трафик устройства, направляя его через VPN-сервер для повышения конфиденциальности, безопасности и анонимности. Он работает на сетевом уровне, затрагивает всю интернет-активность и часто используется для обхода географических ограничений или защиты соединений в публичных сетях Wi-Fi.

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

Зачем нужен TURN?

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

  1. Обход NAT: TURN позволяет устанавливать соединения между узлами, находящимися за NAT, что иначе было бы затруднительно или невозможно.

  2. Обход брандмауэра: В средах со строгими политиками брандмауэра TURN может обеспечить связь, которая иначе была бы заблокирована.

  3. Стабильная связь: TURN предлагает надежный резервный способ подключения на случай сбоя прямого или NAT-опосредованного соединения.

  4. Конфиденциальность: за счет ретрансляции трафика через TURN-сервер реальные IP-адреса взаимодействующих сторон можно скрыть друг от друга.

  5. VoIP и видеоконференции: TURN критически важен для таких приложений, как IP-телефония (VoIP) и видеоконференции, поскольку обеспечивает надежное соединение независимо от конфигурации сети.

  6. Онлайн-игры: TURN помогает онлайн-играм устанавливать одноранговые соединения между игроками, находящимися за NAT разных типов.

  7. Взаимодействие IoT-устройств: Устройства интернета вещей (IoT) могут использовать TURN для связи, когда они находятся за NAT или брандмауэрами.