Raziskovanje mehanizma VoIP Mediastreamer2. 8. del

Gradivo članka je vzeto iz mojega zen kanal.

Raziskovanje mehanizma VoIP Mediastreamer2. 8. del

Struktura paketa RTP

V preteklosti članek uporabljamo TShark zajetih RTP paketov, izmenjanih med našim sprejemnikom in oddajnikom. No, v tem bomo pobarvali elemente paketa v različne barve in se pogovarjali o njihovem namenu.

Oglejmo si isti paket, vendar z obarvanimi polji in pojasnili:
Raziskovanje mehanizma VoIP Mediastreamer2. 8. del

Na dnu seznama so bajti, ki sestavljajo paket RTP, ki je koristni tovor paketa UDP (njegova glava je obrobljena s črno). Barvna ozadja označujejo bajte glave RTP, zelena pa podatkovni blok, ki vsebuje vsebino paketa RTP. Podatki so tam predstavljeni v šestnajstiški obliki. V našem primeru je to zvočni signal, stisnjen po u-zakonu (mu-law), tj. en vzorec je velik 1 bajt. Ker smo uporabili privzeto hitrost vzorčenja (8000 Hz), mora vsak paket RTP vsebovati 50 bajtov koristnega tovora pri hitrosti paketov 160 Hz. To bomo videli s štetjem bajtov v zelenem območju, mora biti 10 vrstic.

V skladu s standardom mora biti količina podatkov v obremenitvi večkratnik števila štiri ali z drugimi besedami mora vsebovati celo število štiribajtnih besed. Če se zgodi, da vaš tovor ne sledi temu pravilu, potem morate dodati bajte z ničelnimi vrednostmi na konec koristnega tovora in nastaviti bit Padding. Ta bit se nahaja v prvem bajtu glave RTP in je obarvan turkizno. Upoštevajte, da imajo vsi bajti koristnega tovora vrednost 0xFF - tako je videti tišina v formatu u-law.

Glava paketa RTP je sestavljena iz 12 zahtevanih bajtov, v dveh primerih pa je lahko daljša:

  • Ko paket nosi zvočni signal, pridobljen z mešanjem signalov iz več virov (RTP tokov), je za prvimi 12 bajti glave tabela s seznamom izvornih identifikatorjev, katerih obremenitve so bile uporabljene za ustvarjanje obremenitve tega paketa. V tem primeru v spodnjih štirih bitih prvega bajta glave (polje Prispevajoči izvorni identifikatorji štejejo) je navedeno število virov. Velikost polja je 4 bite, tako da lahko tabela vsebuje do 15 izvornih identifikatorjev. Vsak od njih ima 4 bajte. Ta tabela se uporablja pri organizaciji konferenčnega klica.

  • Ko ima naslov podaljšek. V tem primeru je nastavljen bit v prvem bajtu glave X. V razširjeni glavi je za tabelo udeležencev (če so) enobesedna razširitev, ki ji sledijo besede razširitve. Razširitev je niz bajtov, ki jih lahko uporabite za prenos dodatnih podatkov. Standard ne določa oblike teh podatkov – lahko je karkoli. To so lahko na primer nekatere dodatne nastavitve za napravo, ki sprejema pakete RTP. Za nekatere aplikacije pa so bili razviti razširjeni standardi glave. To se naredi na primer za komunikacijsko opremo v standardu ED-137 (Standardi interoperabilnosti za komponente ATM VoIP).

Zdaj pa si podrobneje oglejmo polja glave. Spodaj je kanonična slika s strukturo RTP glave, ki se ji tudi jaz nisem mogel upreti in sem jo pobarval v enakih barvah.

Raziskovanje mehanizma VoIP Mediastreamer2. 8. del
VER — številka različice protokola (trenutna različica 2);

P — zastavica, ki se nastavi v primerih, ko je paket RTP na koncu dopolnjen s praznimi bajti;

X — zastavica, da je glava razširjena;

CC — vsebuje število identifikatorjev CSRC, ki sledijo glavi konstante (za besedami 1..3), tabela ni prikazana na sliki;

M — označevalec začetka okvira ali prisotnosti govora v kanalu (če se uporablja detektor premora govora). Če sprejemnik ne vsebuje detektorja premora govora, mora biti ta bit trajno nastavljen;

PTYPE — označuje obliko tovora;

Zaporedna številka — številka paketa, ki se uporablja za obnovitev vrstnega reda predvajanja paketov, saj je dejansko stanje, ko lahko paketi dosežejo prejemnika v drugačnem vrstnem redu, kot so bili poslani. Začetna vrednost mora biti naključna; to se naredi tako, da bo v primeru uporabe šifriranja toka RTP težko vdreti. To polje vam omogoča tudi zaznavanje padcev paketov;

Timestamp — časovni žig. Čas se meri v vzorcih signalov, tj. če paket vsebuje 160 vzorcev, bo časovni žig naslednjega paketa večji za 160. Začetna vrednost časovnega žiga mora biti naključna;

SSRC — izvorni identifikator paketa, mora biti edinstven. Bolje je, da ga ustvarite naključno, preden začnete tok RTP.

Če razvijete lasten oddajnik ali sprejemnik paketov RTP, boste morali svoje pakete pogledati večkrat, zato za povečanje produktivnosti priporočam, da obvladate uporabo filtriranja paketov v TSharku, saj vam omogoča zajem le teh paketov ki vas zanimajo. V pogojih, ko v omrežju deluje več deset naprav RTP, je to zelo dragoceno. V ukazni vrstici TShark so parametri filtriranja podani z možnostjo "-f". To možnost smo uporabili, ko smo želeli zajeti pakete iz vrat 8010:
-f "udp port 8010"
Parametri filtriranja so v bistvu nabor kriterijev, ki jih mora izpolnjevati "ujet" paket. Pogoj lahko preveri naslov, vrata ali vrednost določenega bajta v paketu. Pogoje je mogoče kombinirati z uporabo logičnih operacij "IN", "ALI" itd. Zelo močno orodje.

Če si želite ogledati dinamiko sprememb polja v paketih, boste morali podvojiti izhod TShark v datoteko, kot je bilo prikazano v prejšnjem članku, z uporabo izhodnega prenosa TShark na vhodu tee. Nato odprite dnevniško datoteko z manj, vim ali drugo orodje, ki lahko hitro dela z ogromnimi besedilnimi datotekami in išče nize, lahko ugotovite vse nianse obnašanja paketnih polj v toku RTP.

Če morate poslušati signal, ki ga prenaša tok RTP, morate uporabiti različico TShark z vizualnim vmesnikom Wireshark. S preprostimi manipulacijami z miško lahko poslušate in vidite oscilogram signala. Vendar pod enim pogojem - če je kodiran v formatu u-law ali a-low.

Naslednji članek Z vami izdelamo duplex domofon. Založite se z nekaj slušalkami in enim sogovornikom.

Vir: www.habr.com

Dodaj komentar