Ferkenne de Mediastreamer2 VoIP-motor. Diel 8

It materiaal fan it artikel is nommen út myn zen kanaal.

Ferkenne de Mediastreamer2 VoIP-motor. Diel 8

RTP-pakketstruktuer

Yn de lêste artikel wy brûke TShark útfierd it fangen fan RTP-pakketten dy't waarden útwiksele tusken ús ûntfanger en stjoerder. No, yn dizze sille wy de eleminten fan it pakket yn ferskate kleuren skilderje en prate oer har doel.

Litte wy sjen nei itselde pakket, mar mei kleurde marzjes en ferklearjende labels:
Ferkenne de Mediastreamer2 VoIP-motor. Diel 8

Oan 'e ûnderkant fan' e fermelding binne de bytes dy't it RTP-pakket foarmje, tint, en dit is op 'e beurt de loadload fan it UDP-pakket (syn koptekst is yn swart rûn). De kleurde eftergrûnen jouwe de bytes fan 'e RTP-header oan, en it gegevensblok dat de loadload fan it RTP-pakket befettet is grien markearre. De gegevens wurde presintearre yn hexadesimale opmaak. Yn ús gefal is dit in audiosinjaal komprimearre neffens de u-wet (mu-wet), d.w.s. ien stekproef hat in grutte fan 1 byte. Sûnt wy brûkten de standert sampling rate (8000 Hz), by in pakket taryf fan 50 Hz, elk RTP pakket moat befetsje 160 bytes fan loadload. Wy sille dit sjen troch de bytes yn it griene gebiet te tellen, d'r moatte 10 rigels fan wêze.

Neffens de standert moat de hoemannichte gegevens yn 'e lading in mearfâld fan fjouwer wêze, of mei oare wurden, it moat in heul oantal fjouwer-byte wurden befetsje. As it bart dat jo lading net oerienkomt mei dizze regel, dan moatte jo nul-wurdearre bytes tafoegje oan 'e ein fan' e lading en it Padding-bit ynstelle. Dit bit leit yn 'e earste byte fan' e RTP-koptekst en is turquoise kleurd. Tink derom dat alle payload-bytes 0xFF binne, dat is wat u-wet-stilte liket.

De RTP-pakketkoptekst bestiet út 12 ferplichte bytes, mar yn twa gefallen kin it langer wêze:

  • As in pakket in audiosinjaal draacht krigen troch sinjalen fan ferskate boarnen (RTP-streamen) te mingjen, dan is d'r nei de earste 12 bytes fan 'e koptekst in tabel mei in list fan boarne-identifiers waans loadloads waarden brûkt om de loadload fan dit pakket te meitsjen. Yn dit gefal, yn 'e legere fjouwer bits fan' e earste byte fan 'e koptekst (fjild Bydragende boarne identifiers telle) jout it oantal boarnen oan. De fjildgrutte is 4 bits, sadat de tabel maksimaal 15 boarne-identifiers kin befetsje. Elk fan dat beslacht 4 bytes. Dizze tabel wurdt brûkt by it opsetten fan in konferinsjeoprop.

  • As de titel de útwreiding hat. Yn dit gefal wurdt it bit yn 'e earste byte fan' e koptekst ynsteld X. Yn 'e útwreide koptekst, nei de tabel fan dielnimmers (as der binne), is d'r in koptekst fan ien wurd útwreiding, folge troch de útwreidingswurden. In tafoeging is in samling bytes dy't jo brûke kinne om ekstra gegevens oer te dragen. De standert bepaalt it formaat fan dizze gegevens net - it kin alles wêze. It kin bygelyks wat ekstra ynstellings wêze foar it apparaat dat RTP-pakketten ûntfangt. Foar guon applikaasjes binne lykwols útwreide koptekstnoarmen ûntwikkele. Dat wurdt bygelyks dien foar kommunikaasje yn de standert ED-137 (ynteroperabiliteitsnormen foar VoIP ATM-komponinten).

Litte wy no de koptekstfjilden yn mear detail sjen. Hjirûnder is in kanonike ôfbylding mei de struktuer fan 'e RTP-koptekst, dy't ik ek net wjerstean koe en yn deselde kleuren skildere.

Ferkenne de Mediastreamer2 VoIP-motor. Diel 8
VER - protokolferzjenûmer (aktuele ferzje 2);

P - in flagge dy't wurdt ynsteld yn gefallen dêr't it RTP-pakket wurdt oanfolle mei lege bytes oan 'e ein;

X - flagge dat de koptekst wurdt ferlingd;

CC - befettet it oantal CSRC-identifikaasjes nei de konstante koptekst (nei wurden 1..3), de tabel wurdt net werjûn yn 'e figuer;

M - marker fan it begjin fan in frame of de oanwêzigens fan spraak yn it kanaal (as in spraakpauze-detektor wurdt brûkt). As de ûntfanger gjin spraakpauzedetektor befettet, dan sil dizze bit permanint ynsteld wurde;

PTYPE - spesifisearret it formaat fan 'e lading;

Folchoannûmer - pakketnûmer, brûkt om de folchoarder te herstellen wêryn pakketten wurde spile, om't de echte situaasje is as pakketten de ûntfanger kinne berikke yn 'e ferkearde folchoarder wêryn't se waarden ferstjoerd. De begjinwearde moat willekeurich wêze, dit wurdt dien sadat as de RTP-stream fersifere is, it lestich wêze sil om it te hacken. Ek dit fjild lit jo miste pakketten ûntdekke;

Timestamp - tiidstempel. Tiid wurdt metten yn sinjaal samples, d.w.s. as in burst 160 samples befettet, dan sil it tiidstempel fan 'e folgjende burst mear wêze 160. De begjinwearde fan it timestamp moat willekeurich wêze;

SSRC - identifier fan 'e pakketboarne, it moat unyk wêze. It is better om it willekeurich te generearjen foardat jo de RTP-stream begjinne.

As jo ​​​​jo eigen RTP-pakketstjoerder of -ûntfanger ûntwikkelje, moatte jo mear dan ien kear nei jo pakketten sjen om de produktiviteit te ferheegjen, ik advisearje dat jo leare hoe't jo pakketfiltering brûke yn TShark, it lit jo allinich de pakketten fange dy't binne fan belang foar jo. Yn in omjouwing dêr't tsientallen RTP-apparaten op it netwurk operearje, is dit tige weardefol. Yn 'e kommandorigel fan TShark wurde filteropsjes oanjûn mei de opsje "-f". Wy brûkten dizze opsje doe't wy pakketten fan poarte 8010 wolle fange:
-f "udp port 8010"
Filterparameters binne yn wêzen in set kritearia dêr't in "fongen" pakket oan moat foldwaan. De betingst kin it adres, poarte, wearde fan in bepaalde byte yn it pakket kontrolearje. Betingsten kinne wurde kombinearre mei logyske operaasjes "AND", "OF", ensfh. In heul krêftich ark.

As jo ​​​​de dynamyk fan fjildferoarings yn batches wolle besjen, moatte jo de útfier duplisearje TShark nei in bestân, lykas werjûn yn it lêste artikel, troch de útfier troch te jaan TShark by de yngong tee. Folgjende, iepenje de log triem mei minder, vm as in oar ark dat fluch kin wurkje mei enoarme tekstbestannen en sykje nei strings, kinne jo alle nuânses fan it gedrach fan pakketfjilden yn in RTP-stream fine.

As jo ​​​​nei it sinjaal moatte harkje dat troch de RTP-stream wurdt oerbrocht, dan moatte jo de ferzje brûke TShark mei fisuele ynterface Wireshark. Mei ienfâldige mûsmanipulaasjes kinne jo de golffoarm fan it sinjaal harkje en sjen. Mar op ien betingst - as it is kodearre yn u-wet of a-low formaat.

Folgjende artikel wy sille meitsje in duplex intercom mei dy. Opslaan op in pear headsets en ien petearpartner.

Boarne: www.habr.com

Add a comment