TURN — протокол обхода NAT с релейной передачей | Глоссарий FREEHOSTING

TURN

Traversal Using Relays around NAT
TURN — TURN (Traversal Using Relays around NAT) — протокол для обхода NAT и межсетевых экранов, обеспечивающий передачу медиаданных через промежуточный сервер-релей. Используется в WebRTC и других P2P-приложениях для стабильного соединения.

Определение простыми словами

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

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

Сравнение

Протокол Назначение Особенности Использование
STUN Определение публичного IP и порта Простой, работает при несложных NAT Для прямых соединений (P2P)
TURN Релейная передача данных через сервер Нужен выделенный сервер, нагрузка выше Когда P2P невозможен из-за жестких NAT
ICE Использование STUN и TURN для выбора маршрута Комбинирует методы, оптимизирует соединение Комплексное решение для WebRTC

Кейсы использования

  • Организация видеозвонков, когда участники находятся за разными типами NAT.
  • Передача аудио и видео в онлайн-играх и стриминговых сервисах.
  • Настройка корпоративных VoIP-платформ с поддержкой мобильных клиентов.
  • Обеспечение соединений в мессенджерах и сервисах обмена файлами.
  • Реализация защищенных P2P-сетей при строгих правилах файерволла.

Негативный пример: Использование TURN без оптимизации приводит к повышенной нагрузке на серверы и увеличению задержек, что снижает качество связи и увеличивает расходы на инфраструктуру.

Технические детали

TURN работает на основе протоколов UDP, TCP или TLS и определён в стандарте RFC 8656. Он требует наличия сервера, который выступает в роли реле, пересылающего медиа-пакеты между конечными узлами.

Команда запуска Coturn — популярного сервера TURN:

turnserver -a -o -v --realm=example.com --user=user1:password1 --listening-port=3478 --tls-listening-port=5349 --cert=/path/to/cert.pem --pkey=/path/to/pkey.pem

Для работы с TURN в WebRTC используется ICE-агент, который динамически выбирает между прямыми и релейными маршрутами.

Подробнее о TURN смотрите в STUN, ICE и Coturn.

Частые вопросы

Что такое TURN и зачем он нужен?

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

Чем TURN отличается от STUN?

STUN определяет публичный IP без реле; TURN пересылает данные через сервер при строгих NAT.

Используется ли TURN только в WebRTC?

Нет, TURN применим в любых приложениях, требующих обхода NAT для медиасоединений.