Reālā laika ziņošanas protokols

Vikipēdijas lapa
Pārlēkt uz: navigācija, meklēt

Reālā laika ziņošanas protokols (angļu:Real Time Messaging Protocol (RTMP)) sākumā bija protokols, kurš piederēja uzņēmumam Macromedia. Tas tika izstrādāts ar nolūku straumēt audio, video un citus datus caur internetu, starp kādu serveri un gala iekārtu, kurai ir Flash atskaņotājs. Macromedia tagad pieder uzņēmumam Adobe, has izlaida nepabeigtu protokola specifikāciju, priekš publiskas lietošanas.
RTMP protokolam ir vairākas variācijas:

  1. "Parastais" protokols, kurš strādā uz TCP un pēc noklusējuma lieto porta numuru 1935.
  2. RTMPS, kas ir RTMP pa SSL savienojumu.
  3. RTMPS, kas ir RTMP šifrēts izmantojot paša Adobe izveidotu drošības mehānismu. Kaut gan detaļas par šo implementēto šifrējumu ir Adobe īpašums, šis mehānisms lieto industrijas standarta kriptogrāfiskos primitīvus. Bet galu galā RTMPE dizains ir kļūdains un īstenībā nesagādā aizsardzību.
  4. RTMPT, kas ir iekapsulēts HTTP pieprasījumos pārkāpt ugunsmūrus. RTMPT bieži izmanto parasta teksta pieprasījumus TCP portos 80 un 443 ar mērķi apiet lielāko daļu uzņēmumu datuplūsmas filtrus. Iekapsulētā sesija var saturēt RTMP, RTMPS vai RTMPE paketes.

Kaut gan sākotnējā motivācija RTMP izgudrošanā bija Flash video straumēšana, to lieto arī citās aplikācijās, piemēram Adobe LiveCycle Data Services ES.

Vispārējā darbība[labot šo sadaļu | labot pirmkodu]

RTMP (izņemot RTMFP) ir TCP bāzēts protokols, kurs notur nepārtrauktu savienojumu un atļauj mazas aiztures komunikāciju. Lai straumētu vienmērīgi un nosūtītu pēc iespējas vairāk informāciju, tas sadala straumējumus fragmentos un to izmērs tiek dinamiski mainīts. Izmērus nosaka dažādi parametri starp serveri un klientu, un ir reizes, kad tas netiek mainīts. Pēc noklusējuma fragmenti ir 64 baitu lieli priekš audio un 128 baitu lieli priekš video un citiem datiem. Fragmenti no citiem straumējiem var tikt starplikti un multipleksēti vienā savienojumā. Ar garākiem datu posmiem protokols nes tikai viena baita galveni katram fragmentam, padarot to ļoti ergonomisku. Tomēr praksē individuāli fragmenti netiek starplikti. Starplikšana un multipleksēšana notiek ar veselām paketēm, kur RTMP paketes vairākos atsevišķos aktīvos kanālos tiek starpliktas tā, lai nodrošinātu, ka katrs kanāls atbilst saviem ātruma, aiztures un citiem parametriem. Paketes starpliktas šādā veidā ir nesadalāmas, tāpēc fragmenti netiek atsevišķi starplikti.
RTMP nodefinē vairākus virtuālus kanālus, kuros paketes var tikt sūtītas un saņemtas, un kuras strādā atsevišķi no citām. Piemēram ir kanāls priekš RPC pieprasījumiem un atbildēm, kanāls priekš video datiem, kanāls priekš audio datiem, kanāls priekš kontroles ziņojumiem (fragmentu izmēru izlemšana, utt.), un citi. Parastā RTMP sesijā vairāki kanāli var būt aktīvi vienlaicīgi, jebkurā brīdī. Kad RTMP tiek kodēti, tiek uzģenerēta paketes galvene. Paketes galvenē tiek norādīti dažādi parametri, kā kanāla i.d. pa kuru to jāsūta, laiks, kad tā uzģenerēta (ja nepieciešama), un paketes izmērs. Galvenai pēc tam seko pakete, kura sadalīta fragmentos, kuru lielumu izlēmis dialogs starp klientu un serveri. Galvene nekad netiek fragmentēta un tās izmērs netiek piesaistīts pirmajam paketes fragmentam. Tas nozīmē, ka tikai pakešu saturs (mēdiju dati) var tikt fragmentēti.
Augstākā līmenī, RTMP iekapsulē MP3 vai AAC audio un FLV1 video multimēdiju straumējumus, un var veikt Attālināto procedūru izsaukumus (angļu:Remote procedure call (RPC)) izmantojot Darbības Ziņu Formātu (angļu:Action Message Format). Visi vajadzīgie RPC servisi tiek veikti asinhroni, izmantojot viena klienta/servera pieprasījuma/atbildes modeli.

Šifrešāna[labot šo sadaļu | labot pirmkodu]

RTMP sesija var tikt šifrēta izmantojot vienu no šīm divām metodēm:

  • Izmantojot industrijas standarta SSL mehānismus. RTMP sesija vienkārši tiek ievietota normālā SSL sesijā.
  • Izmantojot RTMPE, kas ievieto RTMP sesiju vieglākā šifrējuma kārtā.

Ir plaši saprasts, ka SSL roku spiediens sesijas sākumā, ir prasīgs. Ņemot to vērā Adobe izstrādāja RTMPE, kā vieglāku alternatīvu, lai lielas datu plūsmas saites varētu vienkāršāk apstrādāt šifrētus straumējumus. Adobe reklamē RTMPE kā metodi priekš drošas datu sūtīšana, aizsargājot no klienta datu viltošanas, bet tas ir nepatiess apgalvojums. RTMPE lieto tikai Anonīmo Diffe-Hellman, kurš nesagādā nekādu apstiprinājumu par jebkuras puses identitāti, līdz ar to šī metode nav pasargāta no trešās personas uzbrukumiem, kad sesija tiek palaista.

HTTP tuneļošana[labot šo sadaļu | labot pirmkodu]

Tuneļotā RTMP (RTMPT), RTMP dati ir iekapsulēti un apmainīti caur HTTP. Ziņas no klienta (mēdiju atskaņotāja, šinī gadījumā) tiek nosūtītas uz portu 80 (noklusējuma portu priekš HTTP) uz servera.
Kaut gan ziņas nosūtītas izmantojot RTMPT ir lielākas, nekā to attiecīgās RTMP ziņas, sakarā ar HTTP galveņu izmēru, RTMPT var veikt RTMP darbības, kur RTMP nestrādātu, piemēram, kad klients ir aiz ugunsmūra un bloķē ne-HTTP un ne-HTTPS ārā ejošo plūsmu.
Šis protokols strādā sūtot komandas caur POST saiti un AMF ziņas caur POST saturu.
Piemērs būtu

POST /open/1 HTTP/1.1

lai atvērtu savienojumu.