RTP (Real-time Transport Protocol)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 14:35, 1 марта 2017.

RTP (Real-time Transport Protocol) — протокол передачи данных, работает на прикладном уровне и используется при передаче трафика реального времени. Впервые опубликован в 1996 году, выведен из употребления в 2003 году.

Описание протокола

RTP был разработан как протокол для передачи потоковых данных в режиме реального времени по технологии end-to-end. Рассматривался как основной стандарт для передачи голоса и видео в IP-сетях. В протокол заложена возможность компенсации джиттера и обнаружения нарушения последовательности пакетов данных — типичных событий при передаче через IP-сети. RTP поддерживает передачу данных для нескольких адресатов через Multicast.

Основное отличие RTP от TCP состоит в том, что TCP позволяет себе временную задержку ради полной достоверности передаваемых данных, в то время как RTP допускает некоторую потерю пакетов ради оперативной доставки информации в режиме реального времени. Поэтому большинство реализаций RTP базируются на UDP.

Компоненты протокола

Спецификация RTP описывает два подпротокола:

  • Протокол передачи данных, RTP, который взаимодействует с передачей данных реального времени. Информация, предоставляемая посредством этого протокола, включает в себя отметку времени(для синхронизации), последовательный номер (для детектирования потери и дублирования пакетов) и формат полезной нагрузки, который определяет формат кодирования данных.
  • Протокол контроля, RTCP, используемый для определения качества обслуживания (QOS), обратной связи и синхронизации между медиа-потоками. Занимаемая полоса пропускания RTCP мала в сравнении с RTP, обычно около 5 %.
  • Управляющий сигнальный протокол, такой как SIP, H.323, MGCP или H.248. Сигнальные протоколы управляют открытием, модификацией и закрытием RTP-сессий между устройствами и приложениями реального времени.
  • Управляющий протокол описания медиа, такой как Session Description Protocol.

Структура пакета

+ Биты 0-1 2 3 4-7 8 9-15 16-31
0 Ver. P X CC M PT Порядковый номер
32 Метка времени
64 SSRC-идентификатор
96, если CC>0 [CSRC-идентификаторы]
96+(CC×32),
если X=1
[Заголовок расширения - определенное профилем значение] [Заголовок расширения - количество блоков данных по 32 бита (EHL)]
96+(CC×32)+32 [Заголовок расширения - блоки данных]
96+(CC×32)
+X*(32+32×EHL)
 
Данные
 
если P=1 Заполнение (Padding data) L

0-1 — Ver. (2 бита) указывает версию протокола. Текущая версия — 2.
2 — P (один бит) используется в случаях, когда RTP-пакет дополняется пустыми байтами на конце.
3 — X (один бит) используется для указания расширений протокола, задействованных в пакете.
4-7 — CC (4 бита) содержит количество CSRC-идентификаторов, следующих за постоянным заголовком.
8 — M (один бит) используется на уровне приложения и определяется профилем. Если это поле установлено, то данные пакета имеют какое-то особое значение для приложения.
9-15 — PT (7 бит) указывает формат полезной нагрузки и определяет её интерпретацию приложением.
64-95 — SSRC указывает источник синхронизации.
EHL (Extension Header Length) — — количество 32-битных слов в блоке данных расширения заголовка.
L — последний байт в пакете, определяющий длину области заполнения в байтах (используется для выравнивания в последнем пакете).


Список литературы