Как работают звонки и видеочаты в интернете?
Когда вы звоните кому то по видеосвязи или голосом в мессенджере, браузере или мобильном приложении, программа старается соединить ваше устройство с устройством собеседника напрямую (это называется технологией WebRTC). Прямое соединение выгодно всем звук и видео передаются по кратчайшему пути с минимальной задержкой.
Однако в реальном мире прямое соединение часто оказывается невозможным. Причина этому NAT (преобразование сетевых адресов) и файрволы (брандмауэры).
Почему устройства не могут соединиться напрямую?
Представьте, что вы хотите отправить курьера с посылкой коллеге, который сидит в большом бизнес центре
- У вашего коллеги есть внутренний номер кабинета (например,
Кабинет 105в мире сетей это локальный IP-адрес вроде192.168.1.5). Но этот номер бесполезен, пока курьер не знает точный уличный адрес самого здания. - Более того, на входе в бизнес центр сидит строгая охрана (корпоративный файрвол или оператор мобильной связи 4G/5G), которая вообще не пускает курьеров с улицы без предварительной заявки изнутри.
Чтобы решить эту проблему в интернете, используются два вспомогательных протокола STUN и TURN.
1. Что такое STUN?
STUN - это легкий сервис, у которого устройство спрашивает "Подскажи, какой у меня внешний уличный адрес и номер окна с точки зрения интернета?".
- Сервер STUN смотрит на входящий запрос и отвечает "Ты выходишь в интернет с адреса
203.0.113.1, порт50000". - В простых домашних сетях этого достаточно устройства узнают внешние адреса друг друга и начинают общаться напрямую.
2. Что такое TURN?
Если хотя бы один из собеседников находится в "строгой" сети (корпоративный Wi-Fi, мобильный интернет с NAT, строгий файрвол), прямое соединение блокируется. Тогда в дело вступает TURN сервер:
- Оба участника звонка подключаются к TURN серверу, который стоит в открытом интернете и доступен всем.
- TURN сервер выделяет для звонка специальный виртуальный порт и начинает пересылать (ретранслировать) аудио и видео от одного собеседника к другому.
- Без TURN сервера примерно 15–25% звонков в реальном мире просто не смогут соединиться.
Что такое Slyber Turn Server?
Slyber Turn Server - это высокопроизводительный сервер STUN и TURN нового поколения, написанный на языке Go и являющийся частью экосистемы коммуникационного движка Slyber.
Он берет на себя самую сложную задачу в аудио и видеозвонках гарантирует, что пользователи услышат и увидят друг друга в любой сети мира.
Ключевые преимущества Slyber Turn Server:
- Все в одном бинарном файле: Сервер включает в себя STUN, TURN (по протоколам UDP, TCP и зашифрованному TLS), HTTP API для выдачи доступов, систему мониторинга, диагностику и инструмент нагрузочного тестирования.
- Автоматическое определение внешнего IP: Сервер умеет сам узнавать свой публичный IP-адрес через внешние STUN серверы.
- Безопасность: Встроенная защита от сетевых атак (SSRF), запрещающая злоумышленникам использовать ваш TURN сервер для проникновения во внутреннюю сеть компании или облачную инфраструктуру.
- Умная работа с мобильными сетями: Сервер плавно обрабатывает переключение смартфона пользователя с Wi-Fi на 4G/LTE без разрыва статистики сессии.
- Встроенный "Доктор" и "Бенчмарк": Одной командой можно проверить правильность настройки сети (
slyber_turn doctor) или провести стресс тест сервера с измерением задержек и потерь пакетов (slyber_turn bench). - Готовый API: Выдавать временные пароли для звонков можно через встроенное HTTP API.