Рассматриваются простейший протокол передачи дейтаграмм (UDP), протокол, управляющий передачей данных (TCP), и прикладной протокол (HTTP). Исследуются сетевые протоколы, необходимые как для передачи видеопотока по сети, так, например, и для дистанционного управления камерой, на примере работы IP-камеры.
Ключевые слова : UDP, TCP, IP-камера, HTTP, дейтаграмма, пакет Ethernet II, видеопоток.
Как известно, в IP-камерах D-Link [1, 2] (будем рассматривать далее IP-камеры этого брэнда в силу их значительной распространенности) для передачи видеопотока применены только универсальные транспортные протоколы UDP [3], TCP [4] и прикладной протокол HTTP [5]. Такое решение, видимо, упрощает встроенное программное обеспечение камеры. Рассмотрим эти три протокола.
1. Простейшим из них является протокол UDP (User Datagram Protocol — протокол пользовательских дейтаграмм). Под дейтаграммой понимаются данные вышележащего уровня, вложенные в пакет UDP.
UDP не подтверждает доставку данных, не заботится о корректном порядке доставки пакетов и не делает повторов, если пакет потерян. Обеспечение этих возможностей должны на себя брать вышележащие протоколы. В случае IP-камер такой протокол должен выполнять следующие действия:
— разбивать видеопоток на дейтаграммы (обратная сборка будет производиться на компьютере);
— передавать и принимать управляющие сообщения, например, о начале и завершении передачи;
— при необходимости применять нумерацию дейтаграмм, позволяющую на компьютере правильно собрать видеопоток, если дейтаграммы пришли не в том порядке;
— если часть дейтаграмм потеряна, удалять соответствующий кадр из видеопотока, чтобы не создавать визуальных помех.
Эти действия почти эквивалентны (кроме удаления кадров) действиям транспортного протокола TCP. Поэтому нет смысла применять UDP в ненадежных сетях, так как накладные расходы TCP возьмет на себя нестандартный прикладной протокол.
Преимущество UDP состоит в высокой скорости передачи. Рассмотрим этот вопрос более подробно. Пусть используется наиболее часто применяемый в локальных сетях тип пакета Ethernet II (IEEE 802.3). Его максимальный размер равен 1518 байт. За вычетом 18 байт на заголовок канального уровня Ethernet и контрольный код остается 1500 байт для пакета сетевого уровня (IP). Заголовок IP далее отнимает 20 байт, а заголовок UDP — еще 8 байт. Итого на дейтаграмму UDP остается 1500–20–8 = 1472 байта.
Учитывая требуемый минимальный интервал между пакетами Ethernet II в 96 бит (12 байт) и расходы на синхронизацию каждого пакета (9 байт) находим предельно достижимую скорость передачи видеопотока по UDP:
,
где S PHY — скорость передачи физического уровня.
Например, если применяется сеть Ethernet 100Base-T, для которой S PHY = 100 Мбит/с = 12500000 байт/с, то получим S UDP примерно до 11 Мбайт/с.
Таким образом, в надежных сетях (например, в пределах одного сегмента локальной сети) применение UDP для передачи видеопотока уместно, так как позволяет достичь 95 % от максимальной пропускной способности сети.
В табл. 1 приведены расчеты максимальной частоты кадров для случая использования UDP в Ethernet 100Base-T.
Таблица 1
Достигаемая частота кадров, ограниченная UDP в Ethernet 100B ase -T
Разрешение, пикселей |
Сжатие |
Максимальная частота кадров выходных видеоданных, Гц |
640×480 |
Нет |
13 |
640×480 |
В 10 раз |
130 |
320×240 |
Нет |
54 |
320×240 |
В 10 раз |
540 |
Отметим, что частоты выше 30 Гц недостижимы самой камерой DCS-920.
2. Рассмотрим возможности применения протокола TCP (Transmission Control Protocol — протокол управления передачей). Данные, вложенные в пакет TCP, принято называть сегментами. Этот протокол предназначен для доставки длинных сообщений, значительно превышающих максимальный объем одного пакета. Поэтому он разбивает исходное сообщение на сегменты.
Приемник использует номер последовательности, содержащийся в получаемых сегментах, для восстановления их исходного порядка. Приемник уведомляет передающую сторону о номере последовательности байт, до которой он успешно получил данные, включая его в поле «номер подтверждения».
Для того чтобы передающая сторона не отправляла данные интенсивнее, чем их может обработать приемник, TCP содержит средства управления потоком. В сегментах, направляемых от приемника передающей стороне в поле «окно» указывается текущий размер приемного буфера. Передающая сторона сохраняет размер окна и отправляет данных не более, чем указал приемник. Если приемник указал нулевой размер окна, то передача данных в направлении этого узла не происходит, до тех пор, пока приемник не сообщит о большем размере окна.
В отличие от UDP, который может сразу же начать передачу пакетов, TCP устанавливает соединение, которое должно быть созданы перед передачей данных. Это необходимо для того, чтобы согласовать счетчики сегментов и другие параметры передающей и приемной стороны.
Очевидно, что TCP несколько менее производителен, чем UDP по следующим причинам:
— больше размер заголовков (в TCP — минимум 20 байт, в UDP — 8 байт);
— есть передача управляющих пакетов при установлении и завершении соединения;
— есть передача управляющих пакетов подтверждения.
Последняя причина является основной, а расходами на установление и завершение соединения в случае видеопотока можно пренебречь.
Например, анализатор протоколов показывает, что в камере D-Link DCS-920 установлен размер окна, равный размеру 4 сегментов. Это значит, что подтверждения должны присылаться не реже, чем через каждых 4 сегмента данных (а реально анализатор показывает, что подтверждения следуют чаще). Размер пакета подтверждения составляет 54 байта.
Тогда получим размер сегмента 1500–20–20 = 1460 байт, а максимально достижимую производительность TCP:
Сравнение этого результата c результатом UDP показывает, что для данных большого размера (видеопоток) TCP может оказаться почти настолько же быстрым, как и UDP. Для более коротких данных, например, для одиночного изображения разница будет больше из-за расходов на установление и завершение соединения.
Рассмотрим такой случай. Типичное изображение размером 320*240 пикселей, сжатое в 20 раз занимает объем примерно 10000 байт. Для его передачи потребуются 7 пакетов с сегментами TCP, минимум 2 подтверждения на эти данные, 3 управляющих пакета на установку соединения и 2 — на его завершение. Управляющие пакеты в зависимости от их типа имеют несколько разный размер. На установление соединения получается минимум 62 + 60 + 54 + 3(12 + 9) = 239 байт. На завершение — 60 + 54 + 2(12 + 9) = 156 байт.
Тогда
В приведенных расчетах учтена только предельная производительность локальной сети и не учтены задержки, вносимые процессором камеры.
3. Протокол HTTP (HyperText Transfer Protocol — протокол передачи гипертекста) является прикладным и обычно использует в качестве транспортного протокола TCP. Применительно для получения изображений и видео от IP-камеры достаточно минимальной реализации HTTP.
В терминологии HTTP камера является HTTP-сервером, компьютер — HTTP-клиентом. Для получения изображения клиент устанавливает соединение TCP, в котором посылает камере HTTP-запрос примерно следующего вида:
GET /image.jpg HTTP/1.1
Content-Type: text/html
Host: 192.168.1.20
Accept: text/html, */*
User-Agent: Mozilla/3.0 (compatible; Indy Library)
Самой важной здесь является первая строка, в которой указано, что надо получить от сервера файл image.jpg.
В ответ камера высылает свой ответ:
HTTP/1.0 200 OK
Server: Camera Web Server/1.0
Auther: Steven Wu
MIME-version: 1.0
Cache-Control: no-cache
Content-Type: image/jpeg
Content-Length: 58780
за которым непосредственно пересылается файл image.jpg.
По сравнению с TCP объем передаваемых данных увеличивается на 1 пакет, 1 подтверждение и заголовок ответа камеры. В сумме эта добавка составляет примерно 200 + 60 + 160 байт = 420 байт и снижает максимальную скорость передачи изображения в предыдущем примере еще на 3…4 %.
Протокол HTTP удобен тем, что он удобно встраивается в визуальный интерфейс, поддерживаемый браузерами, и имеет множество готовых реализаций.
Таким образом, можно сделать вывод, что применение рассмотренных протоколов в IP-камерах вполне оправдано, так как программное обеспечение получается относительно несложным, а скорость передачи падает не очень существенно (80 %...90 % от максимальной). Это обеспечило популярность универсальных протоколов в IP-камерах.
Литература:
- D-Link [Электронный ресурс]: D-Link. — URL: https://www.dlink.ru/ru/about/ (дата обращения: 26.01.2022).
- IP-камера: что это такое, как работает, какие бывают IP-камеры [Электронный ресурс] / Dssl. — URL: https://www.dssl.ru/publications/stati/ip-kamera-chto-eto-takoe-kak-rabotaet-kakie-byvayut-ip-kamery/ (дата обращения: 26.01.2022).
- UDP [Электронный ресурс] / Википедия. Свободная энциклопедия. — URL: https://ru.wikipedia.org/wiki/UDP (дата обращения: 26.01.2022).
- TCP/IP [Электронный ресурс] / Википедия. Свободная энциклопедия. — URL: https://ru.wikipedia.org/wiki/TCP/IP (дата обращения: 26.01.2022).
- HTTP–протокол [Электронный ресурс] / blog.skillfactory. — URL: https://blog.skillfactory.ru/glossary/http/ (дата обращения: 26.01.2022).