Esplora u mutore VoIP Mediastreamer2. Parte 8

U materiale di l'articulu hè pigliatu da u mo canale zen.

Esplora u mutore VoIP Mediastreamer2. Parte 8

Struttura di pacchetti RTP

In l'ultimu articulu avemu aduprà TShark catturati pacchetti RTP scambiati trà u nostru ricevitore è trasmettitore. Ebbè, in questu pinghjemu l'elementi di u pacchettu in diversi culori è parlemu di u so scopu.

Fighjemu un ochju à u listessu pacchettu, ma cù campi tintati è note esplicative:
Esplora u mutore VoIP Mediastreamer2. Parte 8

À u fondu di u listinu sò i byte chì custituiscenu u pacchettu RTP, chì à u turnu hè a carica di u pacchettu UDP (u so header hè delineatu in neru). I sfondi culurati indicanu i bytes di l'intestazione RTP, è u verde indica u bloccu di dati chì cuntene a carica di u pacchettu RTP. I dati quì sò presentati in forma esadecimale. In u nostru casu, questu hè un signalu audio cumpressu secondu a lege u (mu-law), i.e. una mostra hè di 1 byte. Siccomu avemu usatu a freccia di campionamentu predeterminata (8000 Hz), à una tarifa di pacchettu di 50 Hz, ogni pacchettu RTP deve cuntene 160 bytes di payload. Videremu questu cuntendu i bytes in l'area verde, duverebbe esse 10 linee.

Sicondu u standard, a quantità di dati in u payload deve esse un multiplu di quattru, o in altri palori deve cuntene un numeru interu di parolle di quattru byte. S'ellu succede chì u vostru payload ùn seguita micca sta regula, allora avete bisognu di aghjunghje byte cù zero valori à a fine di u payload è stabilisce u padding bit. Stu bit hè situatu in u primu byte di l'intestazione RTP è hè di culore turchese. Nota chì tutti i bytes di carichi pagani anu u valore 0xFF - questu hè ciò chì u silenziu pare in u formatu u-law.

L'intestazione di u pacchettu RTP hè custituitu da 12 byte necessarii, ma in dui casi pò esse più longu:

  • Quandu un pacchettu porta un signalu audio ottenutu mischjendu segnali da parechje fonti (flussi RTP), dopu dopu à i primi 12 bytes di l'intestazione, ci hè una tavola cù una lista di identificatori di fonte chì i so carichi sò stati utilizati per creà a carica di stu pacchettu. In questu casu, in i quattru bit più bassi di u primu byte di l'intestazione (campu L'identificatori di fonti cuntribuenti contanu) u numeru di fonti hè indicatu. A dimensione di u campu hè 4 bit, cusì a tavula pò cuntene sin'à 15 identificatori di fonte. Ognunu di quali pigghia 4 bytes. Questa tavula hè aduprata quandu urganizeghja una teleconferenza.

  • Quandu u titulu hà una estensione. In questu casu, u bit in u primu byte di l'intestazione hè stabilitu X. In l'intestazione allargata, dopu à a tavola di i participanti (se ci sò), ci hè un capu di estensione di una sola parolla, seguita da e parolle di l'estensione. Una estensione hè un inseme di bytes chì pudete aduprà per trasfiriri dati supplementari. U standard ùn specifica micca u formatu di sta dati - pò esse qualcosa. Per esempiu, queste puderianu esse alcune paràmetri supplementari per u dispusitivu chì riceve pacchetti RTP. Per alcune applicazioni, però, sò stati sviluppati standard di header estesi. Questu hè fattu, per esempiu, per l'equipaggiu di cumunicazione in u standard ED-137 (Normi ​​di interoperabilità per i cumpunenti ATM VoIP).

Avà fighjemu i campi di l'intestazione in più dettagliu. A sottu hè una stampa canonica cù a struttura di un capu RTP, chì ùn aghju micca pussutu resiste è dipinta in i stessi culori.

Esplora u mutore VoIP Mediastreamer2. Parte 8
VER - numeru di versione di u protocolu (versione attuale 2);

P - una bandiera chì hè stallata in i casi induve un pacchettu RTP hè cumplementatu cù bytes vacanti à a fine;

X - bandiera chì l'intestazione hè allargata;

CC - cuntene u numeru di identificatori CSRC dopu à l'intestazione constante (dopu à e parolle 1..3), a tavula ùn hè micca mostrata in a figura;

M - marcatore di l'iniziu di u quadru o a prisenza di a parolla in u canali (se un detector di pausa di parlà hè utilizatu). Se u receptore ùn cuntene micca un detector di pausa di parlà, allora stu bit deve esse stabilitu permanentemente;

PTYPE - indica u formatu di carica utile;

Numeru di sequenza - numeru di pacchettu, utilizatu per restaurà l'ordine di riproduzione di pacchetti, postu chì a situazione vera hè quandu i pacchetti ponu ghjunghje à u receptore in un ordine sfarente di quellu in quale sò stati mandati. U valore iniziale deve esse aleatoriu; questu hè fattu in modu chì se u criptu di flussu RTP hè utilizatu, serà difficiule di cracke. Stu campu vi permette ancu di detect gocce di pacchetti;

Timestamp - timbru di tempu. U tempu hè misuratu in campioni di signali, i.e. se un pacchettu cuntene 160 samples, allura u timestamp di u prossimu pacchettu serà più grande da 160. U valore iniziale di u timestamp deve esse aleatoriu;

SSRC - identificatore di fonte di pacchettu, deve esse unicu. Hè megliu generà in modu aleatoriu prima di inizià u flussu RTP.

Se sviluppate u vostru propiu trasmettitore o ricevitore di pacchetti RTP, vi tuccherà à fighjà i vostri pacchetti più di una volta, cusì per aumentà a produtividade, vi ricumandemu chì ammaistrà l'usu di filtru di pacchetti in TShark, vi permette di catturà solu quelli pacchetti. chì sò d'interessu per voi. In cundizioni induve decine di dispusitivi RTP operanu nantu à a reta, questu hè assai preziosu. In a linea di cummanda di TShark, i paràmetri di filtrazione sò specificati cù l'opzione "-f". Avemu usatu sta opzione quandu vulemu catturà pacchetti da u portu 8010:
-f "udp port 8010"
I paràmetri di filtrazione sò essenzialmente un inseme di criteri chì u pacchettu "catturatu" deve risponde. A cundizione pò verificà l'indirizzu, portu, o valore di un byte specificu in u pacchettu. Cundizioni ponu esse cumminati cù l'operazioni logiche "AND", "OR", etc. Un strumentu assai putente.

Se vulete vede a dinamica di i cambiamenti di u campu in batch, avete bisognu di duplicà l'output TShark à un schedariu, cum'è statu dimustratu in l'articulu precedente, utilizendu u trasferimentu di output TShark à l'intrata tee. Dopu, apre u schedariu di log usendu menu, vim o un altru strumentu chì pò travaglià rapidamente cù schedarii di testu enormi è cercate strings, pudete truvà tutte e sfumature di u cumpurtamentu di i campi di pacchetti in un flussu RTP.

Sè avete bisognu à sente u signale trasmessu da u flussu RTP, allora avete bisognu di utilizà a versione TShark cù interfaccia visuale Wireshark. Per manipulazioni simplici cù u mouse, pudete sente è vede l'oscillogramma di u signale. Ma nantu à una cundizione - s'ellu hè codificata in u formatu u-law o a-low.

Dopu articulu Faremu un intercom duplex cun voi. Scuprite un coppiu di cuffie è un interlocutore.

Source: www.habr.com

Add a comment