Istraživanje Mediastreamer2 VoIP mehanizma. dio 8

Materijal članka preuzet je iz mog zen kanal.

Istraživanje Mediastreamer2 VoIP mehanizma. dio 8

Struktura RTP paketa

U posljednjih članak mi koristimo TShark izvršio snimanje RTP paketa koji su razmjenjivani između našeg prijamnika i odašiljača. Pa, u ovom ćemo obojiti elemente paketa u različite boje i razgovarati o njihovoj namjeni.

Pogledajmo isto pakiranje, ali s marginama u boji i naljepnicama s objašnjenjima:
Istraživanje Mediastreamer2 VoIP mehanizma. dio 8

Na dnu popisa, bajtovi koji čine RTP paket su obojeni, a to je pak korisni teret UDP paketa (njegovo zaglavlje je zaokruženo crnom bojom). Obojene pozadine označavaju bajtove RTP zaglavlja, a blok podataka koji sadrži sadržaj RTP paketa označen je zelenom bojom. Podaci su prikazani u heksadecimalnom formatu. U našem slučaju radi se o audio signalu komprimiranom prema u-zakonu (mu-zakonu), tj. jedan uzorak ima veličinu od 1 bajta. Budući da smo koristili zadanu brzinu uzorkovanja (8000 Hz), pri brzini paketa od 50 Hz, svaki RTP paket trebao bi sadržavati 160 bajtova korisnog opterećenja. To ćemo vidjeti prebrojavanjem bajtova u zelenom području, trebalo bi ih biti 10 redaka.

Prema standardu, količina podataka u korisnom teretu mora biti višekratnik broja četiri, odnosno mora sadržavati cijeli broj riječi od četiri bajta. Ako se dogodi da vaš korisni teret ne odgovara ovom pravilu, tada trebate dodati bajtove s nultom vrijednošću na kraj korisnog tereta i postaviti bit Padding. Ovaj bit se nalazi u prvom bajtu RTP zaglavlja i obojen je tirkizno. Imajte na umu da su svi bajtovi nosivosti 0xFF, tako izgleda tišina u-zakona.

Zaglavlje RTP paketa sastoji se od 12 obaveznih bajtova, ali u dva slučaja može biti duže:

  • Kada paket nosi audio signal dobiven miješanjem signala iz više izvora (RTP tokova), tada se nakon prvih 12 bajtova zaglavlja nalazi tablica s popisom identifikatora izvora čiji su sadržaji korišteni za kreiranje sadržaja ovog paketa. U ovom slučaju, u niža četiri bita prvog bajta zaglavlja (polje Broje se identifikatori izvora doprinosa) označava broj izvora. Veličina polja je 4 bita, tako da tablica može sadržavati do 15 identifikatora izvora. Svaki od njih zauzima 4 bajta. Ova se tablica koristi prilikom postavljanja konferencijskog poziva.

  • Kada naslov ima nastavak . U ovom slučaju, bit je postavljen u prvom bajtu zaglavlja X. U proširenom zaglavlju, iza tablice sudionika (ako postoji), nalazi se jednoriječno zaglavlje proširenja, a zatim slijede proširene riječi. Ekstenzija je skup bajtova koje možete koristiti za prijenos dodatnih podataka. Standard ne propisuje format ovih podataka - to može biti bilo što. Na primjer, to mogu biti neke dodatne postavke za uređaj koji prima RTP pakete. Za neke primjene, međutim, razvijeni su prošireni standardi zaglavlja. To se radi, na primjer, za komunikacije u standardu ED-137 (Standardi interoperabilnosti za VoIP ATM komponente).

Sada pogledajmo detaljnije polja zaglavlja. Ispod je kanonska slika sa strukturom RTP zaglavlja, kojoj također nisam mogao odoljeti i slikao u istim bojama.

Istraživanje Mediastreamer2 VoIP mehanizma. dio 8
VER — broj verzije protokola (trenutna verzija 2);

P - zastavica koja se postavlja u slučajevima kada je RTP paket dopunjen praznim bajtovima na kraju;

X - oznaka da je zaglavlje prošireno;

CC — sadrži broj CSRC identifikatora koji slijede nakon konstantnog zaglavlja (nakon riječi 1..3), tablica nije prikazana na slici;

M — oznaka početka okvira ili prisutnosti govora u kanalu (ako se koristi detektor govorne stanke). Ako prijamnik ne sadrži detektor pauze govora, tada ovaj bit mora biti trajno postavljen;

PTYPE - specificira format korisnog opterećenja;

Redni broj - broj paketa, koji se koristi za vraćanje redoslijeda u kojem se paketi reproduciraju, budući da je stvarna situacija kada paketi mogu doći do primatelja u pogrešnom redoslijedu kojim su poslani. Početna vrijednost mora biti slučajna, to je učinjeno tako da ako je RTP stream šifriran, bit će ga teško hakirati. Također, ovo polje vam omogućuje otkrivanje propuštenih paketa;

Timestamp - vremenska oznaka. Vrijeme se mjeri u uzorcima signala, tj. ako burst sadrži 160 uzoraka, tada će vremenska oznaka sljedećeg niza biti veća za 160. Početna vrijednost vremenske oznake mora biti slučajna;

SSRC — identifikator izvora paketa, mora biti jedinstven. Bolje ga je generirati nasumično prije pokretanja RTP streama.

Ako razvijete vlastiti odašiljač ili prijemnik RTP paketa, morat ćete pogledati svoje pakete više puta kako biste povećali produktivnost, preporučujem da naučite kako koristiti filtriranje paketa u TSharku, ono vam omogućuje da uhvatite samo one pakete koji vas zanimaju. U okruženju u kojem deseci RTP uređaja rade na mreži, ovo je vrlo vrijedno. U naredbenom retku TSharka opcije filtriranja navedene su s opcijom "-f". Koristili smo ovu opciju kada smo htjeli uhvatiti pakete s porta 8010:
-f "udp port 8010"
Parametri filtriranja su u biti skup kriterija koje "uhvaćeni" paket mora zadovoljiti. Uvjet može provjeriti adresu, port, vrijednost određenog bajta u paketu. Uvjeti se mogu kombinirati s logičkim operacijama "I", "ILI", itd. Vrlo moćan alat.

Ako želite vidjeti dinamiku promjena polja u serijama, morat ćete duplicirati izlaz TShark u datoteku, kao što je prikazano u prošlom članku, prosljeđivanjem izlaza TShark na ulazu meta. Zatim otvorite datoteku dnevnika s manje, vim ili neki drugi alat koji može brzo raditi s ogromnim tekstualnim datotekama i pretraživati ​​nizove, možete saznati sve nijanse ponašanja polja paketa u RTP streamu.

Ako trebate slušati signal koji prenosi RTP stream, tada morate koristiti verziju TShark s vizualnim sučeljem Wireshark. Uz jednostavne manipulacije mišem, možete slušati i vidjeti valni oblik signala. Ali pod jednim uvjetom - ako je kodiran u u-law ili a-low formatu.

Sljedeći članak napravit ćemo dupleks portafon kod vas. Opskrbite se parom slušalica i jednim sugovornikom.

Izvor: www.habr.com

Dodajte komentar