Uurime VoIP-mootorit Mediastreamer2. Osa 8

Artikli sisu on pÀrit minu zen-kanalist.

Uurime VoIP-mootorit Mediastreamer2. Osa 8

RTP-paketi struktuur

Eelmises osas artiklis kasutasime TShark RTP-pakettide pĂŒĂŒdmiseks, mida vahetasid meie vastuvĂ”tja ja saatja. Sellega vĂ€rvime paketi elemente erinevates vĂ€rvustes ja rÀÀgime nende eesmĂ€rgist.

Vaatame sama paketti, kuid nĂŒĂŒd on vĂ€ljad vĂ€rvilised ja selgitavad sildid:
Uurime VoIP-mootorit Mediastreamer2. Osa 8

Loendi allosas on vĂ€rvitud bait, mis koosneb RTP-paketist, mis omakorda on UDP-paketi kasulik koormus (selle pealkiri on musta joonega ĂŒmber tĂ”mmatud). VĂ€rvilised taustad tĂ€histavad RTP-pealkirja baite ja rohelisega on vĂ€lja toodud andmeplokk, mis sisaldab RTP-paketi kasulikku koormust. Andmed on esitatud kuutekohalises formaadis. Meie juhul on see helisignaal, mis on kokku surutud u-seaduse (mĂŒ-seaduse) alusel, st ĂŒhes proovitusel on suurus 1 bait. Kuna kasutasime vaikimisi seadistatud proovisagedust (8000 Hz), peaks iga RTP-pakett sisaldama 160 bait'i kasulikku koormust sagedusel 50 Hz. Selle mĂ€rgimegi rohelises alal olevate baitide arvu kokku lugedes, neid peaks olema 10 rida.

Standardi kohaselt peab andmekoormuse suurus olema neljakordne, st sisaldama tĂ€isarvu nelja baitisest sĂ”na. Kui juhtub, et teie andmekoormus ei vasta sellele reeglile, tuleb andmekoormuse lĂ”ppu lisada nullvÀÀrtusega baidid ning seada Padding (TĂ€ienduse) bit. See bit asub RTP-pealkirja esimeses baidis, see on vĂ€rvitud tĂŒrkiissinisega. Pange tĂ€hele, et kĂ”ik andmekoormuse baidid on vÀÀrtusega 0xFF — nii nĂ€eb tĂŒhjus vĂ€lja u-law formaadis.

RTP-paketi pealkiri koosneb 12 kohustuslikust baitist, kuid kahel juhul vÔib see olla pikem:

  • Kui pakett edastab heli, mis saadakse mitme allika (RTP-voogude) signaalide segamisel, siis pĂ€rast esimesi 12 baidi pealkirja asub allikate identifikaatorite tabel, millel pĂ”hinevate andmekoormuste loetelu on kasutatud selle paketi andmekoormuse loomisel. Samuti, esimeses baidis asuva pealkirja madalamates neljas bitis (vĂ€lja Kaasaaitavate allikate identifikaatorite arv) nĂ€itab allikate arvu. VĂ€li suurus on 4 bitti, seega vĂ”ib tabel sisaldada kuni 15 allika identifikaatorit. IgaĂŒks neist vĂ”tab 4 baiti. Seda tabelit kasutatakse konverentsikĂ”ne korraldamisel.

  • Kui pealkirjal on laiendus. Sel juhul seadistatakse esimeses bitti pealkirjas bit X. Laiendatud pealkirjas, pĂ€rast osalejate tabelit (kui need on olemas), asub ĂŒhe sĂ”na suurune laienduse pealkiri, millele jĂ€rgneb laiendussĂ”na. Laiendus on byte'ide kogum, mida vĂ”ite kasutada tĂ€iendavate andmete edastamiseks. Standard ei reguleeri nende andmete formaati — see vĂ”ib olla igaĂŒht. NĂ€iteks vĂ”ivad need olla tĂ€iendavad seadistused seadme jaoks, mis vastab RTP-pakettidele. MĂ”nede rakenduste jaoks on siiski vĂ€lja töötatud laiendatud pealkirja standardid. NĂ€iteks on see tehtud sidetehnika jaoks standardis ED-137 (VoIP ATM komponentide vastastikuse töötluse standardid).

NĂŒĂŒd vaatame pealkirja vĂ€lju lĂ€hemalt. Allpool on esitatud RTP-pealkirja kanoniline joonis, mille ma samuti samadesse vĂ€rvidesse vĂ€rvisin.

Uurime VoIP-mootorit Mediastreamer2. Osa 8
VER — protokolli versiooni number (praegune versioon on 2);

P — lipp, mis seadistatakse juhtudel, kui RTP-pakett tĂ€iendatakse lĂ”pus tĂŒhjade baitidega;

X — lipp, mis nĂ€itab, et pealkiri on laiendatud;

CC — sisaldab CSRC-identifikaatorite arvu, mis jĂ€rgneb kindlale pealkirjale (sĂ”nade 1..3 jĂ€rel), joonisel nimekiri ei ole nĂ€idatud;

M — kaadri alguse vĂ”i kĂ”ne esinemise marker kanalis (kui kasutatakse kĂ”nepausi detektorit). Kui vastuvĂ”tjal ei ole kĂ”nepausi detektorit, peab see bit olema pidevalt seadistatud;

PTYPE — nĂ€itab koormuse formaati;

Sequence number — paketi number, mida kasutatakse pakettide taasesituse jĂ€rjekorra taastamiseks, kuna on reaalne olukord, kus paketid vĂ”ivad vastuvĂ”tjale jĂ”uda mitte selles jĂ€rjekorras, milles need saadeti. AlgvÀÀrtus peab olema juhuslik, et kui RTP-voo krĂŒpteerimine toimub, oleks selle murdmine raskendatud. Samuti vĂ”imaldab see vĂ€li avastada pakettide kadumist;

Aeg — ajatemponĂ€it. Aeg mÔÔdetakse signaalinĂ€idete jĂ€rgi, st kui pakett sisaldab 160 nĂ€idet, siis jĂ€rgmise paketi ajatemponĂ€it on 160 vĂ”rra suurem. AjamtemponĂ€idiku algvÀÀrtus peaks olema juhuslik;

SSRC — paketi allika identifikaator, see peab olema ainulaadne. Seda on parem genereerida juhuslikult enne RTP-voo kĂ€ivitamist.

Kui hakkate arendama oma RTP-paketisaatjat vĂ”i -vastuvĂ”tjat, peate mitte ĂŒhe korra vaatama oma pakette, et suurendada tootlikkust. Soovitan teil omandada paketifiltrite kasutamise oskused TSharkis, see vĂ”imaldab jÀÀdvustada ainult neid pakette, mis on teile huvipakkuvad. Tingimustes, kus vĂ”rgus töötavad kĂŒmned RTP-seadmed, on see vĂ€ga vÀÀrtuslik. TSharki kĂ€sureal mÀÀratakse filtreerimise parameetrid valiku "-f" abil. Kasutasime seda valikut, kui soovisime jÀÀdvustada pakette pordilt 8010:
-f "udp port 8010"
Filtreerimise parameetrid on oma olemuselt kriteeriumide kogum, millele peab vastama "pĂŒĂŒtud" paket. Tingimus vĂ”ib kontrollida aadressi, porti, teatud byte'i vÀÀrtust pakendis. Tingimusi saab omavahel liita loogiliste operatsioonidega "JA", "VĂ”i" jne. VĂ€ga vĂ”imas tööriist.

Kui soovite nĂ€ha pakettide vĂ€ljade muutumise dĂŒnaamikat, peate vĂ€ljundi kopeerima TShark faili, nagu eelmisest artiklist oli nĂ€idatud, kasutades vĂ€ljundi edasiĂŒlekannet TShark sisendisse tee. SeejĂ€rel avades logifaili kasutades less, vim vĂ”i mĂ”nda muud tööriista, mis suudab kiiresti töötada suurte tekstifailidega ja teha ridade otsingut, saate vĂ€lja selgitada kĂ”ik paketivĂ€ljade kĂ€itumise nĂŒansid RTP-voos.

Kui peate kuulama RTP-vooga edastatavat signaali, peate kasutama versiooni TShark c graafilise liidesega Wireshark. Lihtsate hiiremanipulatsioonide abil on seal vĂ”imalik kuulata, nĂ€ha signaali osillogrammi. Kuid ĂŒhe tingimuse juures — kui see on kodeeritud u-law vĂ”i a-law formaadis.

JĂ€rgmisel artiklis teeme koos koosoleku duplex-seadmestiku. Varustage end paariga kĂ”rvaklappe ja ĂŒhe vestluspartneriga.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster