Mediastreamer2:n VoIP-moottorin tutkiminen. Osa 8

Artikkelin materiaali on otettu minun zen kanava.

Mediastreamer2:n VoIP-moottorin tutkiminen. Osa 8

RTP-pakettirakenne

Viimeisessä статье käytämme TShark suoritti vastaanottimemme ja lähettimemme välillä vaihdettujen RTP-pakettien sieppauksen. No, tässä maalaamme paketin elementit eri väreillä ja puhumme niiden tarkoituksesta.

Katsotaanpa samaa pakettia, mutta värillisillä marginaaleilla ja selittävillä tarroilla:
Mediastreamer2:n VoIP-moottorin tutkiminen. Osa 8

Luettelon alareunassa RTP-paketin muodostavat tavut on sävytetty, ja tämä puolestaan ​​on UDP-paketin hyötykuorma (sen otsikko on ympyröity mustalla). Värilliset taustat osoittavat RTP-otsikon tavut ja tietolohko, joka sisältää RTP-paketin hyötykuorman, on korostettu vihreällä. Tiedot esitetään heksadesimaalimuodossa. Meidän tapauksessamme tämä on u-lain (mu-laki) mukaan pakattu äänisignaali, ts. yhden näytteen koko on 1 tavu. Koska käytimme oletusnäytteenottotaajuutta (8000 Hz), pakettitaajuudella 50 Hz, jokaisen RTP-paketin tulisi sisältää 160 tavua hyötykuormaa. Näemme tämän laskemalla tavut vihreällä alueella, niitä pitäisi olla 10 riviä.

Standardin mukaan hyötykuorman datamäärän tulee olla neljän kerrannainen, eli sen tulee sisältää kokonaisluku nelitavuisia sanoja. Jos hyötykuormasi ei vastaa tätä sääntöä, sinun on lisättävä nolla-arvoisia tavuja hyötykuorman loppuun ja asetettava täytebitti. Tämä bitti sijaitsee RTP-otsikon ensimmäisessä tavussa ja on värillinen turkoosi. Huomaa, että kaikki hyötykuormatavut ovat 0xFF, tältä u-law-hiljaisuus näyttää.

RTP-paketin otsikko koostuu 12 pakollisesta tavusta, mutta kahdessa tapauksessa se voi olla pidempi:

  • Kun paketti kuljettaa äänisignaalia, joka on saatu sekoittamalla signaaleja useista lähteistä (RTP-virrat), otsikon ensimmäisen 12 tavun jälkeen on taulukko, jossa on luettelo lähdetunnisteista, joiden hyötykuormia käytettiin tämän paketin hyötykuorman luomiseen. Tässä tapauksessa otsikon ensimmäisen tavun alemmissa neljässä bitissä (kenttä Osallistuvien lähdetunnisteiden määrä) osoittaa lähteiden määrän. Kentän koko on 4 bittiä, joten taulukko voi sisältää jopa 15 lähdetunnistetta. Jokainen niistä vie 4 tavua. Tätä taulukkoa käytetään neuvottelupuhelua muodostettaessa.

  • Kun otsikossa on pääte . Tässä tapauksessa bitti asetetaan otsikon ensimmäiseen tavuun X. Laajennetussa otsikossa osallistujataulukon (jos sellainen on) jälkeen on yksisanainen pääteotsikko, jota seuraa laajennussanat. Laajennus on kokoelma tavuja, joita voit käyttää lisätietojen siirtämiseen. Standardi ei määrää näiden tietojen muotoa - se voi olla mikä tahansa. Se voi esimerkiksi olla joitain lisäasetuksia laitteelle, joka vastaanottaa RTP-paketteja. Joillekin sovelluksille on kuitenkin kehitetty laajennettuja otsikkostandardeja. Tämä tehdään esimerkiksi standardin viestinnässä ED-137 (VoIP ATM -komponenttien yhteentoimivuusstandardit).

Katsotaanpa nyt otsikkokenttiä tarkemmin. Alla on kanoninen kuva RTP-otsikon rakenteella, jota en myöskään voinut vastustaa ja maalasin samoilla väreillä.

Mediastreamer2:n VoIP-moottorin tutkiminen. Osa 8
VER — protokollan versionumero (nykyinen versio 2);

P - lippu, joka asetetaan tapauksissa, joissa RTP-pakettia täydennetään tyhjillä tavuilla lopussa;

X - merkitse, että otsikkoa on jatkettu;

CC — sisältää CSRC-tunnisteiden lukumäärän vakiootsikon jälkeen (sanojen 1..3 jälkeen), taulukkoa ei näytetä kuvassa;

M — merkki kehyksen alkamisesta tai puheen esiintymisestä kanavalla (jos käytetään puhetauon ilmaisinta). Jos vastaanotin ei sisällä puhetauon ilmaisinta, tämä bitti tulee asettaa pysyvästi;

PTYPE - määrittää hyötykuorman muodon;

Sekvenssi numero - paketin numero, jota käytetään palauttamaan pakettien toistojärjestys, koska todellinen tilanne on, kun paketit pääsevät vastaanottajalle väärässä järjestyksessä kuin ne on lähetetty. Alkuarvon on oltava satunnainen, tämä tehdään niin, että jos RTP-virta on salattu, sen hakkerointi on vaikeaa. Tämän kentän avulla voit myös havaita puuttuneet paketit;

Aikaleima - aikaleima. Aika mitataan signaalinäytteillä, ts. jos purske sisältää 160 näytettä, niin seuraavan purskeen aikaleima on 160. Aikaleiman alkuarvon tulee olla satunnainen;

SSRC — paketin lähteen tunniste, sen on oltava yksilöllinen. On parempi luoda se satunnaisesti ennen RTP-virran käynnistämistä.

Jos kehität oman RTP-lähettimen tai vastaanottimen, joudut tarkistamaan paketit useammin kuin kerran lisätäksesi tuottavuutta, suosittelen, että opit käyttämään pakettisuodatusta TSharkissa, sillä voit siepata vain ne paketit, jotka ovat kiinnostaa sinua. Ympäristössä, jossa kymmeniä RTP-laitteita toimii verkossa, tämä on erittäin arvokasta. TShark-komentorivillä suodatusasetukset määritetään "-f"-vaihtoehdolla. Käytimme tätä vaihtoehtoa, kun halusimme kaapata paketteja portista 8010:
-f "udp port 8010"
Suodatusparametrit ovat pohjimmiltaan joukko kriteerejä, joita "kiinni jääneen" paketin on vastattava. Ehto voi tarkistaa osoitteen, portin, tietyn tavun arvon paketissa. Ehtoja voidaan yhdistää loogisiin operaatioihin "AND", "OR" jne. Erittäin tehokas työkalu.

Jos haluat tarkastella kenttämuutosten dynamiikkaa erissä, sinun on kopioitava tulos TShark tiedostoon, kuten edellisessä artikkelissa näkyy, välittämällä tulos TShark sisäänkäynnillä tii. Avaa seuraavaksi lokitiedosto vähemmän, vim tai muu työkalu, joka voi nopeasti työskennellä valtavien tekstitiedostojen kanssa ja etsiä merkkijonoja, voit selvittää kaikki RTP-virran pakettikenttien toiminnan vivahteet.

Jos sinun on kuunneltava RTP-virran lähettämää signaalia, sinun on käytettävä versiota TShark visuaalisen käyttöliittymän kanssa Wireshark. Yksinkertaisilla hiirikäsittelyillä voit kuunnella ja nähdä signaalin aaltomuodon. Mutta yhdellä ehdolla - jos se on koodattu u-lakiin tai a-low-muotoon.

Seuraava статье teemme kaksipuolisen sisäpuhelimen kanssasi. Varaa pari kuulokkeita ja yksi keskustelukumppani.

Lähde: will.com

Lisää kommentti