Mediastreamer2 VoIP-mootori uurimine. 8. osa

Artikli materjal on võetud minu zen kanal.

Mediastreamer2 VoIP-mootori uurimine. 8. osa

RTP paketi struktuur

Viimases siit me kasutame TShark sooritas meie vastuvõtja ja saatja vahel vahetatud RTP-pakettide püüdmise. Noh, selles värvime pakendi elemendid erinevates värvides ja räägime nende otstarbest.

Vaatame sama pakendit, kuid värviliste veeriste ja selgitavate siltidega:
Mediastreamer2 VoIP-mootori uurimine. 8. osa

Loendi allosas on RTP-paketi moodustavad baidid toonitud ja see omakorda on UDP-paketi kasulik koormus (selle päis on musta ringiga). Värvilised taustad tähistavad RTP päise baite ja andmeplokk, mis sisaldab RTP paketi kasulikku koormust, on roheliselt esile tõstetud. Andmed esitatakse kuueteistkümnendsüsteemis. Meie puhul on tegemist u-seaduse (mu-seaduse) järgi kokkusurutud helisignaaliga, st. ühe proovi suurus on 1 bait. Kuna kasutasime vaikimisi diskreetimissagedust (8000 Hz) paketisagedusel 50 Hz, peaks iga RTP pakett sisaldama 160 baiti kasulikku koormust. Seda näeme haljasala baite loendades, neid peaks olema 10 rida.

Standardi kohaselt peab kasuliku koormuse andmemaht olema neljakordne ehk see peab sisaldama täisarv neljabaidiseid sõnu. Kui juhtub, et teie koormus ei vasta sellele reeglile, peate lisama nullväärtusega baidid kasuliku koormuse lõppu ja määrama Padding biti. See bitt asub RTP päise esimeses baidis ja on türkiissinine. Pange tähele, et kõik kasuliku koormuse baidid on 0xFF, mis näeb välja u-seaduse vaikus.

RTP-paketi päis koosneb 12 kohustuslikust baidist, kuid kahel juhul võib see olla pikem:

  • Kui pakett kannab helisignaali, mis on saadud mitme allika signaalide segamisel (RTP vood), siis pärast päise esimest 12 baiti on tabel allika identifikaatorite loendiga, mille kasulikku koormust kasutati selle paketi kasuliku koormuse moodustamiseks. Sel juhul päise esimese baidi alumises neljas bitis (väli Kaasatavate allika identifikaatorite arv) näitab allikate arvu. Välja suurus on 4 bitti, seega võib tabel sisaldada kuni 15 allika identifikaatorit. Igaüks neist võtab enda alla 4 baiti. Seda tabelit kasutatakse konverentskõne seadistamisel.

  • Kui pealkirjal on laiend . Sel juhul määratakse bitt päise esimesse baiti X. Laiendatud päises on osalejate tabeli järel (kui see on olemas) ühesõnaline laiendi päis, millele järgnevad laiendussõnad. Laiendus on baitide kogum, mida saate kasutada täiendavate andmete edastamiseks. Standard ei sätesta nende andmete vormingut – see võib olla ükskõik milline. Näiteks võivad need olla mõned lisaseaded seadme jaoks, mis võtab vastu RTP-pakette. Mõne rakenduse jaoks on aga välja töötatud laiendatud päisestandardid. Seda tehakse näiteks standardis oleva kommunikatsiooni jaoks ED-137 (VoIP ATM-i komponentide koostalitlusvõime standardid).

Vaatame nüüd päisevälju üksikasjalikumalt. Allpool on kanooniline pilt RTP päise struktuuriga, millele ma samuti ei suutnud vastu panna ja värvisin samade värvidega.

Mediastreamer2 VoIP-mootori uurimine. 8. osa
Ver — protokolli versiooni number (praegune versioon 2);

P - lipp, mis määratakse juhtudel, kui RTP-paketti täiendatakse lõpus tühjade baitidega;

X - märkige, et päis on pikendatud;

CC — sisaldab konstantsele päisele järgnevate CSRC identifikaatorite arvu (pärast sõnu 1..3), tabelit joonisel ei näidata;

M — kaadri alguse marker või kõne olemasolu kanalis (kui kasutatakse kõnepausi detektorit). Kui vastuvõtja ei sisalda kõnepausi detektorit, peab see bit olema püsivalt seadistatud;

PTYPE - määrab kasuliku koormuse vormingu;

Järjestuse number - paketi number, mida kasutatakse pakettide esitamise järjekorra taastamiseks, kuna tegelik olukord on siis, kui paketid jõuavad vastuvõtjani vales järjekorras, milles need saadeti. Algväärtus peab olema juhuslik, seda tehakse nii, et kui RTP-voog on krüptitud, on seda raske häkkida. Samuti võimaldab see väli tuvastada vastamata pakette;

Ajatempel - ajatempel. Aega mõõdetakse signaalinäidistes, st. kui sari sisaldab 160 näidist, siis on järgmise paketi ajatempel 160 rohkem. Ajatempli algväärtus peab olema juhuslik;

SSRC — paketi allika identifikaator, see peab olema kordumatu. Parem on see enne RTP-voo käivitamist juhuslikult genereerida.

Kui arendate oma RTP-pakettide saatjat või vastuvõtjat, peate tootlikkuse suurendamiseks oma pakette rohkem kui üks kord vaatama, soovitan teil õppida kasutama TSharkis pakettide filtreerimist, see võimaldab jäädvustada ainult neid pakette, mis pakuvad teile huvi. Keskkonnas, kus võrgus töötavad kümned RTP-seadmed, on see väga väärtuslik. TSharki käsureal on filtreerimissuvandid määratud võtmega "-f". Kasutasime seda valikut, kui tahtsime jäädvustada pakette pordist 8010:
-f "udp port 8010"
Filtreerimisparameetrid on sisuliselt kriteeriumide kogum, millele "püütud" pakett peab vastama. Tingimusega saab kontrollida paketi teatud baidi aadressi, porti, väärtust. Tingimusi saab kombineerida loogikatehetega "AND", "OR" jne. Väga võimas tööriist.

Kui soovite näha väljamuutuste dünaamikat partiidena, peate väljundi dubleerima TShark faili, nagu on näidatud viimases artiklis, edastades väljundi TShark sissepääsu juures tee. Järgmisena avage logifail rakendusega vähem, vim või mõni muu tööriist, mis suudab kiiresti töötada tohutute tekstifailidega ja otsida stringe, saate teada kõik RTP-voo paketiväljade käitumise nüansid.

Kui teil on vaja kuulata RTP-voo edastatavat signaali, peate kasutama versiooni TShark visuaalse liidesega Wireshark. Lihtsa hiirega manipuleerimisega saate kuulata ja näha signaali lainekuju. Kuid ühel tingimusel - kui see on kodeeritud u-seadus või a-low formaadis.

Edasi siit teeme teiega kahepoolse sisetelefoni. Varuge paar peakomplekti ja üks vestluskaaslane.

Allikas: www.habr.com

Lisa kommentaar