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

Карта стека видеосвязи: как протоколы объединяются в единую систему

04-06-01

На этом слайде представлена обобщённая архитектурная схема стека протоколов видеосвязи, построенная поверх уже знакомых медиапротоколов. Цель слайда — помочь студенту сформировать целостное представление о том, как отдельные протоколы, каждый из которых решает свою узкую задачу, объединяются в слаженную систему, обеспечивающую интерактивную видеосвязь. Эта схема станет «картой местности» на весь курс: каждый уровень будет подробно изучаться в последующих лекциях, а знания пригодятся при работе с IP-камерами, медиасерверами, ONVIF, FFMPEG и GStreamer.

Далее коротко повторим, что рассмотрели в этой теме.


Базовый уровень: сетевые протоколы IP, UDP и TCP

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

  • IP (Internet Protocol) — протокол, отвечающий за адресацию и маршрутизацию пакетов. Он определяет, куда отправляется информация, используя IP-адреса (например, 192.168.1.10 или 203.0.113.5). Без IP невозможно представить интернет.
  • UDP (User Datagram Protocol) — протокол передачи данных, который работает быстро, но без гарантий. Он не проверяет, дошёл ли пакет, и не пересылает утерянные. Это делает UDP идеальным для передачи медиапотоков, где важна низкая задержка, а потеря отдельных пакетов допустима (например, один «битый» кадр в видео).
  • TCP (Transmission Control Protocol) — более надёжный протокол, обеспечивающий гарантированную доставку. Если пакет потерян, TCP запросит его повторную передачу. Однако из-за этого он медленнее и не подходит для прямой передачи видео/аудио, но отлично работает для передачи служебной информации — например, текстовых сообщений сигналинга.

💡 Пример: Представьте, что вы отправляете письмо.

  • TCP — как заказное письмо с уведомлением о вручении: вы точно знаете, что получатель его получил.
  • UDP — как обычная открытка: быстро и дёшево, но если она потеряется — вы об этом не узнаете.
    Для видеосвязи выбирают «открытки», чтобы не ждать повторной отправки — иначе голос будет запаздывать.

Уровень медиатранспорта: RTP, RTCP и SRTP

Над базовыми сетевыми протоколами располагается уровень медиатранспорта — именно он отвечает за передачу аудио и видео в реальном времени.

RTP (Real-time Transport Protocol)

RTP — это протокол, разработанный специально для потоковой передачи мультимедиа. Он добавляет к данным UDP метаданные: временные метки, номера пакетов, тип содержимого. Это позволяет:

  • Восстановить правильную последовательность пакетов (если они пришли не по порядку).
  • Синхронизировать аудио и видео (например, чтобы губы говорящего совпадали с его голосом).
  • Определить, какой кодек используется (например, Opus для аудио или H.264 для видео).

📌 Важно: RTP сам по себе не гарантирует доставку — он полагается на UDP. Его задача — не доставить всё, а доставить своевременно.

RTCP (RTP Control Protocol)

RTCP — это «наблюдатель» за RTP. Он не передаёт медиаданные, а отправляет служебную статистику:

  • Сколько пакетов потеряно?
  • Какой уровень задержки (jitter)?
  • Какова пропускная способность канала?

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

SRTP (Secure RTP)

SRTP — это защищённая версия RTP. Он добавляет шифрование, аутентификацию и защиту от подделки пакетов. В современных системах видеосвязи (например, Zoom, WebRTC, SIP с шифрованием) весь медиатрафик передаётся по SRTP, чтобы никто посторонний не мог прослушать разговор или подменить видео.

🔐 Аналогия: Если RTP — это открытый телефонный разговор, то SRTP — это разговор по защищённой линии с шифрованием.


Параллельные направления: доставка контента и видеосвязь

Выше уровня медиатранспорта стек разделяется на два параллельных направления, отражающих разные сценарии использования:


Направление 1: Протоколы доставки контента

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

ПротоколНазначениеПример использования
RTMPПередача потока с кодера в CDN или платформу (YouTube, Twitch)Прямая трансляция с камеры на YouTube
HLSАдаптивная доставка видео в браузеры и мобильные приложенияПросмотр видео на сайте через Safari или Chrome
SRTНадёжная передача видео по ненадёжным каналам (например, 4G)Трансляция из поля с мобильной связи
NDIРабота с IP-видео в локальной студийной сетиОбмен видео между камерами и видеомикшером по Ethernet

🧩 Эти протоколы не решают задачи видеосвязи — они не поддерживают двустороннюю коммуникацию, сигналинг или NAT-обход. Но они используют те же медиатехнологии (например, RTP внутри SRT), что делает их частью общей экосистемы.


Направление 2: Стек видеосвязи

Это набор протоколов, необходимых для интерактивной, двусторонней видеосвязи — таких как видеозвонки, конференции, чаты.

SIP (Session Initiation Protocol)

SIP — это «протокол переговоров». Он отвечает за:

  • Установление вызова («INVITE»).
  • Поиск собеседника (по номеру или адресу user@domain).
  • Завершение сессии («BYE»).
  • Управление вызовом (удержание, перевод, добавление участников).

📞 SIP — как телефонный коммутатор: он не передаёт голос, но организует, между кем и как будет происходить разговор.

SDP (Session Description Protocol)

SDP — это «язык описания сессии». Он передаётся внутри SIP-сообщений и содержит:

  • Какие медиапотоки используются (аудио, видео, экран).
  • Какие кодеки поддерживает каждая сторона.
  • На какие IP-адреса и порты отправлять RTP-пакеты.
  • Направление потока (отправлять, принимать, или и то, и другое).

🧾 SDP — как техническое ТЗ на видеосвязь: «Мы будем говорить на Opus, с разрешением 1280x720, кодек H.264, profile=baseline, и отправлять поток на 192.168.1.20:5004».

WebRTC-сигналинг

WebRTC — это технология браузерной видеосвязи. Она не стандартизует сигналинг, то есть разработчик сам решает, как обмениваться SDP и ICE-кандидатами. Обычно используется:

  • WebSocket
  • HTTP API
  • Проприетарные серверы

🌐 Например, когда вы нажимаете «начать звонок» в Google Meet, браузер отправляет SDP через WebSocket на сервер, который передаёт его собеседнику.

STUN, TURN и ICE — преодоление сетевых барьеров

Одна из главных проблем видеосвязи — NAT (Network Address Translation). Большинство устройств находятся за роутерами и имеют приватные IP-адреса (например, 192.168.x.x), которые не видны из интернета. Чтобы установить прямое соединение, нужны специальные протоколы:

ПротоколНазначениеПример
STUNПомогает устройству узнать свой внешний IP и порт«Привет, STUN-сервер! Какой у меня публичный адрес?» → «Ты 203.0.113.5:54321»
TURNРетранслятор: если прямое соединение невозможно, трафик идёт через серверКак курьер: «Я не могу доставить пакет напрямую — отправлю через посредника»
ICEАлгоритм выбора наилучшего пути: сначала пробует STUN, потом TURN«Попробую напрямую → не получилось → попробую через TURN → работает!»

🛠️ Практический пример:
Два пользователя за разными роутерами хотят начать видеозвонок.

  1. Каждый запрашивает у STUN-сервера свой внешний адрес.
  2. Через сигналинг обмениваются SDP и ICE-кандидатами (списком возможных путей).
  3. ICE-алгоритм проверяет все комбинации — и выбирает самый быстрый рабочий путь.
  4. Если прямое соединение заблокировано — используется TURN-сервер.

Зачем это всё нужно: инженерный смысл стека

Каждый уровень стека решает свою конкретную инженерную задачу:

УровеньЗадачаИнструменты
СетевойДоставка пакетовIP, UDP, TCP
МедиатранспортПередача аудио/видео в реальном времениRTP, RTCP, SRTP
СигналингУстановление и управление сессиейSIP, WebRTC-сигналинг
Описание сессииСогласование параметровSDP
NAT-обходПрохождение через роутеры и файрволыSTUN, TURN, ICE
Доставка контентаОдносторонний стримингRTMP, HLS, SRT, NDI

🎯 Ключевая идея: Ни один протокол не работает в одиночку. Видеосвязь — это ансамбль, где каждый участник играет свою роль. Без сигналинга не начать сессию, без SDP — не согласовать параметры, без ICE — не пройти NAT, без SRTP — не обеспечить безопасность.


Связь с дальнейшими темами курса

Понимание этого стека критически важно для последующих модулей:

  • ONVIF — использует RTSP и HTTP поверх IP/UDP/TCP, но может интегрироваться с SIP для видеозвонков с камерой.
  • FFMPEG и GStreamer — позволяют собирать и разбирать потоки, транслировать между протоколами (например, RTSP → WebRTC или SIP → HLS).
  • Проектирование видеокомплексов — требует выбора: где использовать WebRTC (браузерные звонки), где — SIP (корпоративные ВКС), где — простой стриминг (трансляции).

🧭 Эта схема — ваш ориентир. В следующих лекциях мы «пройдёмся» по каждому уровню, разберём, как он работает на практике, и научимся использовать эти знания для построения и диагностики реальных систем видеосвязи.