Транспортный протокол реального времени (RTP ) - это сетевой протокол для доставки аудио. и видео по IP-сетям. RTP используется в системах связи и развлечений, которые включают потоковые мультимедиа, такие как телефония, приложения для видеоконференций, включая WebRTC, телевизионные услуги и веб-функции push-to-talk.
RTP обычно работает по протоколу дейтаграмм пользователя (UDP). RTP используется вместе с протоколом управления RTP (RTCP). В то время как RTP передает потоки мультимедиа (например, аудио и видео), RTCP используется для мониторинга статистики передачи и качества обслуживания (QoS) и помогает синхронизации нескольких потоков. RTP является одной из технических основ Voice over IP и в этом контексте часто используется вместе с протоколом сигнализации, таким как протокол инициации сеанса (SIP), который устанавливает соединения в сети.
RTP был разработан Рабочей группой Аудио-Видео Транспортной Группы Инженерной группы Интернета (IETF) и впервые опубликован в 1996 году как RFC 1889, который затем был заменен на RFC 3550 в 2003 году.
RTP разработан для сквозная, передача в реальном времени потокового мультимедиа . Протокол предоставляет возможности для компенсации джиттера и обнаружения потери пакетов и доставки вне очереди, которые являются общими, особенно во время передач UDP в IP-сети. RTP позволяет передавать данные в несколько пунктов назначения через многоадресную IP-адресацию. RTP считается основным стандартом для передачи аудио / видео в IP-сетях и используется с соответствующим профилем и форматом полезной нагрузки. Дизайн RTP основан на архитектурном принципе, известном как кадрирование на уровне приложений, где функции протокола реализуются в приложении, а не в стеке протоколов .
в реальном времени <88 операционной системы.>мультимедийные потоковые приложения требуют своевременной доставки информации и часто могут допускать некоторую потерю пакетов для достижения этой цели. Например, потеря пакета в аудиоприложении может привести к потере доли секунды аудиоданных, что можно сделать незаметным с помощью подходящих алгоритмов маскирования ошибок. Протокол управления передачей (TCP), хотя и стандартизирован для использования RTP, обычно не используется в приложениях RTP, поскольку TCP предпочитает надежность, а не своевременность. Вместо этого большинство реализаций RTP построено на Протоколе дейтаграмм пользователя (UDP). Другие транспортные протоколы, специально разработанные для мультимедийных сеансов, - это SCTP и DCCP, хотя по состоянию на 2012 год они не получили широкого распространения.
RTP был разработан Audio / Video Transport рабочая группа организации по стандартизации IETF. RTP используется вместе с другими протоколами, такими как H.323 и RTSP. Спецификация RTP описывает два протокола: RTP и RTCP. RTP используется для передачи мультимедийных данных, а RTCP используется для периодической отправки управляющей информации и параметров QoS.
Протокол передачи данных RTP передает данные в реальном времени. Информация, предоставляемая этим протоколом, включает отметки времени (для синхронизации), порядковые номера (для обнаружения потери пакетов и переупорядочения) и формат полезной нагрузки, который указывает кодированный формат данных. Протокол управления RTCP используется для обратной связи по качеству обслуживания (QoS) и синхронизации между медиапотоками. Пропускная способность трафика RTCP по сравнению с RTP мала, обычно около 5%.
Сеансы RTP обычно инициируются между взаимодействующими одноранговыми узлами с использованием протокола сигнализации, такого как H.323, протокол инициации сеанса (SIP), RTSP или Jingle (XMPP ). Эти протоколы могут использовать протокол описания сеанса для определения параметров сеансов.
Сеанс RTP устанавливается для каждого мультимедийного потока. Аудио- и видеопотоки могут использовать отдельные сеансы RTP, что позволяет приемнику выборочно принимать компоненты определенного потока. Конструкция RTP и RTCP не зависит от транспортного протокола. Приложения обычно используют UDP с номерами портов в непривилегированном диапазоне (от 1024 до 65535). Протокол передачи управления потоком (SCTP) и Протокол управления перегрузкой дейтаграмм (DCCP) могут использоваться, когда требуется надежный транспортный протокол. Спецификация RTP рекомендует четные номера портов для RTP и использование следующего нечетного номера порта для соответствующего сеанса RTCP. Один порт используется для RTP и RTCP в приложениях, которые мультиплексируют протоколы.
RTP используется мультимедийными приложениями в реальном времени, такими как передача голоса по IP, аудио по IP, WebRTC и Интернет-протокол телевидения
RTP предназначен для переноса множества мультимедийных форматов, что позволяет разрабатывать новые форматы без пересмотра стандарт RTP. С этой целью информация, требуемая конкретным приложением протокола, не включается в общий заголовок RTP. Для каждого класса приложений (например, аудио, видео) RTP определяет профиль и связанные форматы полезной нагрузки. Каждая реализация RTP в конкретном приложении требует спецификации профиля и формата полезной нагрузки.
Профиль определяет кодеки, используемые для кодирования данных полезной нагрузки, и их сопоставление с кодами формата полезной нагрузки в поле протокола Payload Type (PT) of заголовок RTP. Каждый профиль сопровождается несколькими спецификациями формата полезной нагрузки, каждая из которых описывает транспортировку определенных закодированных данных. Примеры форматов полезной звуковой нагрузки: G.711, G.723, G.726, G.729, GSM., QCELP, MP3 и DTMF, а примерами полезной нагрузки видео являются H.261, H. 263, H.264, H.265 и MPEG-1 / MPEG-2. Отображение аудио / видеопотоков MPEG-4 в пакеты RTP указано в RFC 3016, а полезные данные видео H.263 описаны в RFC 2429.
Примеры профилей RTP включают:
пакеты RTP создаются на прикладном уровне и передаются на транспортный уровень для доставки. Каждая единица мультимедийных данных RTP, созданная приложением, начинается с заголовка пакета RTP.
Смещения | Октет | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Октет | Бит | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ||
0 | 0 | Версия | P | X | CC | M | PT | Порядковый номер | |||||||||||||||||||||||||||
4 | 32 | Отметка времени | |||||||||||||||||||||||||||||||||
8 | 64 | Идентификатор SSRC | |||||||||||||||||||||||||||||||||
12 | 96 | Идентификаторы CSRC.... | |||||||||||||||||||||||||||||||||
12 + 4 × CC | 96 + 32 × CC | Идентификатор заголовка расширения, зависящего от профиля | Длина заголовка расширения | ||||||||||||||||||||||||||||||||
16 + 4 × CC | 128 + 32 × CC | Заголовок расширения.... |
Заголовок RTP имеет минимальный размер 12 байтов. После заголовка могут присутствовать необязательные расширения заголовка. За ним следует полезная нагрузка RTP, формат которой определяется конкретным классом приложения. Поля в заголовке следующие:
Функциональное мультимедийное приложение требует других протоколов и стандартов, используемых вместе с RTP. Такие протоколы, как SIP, Jingle, RTSP, H.225 и H.245, используются для инициирования, управления и завершения сеанса. Другие стандарты, такие как H.264, MPEG и H.263, используются для кодирования данных полезной нагрузки, как указано в соответствующем профиле RTP.
Отправитель RTP захватывает мультимедийные данные, затем кодирует, кадрирует и передает это как пакеты RTP с соответствующими отметками времени и увеличивающимися отметками времени и порядковыми номерами. Отправитель устанавливает поле типа полезной нагрузки в соответствии с согласованием соединения и используемым профилем RTP. Получатель RTP обнаруживает отсутствующие пакеты и может переупорядочить пакеты. Он декодирует медиа-данные в пакетах в соответствии с типом полезной нагрузки и представляет поток своему пользователю.