RTP

от Уикипедия, свободната енциклопедия

RTP (на английски: Real-time Transport Protocol – Протокол за транспорт в реално време) е мрежов протокол, който определя стандартен формат на пакета за доставяне на аудио и видео данни по Интернет. Не е определен стандартен TCP или UDP порт за комуникация на протокола. Въпреки че не са изрично посочени портовете за употреба, протоколът бива конфигуриран на портове 16384 – 32767. Това предполага трудности при преминаването на защитни стени.

Според RFC 1889[1], протоколът предлага следните услуги:

  • Определяне на типа на натоварването – определя се типа на прехвърляното съдържание
  • Номериране на поредицата от пакети – т.е. кой пакет в кой по ред е пристигнал
  • Отчитане на времето в пакета – предлага синхронизация и изчисления на евентуално задръстване по мрежата
  • Следене за доставката на пакети

Протоколите, сами по себе си не предоставят нито механизми за своевременно доставяне, нито гарантират Quality of Service (QoS). Тези услуги трябва да бъдат предоставени посредством други механизми.

Все пак е възможно транспортирането на данни с предимство, но управление на задръстванията(congestion control) и на скоростта (flow) не се поддържат директно. Протоколите доставят данните, които са необходими на приложението за да подреди получените пакети в правилния ред. RTP е публикуван от ITU-T също като H.225.0, но по-късно премахнат, след като IETF публикуват стабилен, отговарящ на стандартите RFC. Той съществува като Internet Standard (STD 64) дефиниран в RFC 3550 (който заменя RFC 1889). RFC 3551 (STD 65) (който заменя RFC 1890) дефинира специфичен профил за аудио и видео конференции с минимално управление. RFC 3711 дефинира Secure Real-time Transport Protocol (SRTP) профил (едно разширение на RTP профила за аудио и видео конференции) което може да бъде използвано (опционално) за да се осигури конфиеденциалност, автентификация на съобщенията и защита от атака посредством отговор (replay) за доставяните аудио и видео потоци.

RTCP[редактиране | редактиране на кода]

Обикновено RTP се използва заедно с RTCP. RTCP осигурява информация относно качеството на приемане, която приложението може да използва за да извърши локални настройки – например ако се задава претоварване на връзката, приложението може да реши да намали скоростта. RTCP използва 5% от мрежийния капацитет на сесията. Като правило RTP използва четен UDP порт, a следващият поред нечетен порт е за RTCP.

Структура на пакета[редактиране | редактиране на кода]

+ Bits 0 – 1 2 3 4 – 7 8 9 – 15 16 – 31
0 Ver. P X CC M PT номер от поредицата
32 времева отметка(timestamp)
64 SSRC идентификатор
96 ... CSRC идентификатори...
96+(CC×32) Extension header (optional).
96+(CC×32)
+ (X×((EHL+1)×32))

Данни

Размера на заглавната част на RTP е 12 байта.

Ver.
(2 бита) Индикатор за версията на протокола. Текущата версия е 2 (10 двоично).
P
(1 бит) Използван за да се индицира наличието на допълващи байтове в края на RTP пакета.
X
(1 бит) Индикатор за използване на разширения на протокола в пакета.
CC
(4 бита) Съдържа броя на CSRC идентификаторите, които следват след фиксираната заглавна част.
M
(1 бит) Използван от приложението. Ако е установен в 1, това означава, че текущите данни имат някакво специално значение за приложението (програмата). Например: видео пакет е последен в поредица.
PT
(7 бита) Индикатор за формата на полезната информация, определя нейната интерпретация от приложението. Може да бъде променян по време на сесията:
0: PCM u-law, 64 kbps
3: GSM, 13 kbps
7: LPC, 2.4 kbps
26: Motion JPEG
31: H.261
33: MPEG2 видео
SSRC
Индикатор за източника на синхронизация.
CSRC
Contributing source ID.
Extension header
Индикатор за дължината на разширението (EHL=дължина на заглавната част на разширението) в 32-битови блокове, изключвайки тридесет и двата бита на заглавната част на разширението.

Бележки[редактиране | редактиране на кода]