Verken die Mediastreamer2 VoIP-enjin. Deel 8

Die materiaal van die artikel is geneem uit my zen-kanaal.

Verken die Mediastreamer2 VoIP-enjin. Deel 8

RTP pakkie struktuur

In die laaste Artikel ons gebruik TShark het die vaslegging van RTP-pakkies uitgevoer wat tussen ons ontvanger en sender uitgeruil is. Wel, in hierdie een sal ons die elemente van die pakket in verskillende kleure verf en oor die doel daarvan praat.

Kom ons kyk na dieselfde pakket, maar met gekleurde kantlyne en verduidelikende etikette:
Verken die Mediastreamer2 VoIP-enjin. Deel 8

Onderaan die lys is die grepe waaruit die RTP-pakkie bestaan ​​getint, en dit is op sy beurt die loonvrag van die UDP-pakkie (die kopskrif is in swart omsirkel). Die gekleurde agtergronde dui die grepe van die RTP-opskrif aan, en die datablok wat die loonvrag van die RTP-pakkie bevat, is in groen uitgelig. Die data word in heksadesimale formaat aangebied. In ons geval is dit 'n oudiosein wat volgens die u-wet (mu-wet) saamgepers is, m.a.w. een monster het 'n grootte van 1 greep. Aangesien ons die versteksteekproeftempo (8000 Hz) gebruik het, met 'n pakkietempo van 50 Hz, moet elke RTP-pakkie 160 grepe loonvrag bevat. Ons sal dit sien deur die grepe in die groen area te tel, daar moet 10 reëls van hulle wees.

Volgens die standaard moet die hoeveelheid data in die loonvrag 'n veelvoud van vier wees, of met ander woorde, dit moet 'n heelgetal van vier-grepe woorde bevat. As dit gebeur dat jou loonvrag nie ooreenstem met hierdie reël nie, dan moet jy nul-waarde grepe byvoeg aan die einde van die loonvrag en die Padding bis stel. Hierdie bis is geleë in die eerste greep van die RTP-kopskrif en is turkoois gekleur. Let daarop dat alle loonvraggrepe 0xFF is, wat is hoe u-wet stilte lyk.

Die RTP-pakkieopskrif bestaan ​​uit 12 verpligte grepe, maar in twee gevalle kan dit langer wees:

  • Wanneer 'n pakkie 'n oudiosein dra wat verkry is deur seine van verskeie bronne (RTP-strome) te meng, dan is daar na die eerste 12 grepe van die kopskrif 'n tabel met 'n lys van bronidentifiseerders wie se loonvragte gebruik is om die loonvrag van hierdie pakkie te skep. In hierdie geval, in die onderste vier bisse van die eerste greep van die kopskrif (veld Bydraende bron identifiseerders tel) dui die aantal bronne aan. Die veldgrootte is 4 bisse, so die tabel kan tot 15 bronidentifiseerders bevat. Elkeen beslaan 4 grepe. Hierdie tabel word gebruik wanneer 'n konferensie-oproep opgestel word.

  • Wanneer die titel die uitbreiding het. In hierdie geval word die bis in die eerste greep van die kopskrif gestel X. In die uitgebreide kopskrif, na die tabel van deelnemers (indien enige), is daar 'n een-woord uitbreidingsopskrif, gevolg deur die uitbreidingswoorde. 'n Uitbreiding is 'n versameling grepe wat jy kan gebruik om bykomende data oor te dra. Die standaard stipuleer nie die formaat van hierdie data nie – dit kan enigiets wees. Dit kan byvoorbeeld 'n paar bykomende instellings wees vir die toestel wat RTP-pakkies ontvang. Vir sommige toepassings is uitgebreide kopskrifstandaarde egter ontwikkel. Dit word byvoorbeeld gedoen vir kommunikasie in die standaard ED-137 (Interoperabiliteitstandaarde vir VoIP OTM-komponente).

Kom ons kyk nou na die opskrifvelde in meer besonderhede. Hieronder is 'n kanonieke prentjie met die struktuur van die RTP-kopskrif, wat ek ook nie kon weerstaan ​​nie en in dieselfde kleure geverf het.

Verken die Mediastreamer2 VoIP-enjin. Deel 8
VER — protokolweergawenommer (huidige weergawe 2);

P - 'n vlag wat gestel word in gevalle waar die RTP-pakkie aangevul word met leë grepe aan die einde;

X - vlag dat die kopskrif verleng is;

CC — bevat die aantal CSRC-identifiseerders wat volg op die konstante kopskrif (na woorde 1..3), die tabel word nie in die figuur getoon nie;

M — merker van die begin van 'n raam of die teenwoordigheid van spraak in die kanaal (indien 'n spraakpouse-detektor gebruik word). Indien die ontvanger nie 'n spraakpousedetektor bevat nie, sal hierdie bis permanent gestel word;

PTIPE - spesifiseer die formaat van die loonvrag;

Volgorde nommer - Pakkienommer, wat gebruik word om die volgorde waarin pakkies gespeel word te herstel, aangesien die werklike situasie is wanneer pakkies die ontvanger kan bereik in die verkeerde volgorde waarin hulle gestuur is. Die aanvanklike waarde moet ewekansig wees, dit word gedoen sodat as die RTP-stroom geïnkripteer is, dit moeilik sal wees om dit te hack. Hierdie veld laat jou ook toe om gemis pakkies op te spoor;

Tyd Stempel - tydstempel. Tyd word gemeet in seinmonsters, m.a.w. as 'n sarsie 160 monsters bevat, sal die tydstempel van die volgende sarsie meer wees 160. Die aanvanklike waarde van die tydstempel moet ewekansig wees;

SSRC — identifiseerder van die pakketbron, dit moet uniek wees. Dit is beter om dit lukraak te genereer voordat die RTP-stroom begin word.

As jy jou eie RTP-pakkiesender of -ontvanger ontwikkel, sal jy meer as een keer na jou pakkies moet kyk om produktiwiteit te verhoog, ek beveel aan dat jy leer hoe om pakkiefiltrering in TShark te gebruik, dit laat jou toe om net daardie pakkies vas te vang wat is vir jou van belang. In 'n omgewing waar dosyne RTP-toestelle op die netwerk werk, is dit baie waardevol. In die TShark-opdragreël word filteropsies gespesifiseer met die "-f" opsie. Ons het hierdie opsie gebruik toe ons pakkies vanaf poort 8010 wou vasvang:
-f "udp port 8010"
Filterparameters is in wese 'n stel kriteria waaraan 'n "gevang" pakkie moet voldoen. Die toestand kan die adres, poort, waarde van 'n sekere greep in die pakkie nagaan. Voorwaardes kan gekombineer word met logiese bewerkings "EN", "OF", ens. 'n Baie kragtige instrument.

As jy die dinamika van veldveranderinge in bondels wil sien, sal jy die afvoer moet dupliseer TShark na 'n lêer, soos in die laaste artikel getoon, deur die afvoer deur te gee TShark by die ingang tee. Maak dan die loglêer oop met minder, vim of 'n ander hulpmiddel wat vinnig met groot tekslêers kan werk en na stringe kan soek, kan jy al die nuanses van die gedrag van pakkievelde in 'n RTP-stroom uitvind.

As jy moet luister na die sein wat deur die RTP-stroom gestuur word, dan moet jy die weergawe gebruik TShark met visuele koppelvlak Wireshark. Met eenvoudige muismanipulasies kan jy na die golfvorm van die sein luister en sien. Maar op een voorwaarde - as dit in u-wet of a-low formaat geënkodeer is.

Volgende Artikel ons sal 'n dupleks interkom met jou maak. Maak voorraad op 'n paar headsets en een gespreksgenoot.

Bron: will.com

Voeg 'n opmerking