Перейти к основному содержимому

04-02-01 Сигналинг: зачем нужен отдельный протокол управления сессией

04-02-01

В предыдущих лекциях вы познакомились с медиапротоколами, такими как RTP, RTSP, SRT и HLS, которые отвечают за передачу аудио- и видеоданных. Однако при переходе от одностороннего стриминга (например, трансляции с камеры на YouTube) к интерактивной видеосвязи (например, видеозвонку в Zoom или WebRTC) возникает множество новых задач, которые не может решить один лишь медиатранспорт. Для их решения требуется отдельный уровень — сигналинг.

Что такое сигналинг?

Сигналинг — это протокол управления сессией, который не передаёт медиаданные напрямую, но отвечает за организацию, настройку и завершение сеанса связи. Его задача — согласовать все параметры соединения до начала передачи видео и звука, а также управлять этим соединением во время его работы.

Представьте, что вы хотите позвонить коллеге. Просто начать говорить в пустоту бессмысленно — сначала нужно:

  • Узнать, где он находится (его номер или адрес),
  • Позвонить ему (отправить приглашение),
  • Дождаться ответа (подтверждение),
  • Договориться, на каком языке говорить (аудиокодек),
  • И, наконец, начать разговор.

Сигналинг выполняет все эти шаги в мире цифровой связи.


Основные задачи сигналинга

1. Поиск и адресация участников

Чтобы установить связь, один участник должен найти другого. Для этого используется уникальный идентификатор, например:

  • Номер телефона (в традиционной телефонии),
  • SIP-адрес вида user@domain.com (аналог электронной почты),
  • Имя пользователя в мессенджере.

Этот идентификатор позволяет системе определить, куда направить приглашение на вызов.

Пример:
Вы нажимаете "Позвонить" в Zoom, вводя email коллеги. Система использует этот email как идентификатор для поиска его устройства и отправки сигнала приглашения.


2. Установление и завершение вызова

Сигналинг отвечает за жизненный цикл сессии:

  • Начало вызова: отправка приглашения (например, командой INVITE в SIP),
  • Подтверждение: получатель отвечает, принимая или отклоняя вызов,
  • Завершение: один из участников отправляет сигнал завершения (например, BYE), и соединение закрывается.

Это похоже на набор номера, гудки, разговор и "положить трубку".

Аналогия из повседневной жизни:
Как при звонке по телефону — вы набираете номер (INVITE), слышите гудки (Ringing), собеседник берёт трубку (200 OK), вы разговариваете, а потом один из вас кладёт трубку (BYE).


3. Переговоры о параметрах медиа

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

ПараметрОписание
Поддерживаемые кодекиКакие аудио- и видеокодеки может использовать каждый участник (например, H.264, VP8, Opus)?
Направление потоковБудет ли участник только отправлять видео (sendonly), только получать (recvonly), или и то, и другое (sendrecv)?
IP-адреса и портыПо каким сетевым адресам и портам будет происходить передача медиа?
Тип транспортаБудет ли использоваться UDP (обычно для RTP), TCP или что-то иное?
Профили и уровни кодековНапример, для H.264 — profile-level-id, packetization-mode и т.д.

Этот обмен происходит с помощью SDP (Session Description Protocol), который передаётся в теле сигнальных сообщений (например, внутри SIP-запроса INVITE).

Пример:
Участник А говорит: «Я могу принимать видео в H.264, разрешением до 1080p, и аудио в Opus».
Участник Б отвечает: «Я тоже поддерживаю H.264 и Opus, давайте использовать эти кодеки. Мой IP — 192.168.1.100, порт 5004 для видео».
Теперь оба знают, как и куда отправлять медиаданные.


4. Управление состоянием сессии

Даже после начала вызова может потребоваться его изменение. Сигналинг позволяет управлять сессией в реальном времени:

  • Перевести вызов на удержание (hold),
  • Передать вызов другому участнику (transfer),
  • Отключить микрофон или камеру (mute/unmute),
  • Добавить нового участника в конференцию.

Эти действия реализуются через дополнительные сигнальные сообщения, которые обновляют параметры сессии.

Пример:
Во время видеоконференции вы нажимаете «Отключить микрофон». Это не останавливает медиапоток физически, а отправляет сигнальное сообщение, которое информирует систему: «Теперь мой аудиопоток — recvonly (только приём) или inactive (неактивен)».


Почему RTSP недостаточен для видеосвязи?

Ранее в курсе вы изучали RTSP (Real-Time Streaming Protocol) — протокол, который также управляет воспроизведением потока. На первый взгляд, RTSP похож на сигналинг. Однако его возможности ограничены сценарием одностороннего стриминга от сервера к клиенту, как при просмотре камеры через VLC.

Основные ограничения RTSP:

  • Нет поддержки двустороннего обмена медиа (например, ваш микрофон → собеседнику),
  • Нет механизма поиска и адресации участников (RTSP работает по URL, а не по идентификатору пользователя),
  • Нет гибких переговоров о параметрах (например, выбор общего кодека),
  • Нет поддержки управления конференцией (добавление участников, передача вызова и т.д.).

Таким образом, RTSP — это частный случай управления потоком, тогда как сигналинг в видеосвязи — это полноценный протокол управления коммуникацией.


Современные протоколы сигналинга

Для решения всех перечисленных задач используются специализированные сигнальные протоколы:

1. SIP (Session Initiation Protocol)

  • Где используется: корпоративные системы видеоконференцсвязи (ВКС), IP-телефония (VoIP), IP-АТС.
  • Особенности:
    • Стандартизирован IETF,
    • Работает поверх UDP/TCP,
    • Использует SIP-URI (sip:user@domain),
    • Интегрируется с SDP для описания медиа.

Пример:
Аппаратный видеотерминал от Cisco регистрируется на SIP-сервере с адресом john@company.com и принимает вызовы по этому адресу.

2. Веб-сигналинг (в контексте WebRTC)

  • Где используется: браузерные видеозвонки (Google Meet, Zoom в браузере, Jitsi).
  • Особенности:
    • Не стандартизирован — разработчик сам выбирает технологию передачи сигнала (часто WebSocket поверх HTTPS),
    • Используется для обмена SDP-описаниями (offer/answer) и ICE-кандидатами,
    • Работает в связке с медиастеком WebRTC.

Пример:
При открытии ссылки на видеоконференцию в браузере JavaScript-приложение через WebSocket отправляет сигнал "Я хочу присоединиться" на сервер, получает от него SDP-описание других участников и начинает установку соединения.


Итог: сигналинг — основа интерактивной связи

Сигналинг — это критически важный уровень в архитектуре видеосвязи. Он обеспечивает:

  • Поиск и идентификацию участников,
  • Установление и завершение вызова,
  • Согласование параметров медиа,
  • Управление сессией в реальном времени.

Без сигналинга невозможно построить ни один интерактивный сервис — от простого видеозвонка до сложной многопользовательской конференции.

Хотя сигналинг не передаёт само видео и звук, он создаёт все условия для их корректной и безопасной передачи по протоколам вроде RTP/RTCP и SRTP, которые мы рассмотрим далее.

Ключевое понимание:
Сигналинг — это "дирижёр" оркестра видеосвязи: он не играет на инструментах (не передаёт медиа), но решает, кто, когда и как должен играть.