RTP | это... Что такое RTP? (original) (raw)

Протокол RTP (англ. Real-time Transport Protocol) работает на транспортном уровне и используется при передаче трафика реального времени. Протокол был разработан Audio-Video Transport Working Group в IETF и впервые опубликован в 1996 году как RFC 1889, и заменён в RFC 3550 в 2003 году.

Протокол RTP переносит в своём заголовке данные, необходимые для восстановления голоса или видеоизображения в приёмном узле, а также данные о типе кодирования информации (JPEG, MPEG и т. п.). В заголовке данного протокола, в частности, передаются временная метка и номер пакета. Эти параметры позволяют при минимальных задержках определить порядок и момент декодирования каждого пакета, а также интерполировать потерянные пакеты.

RTP не имеет стандартного зарезервированного номера порта. Единственное ограничение состоит в том, что соединение проходит с использованием чётного номера, а следующий нечётный номер используется для связи по протоколу RTCP. Тот факт, что RTP использует динамически назначаемые адреса портов, создаёт ему трудности для прохождения межсетевых экранов, для обхода этой проблемы, как правило, используется STUN-сервер.

Установление и разрыв соединения не входит в список возможностей RTP, такие действия выполняются сигнальным протоколом (например, RTSP или SIP протоколом).

Содержание

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

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

Приложения, формирующие потоки реального времени, требуют своевременной доставки информации и для достижения этой цели могут допустить некоторую потерю пакетов. Например, потеря пакета в аудио-приложении может привести к доле секунды тишины, которая может быть незаметна при использовании подходящих алгоритмов скрытия ошибок.[2] Протокол TCP, хотя и стандартизирован для передачи RTP,[3] как правило не используется в RTP-приложениях, так как надежность передачи в TCP формирует временные задержки. Вместо этого, большинство реализаций RTP базируется на UDP. Кроме этого, существуют другие спецификации для транспортных протоколов SCTP и DCCP, но они мало распространены.[4][5]

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

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

Сессии

RTP-сессия устанавливается для каждого потока мультимедиа. Сессия состоит из IP-адреса и пары портов для RTP и RTCP. Например, аудио и видео потоки будут иметь различные RTP-сессии, позволяющие приемнику для этого выделить конкретный поток.[6] Порты, которые образуют сессию, связываются друг с другом средствами других протоколов, таких как SIP (содержащий в своих сообщениях протокол SDP[7]) и RTSP (используя SDP в методе Setup). В соответствии со спецификацией, RTP не имеет стандартного зарезервированного номера порта. Единственное ограничение состоит в том, что соединение проходит с использованием чётного номера, а следующий нечётный номер используется для связи по протоколу RTCP. RTP и RTCP обычно используют непривилегированные UDP-порты (16k-32k), но могут использовать и другие протоколы, поскольку сам протокол RTP независим от транспортного уровня.

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

+ Биты 0-1 2 3 4-7 8 9-15 16-31
0 Ver. P X CC M PT Порядковый номер
32 Метка времени
64 SSRC-идентификатор
96 … CSRC-идентификаторы …
96+(CC×32),if X==1 Дополнительный заголовок (необязательный), содержит длину блока данных — «AHL»
96+(CC×32)+ (X×(AHL+16)) Данные

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

Спецификация RTP

См. также

Ссылки

Примечания

  1. Daniel Hardy Network. — De Boeck Université, 2002. — P. 298.
  2. Colin Perkins, p.46
  3. RFC 4571
  4. Farrel Adrian The Internet and its protocols. — Morgan Kaufmann, 2004. — P. 363. — ISBN 9781558609136(недоступная ссылка)
  5. Ozaktas Haldun M. THREE-DIMENSIONAL TELEVISION. — Springer, 2007. — P. 366. — ISBN 9783540725312(недоступная ссылка)
  6. Zurawski Richard RTP, RTCP and RTSP protocols // The industrial information technology handbook. — CRC Press, 2004. — P. 28–7. — ISBN 9780849319853
  7. RFC 4566: SDP: Session Description Protocol, M. Handley, V. Jacobson, C. Perkins, IETF (July 2006)
Просмотр этого шаблона Основные протоколы TCP/IP по уровням модели OSI (Список портов TCP и UDP)
Физический EthernetRS-232EIA-422RS-449RS-485
Канальный EthernetPPPoEPPPL2F802.11 Wi-Fi802.16 WiMaxToken ringARCNETFDDIHDLCSLIPATMCANDTMX.25Frame relaySMDSSTPERPS
Сетевой IPv4IPv6IPsecICMPIGMPARPRARPRIP2OSPF
Транспортный TCPUDPSCTPDCCP • RDP/RUDPRTPGRE
Сеансовый ADSPH.245iSNSNetBIOSPAPRPCL2TPPPTPRTCPSMPPSCP • ZIP • SDP
Представления XDRSSLTLS
Прикладной BGPHTTPHTTPSDHCPIRCSNMPDNSDNSSECNNTPXMPPSIPIPPNTPSNTPЭлектронная почта (SMTPPOP3IMAP4) • Передача файлов (FTPTFTPSFTP) • Удалённый доступ (rloginTelnetSSHRDP)
Другие прикладные OSCARCDDBMulticast FTPMultisource FTPBitTorrentGnutellaSkype