Eksplorimi i motorit VoIP Mediastreamer2. Pjesa 8

Materiali i artikullit është marrë nga ime kanal zen.

Eksplorimi i motorit VoIP Mediastreamer2. Pjesa 8

Struktura e paketës RTP

Në të fundit artikull ne jemi duke përdorur TShark kryen kapjen e paketave RTP që u shkëmbyen midis marrësit dhe transmetuesit tonë. Epo, në këtë do të pikturojmë elementët e paketës me ngjyra të ndryshme dhe do të flasim për qëllimin e tyre.

Le t'i hedhim një sy të njëjtës paketë, por me kufij me ngjyra dhe etiketa shpjeguese:
Eksplorimi i motorit VoIP Mediastreamer2. Pjesa 8

Në fund të listimit, bajtet që përbëjnë paketën RTP janë të ngjyrosura, dhe kjo nga ana tjetër është ngarkesa e paketës UDP (titulli i saj është i rrethuar në të zezë). Sfondet e ngjyrosura tregojnë bajtët e kokës RTP dhe blloku i të dhënave që përmban ngarkesën e paketës RTP theksohet me jeshile. Të dhënat paraqiten në format heksadecimal. Në rastin tonë, ky është një sinjal audio i ngjeshur sipas u-ligjit (mu-law), d.m.th. një mostër ka një madhësi prej 1 bajt. Meqenëse kemi përdorur shpejtësinë e mostrës së paracaktuar (8000 Hz), me një shpejtësi pakete prej 50 Hz, çdo paketë RTP duhet të përmbajë 160 bajt ngarkesë. Këtë do ta shohim duke numëruar bajtet në zonën e gjelbër, duhet të jenë 10 rreshta.

Sipas standardit, sasia e të dhënave në ngarkesë duhet të jetë shumëfish i katër, ose me fjalë të tjera, duhet të përmbajë një numër të plotë fjalësh katër bajtë. Nëse ndodh që ngarkesa juaj të mos përputhet me këtë rregull, atëherë duhet të shtoni bajt me vlerë zero në fund të ngarkesës dhe të vendosni bitin e mbushjes. Ky bit ndodhet në bajtin e parë të kokës RTP dhe është me ngjyrë bruz. Vini re se të gjithë bajtët e ngarkesës janë 0xFF, si duket heshtja u-law.

Kreu i paketës RTP përbëhet nga 12 bajtë të detyrueshëm, por në dy raste mund të jetë më i gjatë:

  • Kur një paketë mbart një sinjal audio të marrë nga përzierja e sinjaleve nga disa burime (rrjedha RTP), atëherë pas 12 bajteve të para të kokës ka një tabelë me një listë të identifikuesve të burimit, ngarkesat e të cilave janë përdorur për të krijuar ngarkesën e kësaj pakete. Në këtë rast, në katër bitet e poshtme të bajtit të parë të kokës (fusha Numri i identifikuesve të burimit që kontribuon) tregon numrin e burimeve. Madhësia e fushës është 4 bit, kështu që tabela mund të përmbajë deri në 15 identifikues burimi. Secila prej të cilave zë 4 bajt. Kjo tabelë përdoret kur konfiguroni një telefonatë konferencë.

  • Kur titulli ka zgjatimin . Në këtë rast, biti vendoset në bajtin e parë të kokës X. Në kokën e zgjeruar, pas tabelës së pjesëmarrësve (nëse ka), ka një titull shtesë me një fjalë, i ndjekur nga fjalët shtesë. Një shtesë është një koleksion bajtësh që mund t'i përdorni për të transferuar të dhëna shtesë. Standardi nuk përcakton formatin e këtyre të dhënave - mund të jetë çdo gjë. Për shembull, mund të jenë disa cilësime shtesë për pajisjen që merr pako RTP. Për disa aplikacione, megjithatë, janë zhvilluar standarde të zgjeruara të kokës. Kjo bëhet, për shembull, për komunikimet në standard ED-137 (Standardet e ndërveprimit për komponentët e ATM të VoIP).

Tani le të shohim më në detaje fushat e kokës. Më poshtë është një fotografi kanonike me strukturën e kokës RTP, të cilës gjithashtu nuk mund t'i rezistoja dhe e pikturova me të njëjtat ngjyra.

Eksplorimi i motorit VoIP Mediastreamer2. Pjesa 8
VER — numri i versionit të protokollit (versioni aktual 2);

P - një flamur që vendoset në rastet kur paketa RTP plotësohet me bajt bosh në fund;

X - flamuri që koka është e zgjatur;

CC — përmban numrin e identifikuesve CSRC që ndjekin kokën konstante (pas fjalëve 1..3), tabela nuk është paraqitur në figurë;

M — shënuesi i fillimit të një kornize ose prania e të folurit në kanal (nëse përdoret një detektor i pauzës së të folurit). Nëse marrësi nuk përmban një detektor për pauzë të të folurit, atëherë ky bit do të vendoset përgjithmonë;

PTYPE - specifikon formatin e ngarkesës;

Numri i sekuencës - numri i paketës, përdoret për të rivendosur rendin në të cilin luhen paketat, pasi situata reale është kur paketat mund të arrijnë te marrësi në rendin e gabuar në të cilin janë dërguar. Vlera fillestare duhet të jetë e rastësishme, kjo bëhet në mënyrë që nëse rryma RTP është e koduar, do të jetë e vështirë ta hakoni atë. Gjithashtu, kjo fushë ju lejon të zbuloni paketat e humbura;

Timestamp - vula kohore. Koha matet në mostrat e sinjalit, d.m.th. nëse një shpërthim përmban 160 mostra, atëherë vula kohore e shpërthimit tjetër do të jetë 160 më shumë. Vlera fillestare e vulës kohore duhet të jetë e rastësishme;

SSRC — identifikuesi i burimit të paketës, ai duhet të jetë unik. Është më mirë ta gjeneroni në mënyrë të rastësishme përpara se të filloni transmetimin RTP.

Nëse zhvilloni transmetuesin ose marrësin tuaj të paketave RTP, do t'ju duhet të shikoni paketat tuaja më shumë se një herë në mënyrë që të rrisni produktivitetin, ju rekomandoj të mësoni se si të përdorni filtrimin e paketave në TShark, ju lejon të kapni vetëm ato paketa që janë me interes për ju. Në një mjedis ku dhjetëra pajisje RTP funksionojnë në rrjet, kjo është shumë e vlefshme. Në linjën e komandës TShark, opsionet e filtrimit specifikohen me opsionin "-f". Ne e përdorëm këtë opsion kur donim të kapnim paketa nga porti 8010:
-f "udp port 8010"
Parametrat e filtrimit janë në thelb një grup kriteresh me të cilat duhet të përputhet një paketë "e kapur". Kushti mund të kontrollojë adresën, portin, vlerën e një bajt të caktuar në paketë. Kushtet mund të kombinohen me operacionet logjike "AND", "OR", etj. Një mjet shumë i fuqishëm.

Nëse dëshironi të shikoni dinamikën e ndryshimeve të fushës në grupe, do t'ju duhet të dyfishoni rezultatin TShark në një skedar, siç tregohet në artikullin e fundit, duke kaluar daljen TShark në hyrje shkronja T. Tjetra, hapni skedarin e regjistrit me më pak, vim ose një mjet tjetër që mund të punojë shpejt me skedarë të mëdhenj teksti dhe të kërkojë vargje, mund të zbuloni të gjitha nuancat e sjelljes së fushave të paketave në një rrjedhë RTP.

Nëse keni nevojë të dëgjoni sinjalin e transmetuar nga rrjedha RTP, atëherë duhet të përdorni versionin TShark me ndërfaqe vizuale Wireshark. Me manipulime të thjeshta të miut, ju mund të dëgjoni dhe shihni formën e valës së sinjalit. Por me një kusht - nëse është i koduar në formatin u-law ose a-low.

Tjetra artikull ne do të bëjmë një intercom dupleks me ju. Mblidhni një palë kufje dhe një bashkëbisedues.

Burimi: www.habr.com

Shto një koment