Materiali i artikullit është marrë nga kanali im .

Struktura e paketit RTP
Në të kaluarën ne kemi përdorur TShark kapjen e paketeve RTP që shkëmbehen midis marrësit dhe transmetuesit tonë. Në këtë pjesë, do të ngjyrosim elementët e paketës në ngjyra të ndryshme dhe do të flasim për qëllimin e tyre.
Të shohim të njëjtin paket, por tashmë me fushat e ngjyrosura dhe me shënime shpjeguese:

Në fund të listimit janë ngjyrosur bajtat që përbëjnë paketën RTP, e cila ndihmon si ngarkesë e paketës UDP (kriga e saj është e rrethuar me një vijë të zezë). Fushat e ngjyrosura tregojnë bajtat e titullit RTP, ndërsa ngjyra e gjelbër tregon bllokun e të dhënave që përmban ngarkesën e paketës RTP. Të dhënat janë paraqitur në formatin hex. Në rastin tonë, ky është një sinjal audio i kompresuar sipas ligjit u (ligjit μ), dmth. një mostër ka një madhësi prej 1 bajti. Meqenëse kemi përdorur frekuencën e mostrimit të vendosur si parazgjedhje (8000 Hz), atëherë me një frekuencë paketash 50 Hz, çdo paketë RTP duhet të përmbajë 160 bajta ngarkesë. Këtë do ta shohim, duke numëruar bajtat në zonën e gjelbër, të cilët duhet të jenë 10 rreshta.
Sipas standardit, numri i të dhënave në ngarkesë duhet të jetë shumëfish i katër, ose ndryshe, duhet të përmbajë një numër të plotë të fjalëve katër bajtesh. Nëse ndodh që ngarkesa juaj të mos përmbushë këtë rregull, duhet të shtoni bajta me vlera zero në fund të ngarkesës dhe të vendosni bitin Padding. Ky bit ndodhet në bajtin e parë të titullit RTP, i cili është ngjyrosur me ngjyrë të kaltër. Vini re se të gjithë bajtat e ngarkesës kanë vlerë 0xFF — kështu duket heshtja në formatin u-law.
Titulli i paketës RTP përbëhet nga 12 bajta të domosdoshëm, por në dy raste mund të jetë më i gjatë:
Kur paketa përmban një sinjal audio të marrë nga përzierja e sinjaleve nga disa burime (rrjedha RTP), pas 12 bajtëve të parë të titullit ndodhet një tabelë me një listë të identifikatorëve të burimeve, ngarkesat e të cilave u përdorën për të krijuar ngarkesën e kësaj pakete. Në këtë rast, në katër bitët më të ulët të bajtëve të parë të titullit (fushën Contributing source identifiers count) tregohet numri i burimeve. Madhësia e fushës është 4 bitë, përkatësisht tabela mund të përmbajë deri në 15 identifikatorë burimesh, secili prej të cilëve zë 4 bajta. Kjo tabelë përdoret për organizimin e lidhjeve konferenciale.
Kur titulli ka zgjerim. Në këtë rast, në bajtin e parë të titullit vendoset biti X. Në titullin e zgjeruar, pas tabelës së pjesëmarrësve (nëse ka), ndodhet një titull zgjerimi i madhësisë një fjalë, dhe pas tij fjalët e zgjerimit. Zgjerimi është një grup bajtash që mund të përdorni për të transmetuar të dhëna shtesë. Standardi nuk përcakton formatin e këtyre të dhënave — ai mund të jetë çfarëdo. Për shembull, këto mund të jenë disa cilësime shtesë për pajisjen që merr paketat RTP. Megjithatë, për disa aplikime janë zhvilluar standarde të titullit të zgjeruar. Kështu është bërë, për shembull, për mjete komunikimi sipas standardit ED-137 (Standartet e Ndërveprimit për Komponentet VoIP ATM).
Tani le të shqyrtojmë fushat e titullit më në detaje. Më poshtë është një imazh kanonik me strukturën e titullit RTP, të cilën gjithashtu nuk mund të rezistoja dhe e ngjyrosja në të njëjtat ngjyra.

VER — numri i versionit të protokollit (versioni aktual 2);
P — një flamur që vendoset në raste kur paketa RTP plotësohet me bajta bosh në fund;
X — një flamur që tregon se titulli është i zgjeruar;
CC — përmban numrin e identifikatorëve CSRC që pasojnë titullin e qëndrueshëm (pas fjalëve 1..3), në ilustrim tabela nuk është e treguar;
M — një shenjë e fillimit të fotokopjes ose e pranisë së foljes në kanal (nëse përdoret një detektor pauze në të folur). Nëse marrësi nuk përmban një detektor pauze në të folur, ky bit duhet të vendoset përherë;
PTYPE — tregon formatin e ngarkesës;
Numri i sekuencës — numri i paketës, përdoret për të rikuperuar rendin e riprodhimit të paketave, pasi situata reale kur paketat mund të arrijnë te marrësi jo në rendin që u dërguan. Vlera fillestare duhet të jetë rastësore, kjo bëhet për të ndërlikuar thyerjen e enkriptimit të rrjedhës RTP. Gjithashtu, kjo fushë lejon të zbulojë humbjet e paketave;
Marka e kohës — shenja e kohës. Koha matet në mostra të sinjalit, dmth. nëse paketa përmban 160 mostra, marka e kohës për paketën tjetër do të jetë më e madhe me 160. Vlera fillestare e shenjës së kohës duhet të jetë rastësore;
SSRC — identifikatori i burimit të paketës, ai duhet të jetë unik. Është më mirë ta gjeneroni rastësisht para fillimit të rrjedhës RTP.
Nëse do të zhvillonit transmetuesin ose marrësin tuaj të paketeve RTP, do t'ju duhet të shqyrtoni paketat tuaja më shumë se një herë për të përmirësuar produktivitetin. Ju rekomandoj të mësoni përdorimin e filtrimit të paketave në TShark, e cila lejon kapjen e vetëm atyre paketave që janë të interesit për ju. Në kushte kur në rrjet funksionojnë dhjetëra pajisje RTP, kjo është shumë e çmuar. Në komandën e linjës, parametrat e filtrimit caktohen me opsionin "-f". Ne e përdorëm këtë opsion kur dëshiruam të kapnim paketat nga porta 8010:
-f "udp port 8010"
Parametrat e filtrimit, në thelb, janë një grup kriteresh që duhet të përmbushë "paketa e kapur". Kushti mund të kontrollojë adresën, portin, vlerën e një bajti të caktuar në paketë. Kushtet mund të bashkohen me operacione logjike "DHE", "O" etj. Një mjet shumë i fuqishëm.
Nëse dëshironi të shihni dinamikën e ndryshimit të fushave në paketat, ju nevojitet ta dyfishoni daljen TShark në një skedar, siç u tregua në artikullin e kaluar, përmes dërgimit të daljes TShark në hyrje tee. Më pas, duke hapur skedarin e logut me less, vim ose ndonjë mjet tjetër që është i aftë të punojë shpejt me skedarë të mëdhenj tekstualë dhe të kryejë kërkime të rreshtave, do të jeni në gjendje të zbuloj çdo detaj të sjelljes së fushave të paketave në rrjedhën RTP.
Nëse ju nevojitet të dëgjoni sinjalin që transmetohet në rrjedhën RTP, atëherë duhet të përdorni versionin TShark me ndërfaqe vizuale Wireshark. Me anë të manovrave të thjeshta me miun, aty mund të dëgjoni, të shihni oscillogramin e sinjalit. Por me një kusht — nëse ai do të jetë i koduar në formatin u-law ose a-law.
Në të ardhmen ne do të krijojmë një pajisje për bisedë duplex. Sigurohuni që të keni një palë kufje dhe një bisedues.
Burimi: habr.com
