Протокол RTP () працює на прикладному рівні і використовується при передачі аудіо і відеоданих через IP мережі в режимі реального часу. Протокол був розроблений Audio-Video Transport Working Group в IETF і вперше опублікований в 1996 році як RFC 1889, і замінений у RFC 3550 у 2003 році.
Протокол RTP переносить у своєму заголовку дані, необхідні для відновлення голосу та відео на приймальному вузлі, а також дані про тип кодування інформації (JPEG, MPEG і т. ін.). В заголовку цього протоколу, зокрема, передаються мітка і номер пакету. Ці параметри дозволяють при мінімальних затримках визначити порядок і час декодування кожного пакета, а також інтерполювати втрачені пакети.
RTP не має стандартного зарезервованого номера порту. Єдине обмеження полягає в тому, що з'єднання проходить з використанням парного номера порту, а наступний непарний номер використовується для зв'язку з протоколом RTCP. Той факт, що RTP використовує адреси портів що присвоюються динамічно, створює йому труднощі з проходженням міжмережевих екранів, для обходу цієї проблеми, як правило, використовується STUN-сервер.
Встановлення і розрив з'єднання не входить в список можливостей RTP, такі дії виконуються сигнальним протоколом (наприклад, RTSP або SIP протоколом).
Визначення Поле даних RTP Інформація, яка пересилається в пакеті RTP, наприклад, фрагменти звуку або стислі відео дані. Пакет RTPІнформаційний пакет, що містить фіксований заголовок. Один пакет нижнього транспортного рівня, наприклад UDP, зазвичай містить один RTP-пакет, але ця вимога не є обов'язковою. Поле джерел інформації може бути порожнім. Пакет RTCPКерівний пакет, що містить фіксований заголовок подібний до RTP, за яким йдуть структурні елементи, які залежать від типу RTCP-пакету. Зазвичай кілька RTCP-пакетів надсилаються як складова RTCP-пакету, вкладена в дейтаграму нижчого рівня. Транспортна адресаКомбінація мережевої адреси та порту, яка ідентифікує кінцеву точку каналу (наприклад, IP-адреса і UDP порт). Пакети йдуть від транспортної адреси відправника до транспортної адреси одержувача. Сесія RTPПеріод з моменту встановлення групи учасників RTP-обміну до її зникнення. Для кожного з учасників сесія визначається конкретною парою транспортних адрес (мережева адреса і номери портів для RTP і RTCP). Транспортна адреса місця призначення може бути загальною для всіх учасників сесії. Допускається реалізація декількох сесій для кожного з учасників одночасно. Джерело синхронізації (SSRC)Джерело потоку RTP-пакетів, визначається 32-бітним числовим SSRC-ідентифікатором, який записується в заголовок RTP-пакету і не залежить від мережної адреси. Всі пакети від джерела синхронізації утворюють частину з ідентичною тимчасовою прив'язкою і нумерацією. Ці дані використовуються стороною що приймає при відтворенні. Джерелами синхронізації можуть служити первинні джерела сигналу (мікрофони або відеокамери), а також RTP-змішувачі. SSRC-ідентифікатор являє собою випадкове число, яке є унікальним для даної RTP-сесії. Учасник сесії не повинен використовувати один і той же SSRC-ідентифікатор для всіх RTP-сесій мультимедійного набору. Якщо учасник формує кілька потоків в рамках однієї RTP-сесії (наприклад, від декількох відеокамер), кожен учасник повинен бути забезпечений унікальним SSRC-ідентифікатором. Інформаційне джерело CSRC (contributing source)Джерело потоку RTP-пакетів, котре робить внесок у загальний потік, що формується RTP-змішувачем. Змішувач вставляє список SSRC-ідентифікаторів, які ідентифікують парціальні джерела, в заголовок RTP-пакетів. Цей список називається CSRC-списком. Прикладом програми може бути аудіоконференція, де змішувач відзначає всіх людей, чий голос породжує вихідні пакети. Це дозволяє стороні що приймає ідентифікувати мовця, хоча всі пакети мають один і той же SSRC-ідентифікатор. Кінцева системаПрограма, яка генерує або сприймає дані, які посилають у вигляді RTP-пакетів. Кінцева система може виступати як одне або декілька джерел синхронізації для конкретної сесії. ЗмішувачПроміжна система, яка отримує RTP-пакети від одного або декількох джерел, при необхідності змінює їх формат, об'єднує і пересилає їх адресатам. Через те, що тимчасова прив'язка вхідних пакетів може відрізнятися, змішувач здійснює їх синхронізацію і генерує свій власний потік RTP-пакетів. Таким чином увесь зміст пакетів синхронізується змішувачем. ТрансляторПроміжна система, яка переадресує RTP-пакети, не змінюючи їх ідентифікатори джерела синхронізації. Такі пристрої використовуються для перетворення системи кодування, переходу від мультикаст- до традиційної унікаст-адресації або при роботі з Firewall. Монітор Додаток, який отримує RTCP-пакети, надіслані учасниками RTP-сесії, зокрема діагностичні повідомлення, проводить оцінку стану зв'язку, накопичує довгострокову статистику обміну.
Всі цілочисельні поля передаються згідно з мережевим порядком, тобто старший байт слідує за першим (big-endian). Порядок передачі докладно описаний у роботі . Якщо не обумовлено зворотного всі цифрові константи є десятковими. Всі поля заголовка вирівнюються своїми природними кордонами, тобто. 16-бітові поля мають парне зміщення, а 32-бітні мають адреси, кратні 4. Октети-заповнювачі містять нулі.
Абсолютний час видається з допомогою часових позначок згідно з форматом NTP (network time protocol), який характеризує час у секундах від початку доби (UTC) 1 січня 1900 . Мітка часу NTP повної точності визначається 64-бітовим числом з фіксованою комою без знаку. Цілочисельна частина задається першими 32 бітами, а дробова частина останніми. У деяких полях, де припустимо компактніше подання, використовуються тільки середні 32 біти (16 бітів цілочисельна частина і 16 бітів дробова).
Структура пакета + Біти 0-1 2 3 4-7 8 9-15 16-31 0Ver.PXCCMPTПорядковий номер32Мітка часу 64SSRC-ідентифікатор 96… CSRC-ідентифікатори … 96+(CC×32)Додатковий заголовок (необов'язковий), містить довжину блоку даних — «AHL» 96+(CC×32)+ (X×(AHL+16)) Дані
Ver. (2 біти) вказує версію протоколу. Поточна версія - 2.
P (один біт) використовується у випадках, коли RTP-пакет доповнюється порожніми байтами на кінці.
X (один біт) використовується для зазначення розширень протоколу, залучених в пакеті.
CC (4 біти) містить кількість CSRC-ідентифікаторів, що йдуть за постійним заголовком.
M (один біт) використовується на рівні програми та визначається профілем. Якщо це поле встановлено, то дані пакету мають якесь особливе значення для програми.
PT (7 бітів) вказує формат payload і визначає її інтерпретацію додатком.
SSRC вказує джерело синхронізації.
Специфікація RTP STD 64. RTP: A Transport Protocol for Real-Time Applications. H. Schulzrinne, S. Casner, R. Frederick, V. Jacobson. July 2003. STD 65. RTP Profile for Audio and Video Conferences with Minimal Control. H. Schulzrinne, S. Casner. July 2003.
Посилання http://book.itep.ru/4/44/rtp_4492.htm http://cdo.bseu.by/library/ibs1/net_l/tcp_ip/net/rtp.htm