Esplorante la Mediastreamer2 VoIP-motoron. Parto 8

La materialo de la artikolo estas prenita el mia zen kanalo.

Esplorante la Mediastreamer2 VoIP-motoron. Parto 8

RTP-paka strukturo

En la lasta artikolo ni uzas TSharko faris la kapton de RTP-pakoj kiuj estis interŝanĝitaj inter nia ricevilo kaj dissendilo. Nu, en ĉi tiu ni pentros la elementojn de la pako en malsamaj koloroj kaj parolos pri ilia celo.

Ni rigardu la saman pakaĵon, sed kun koloraj randoj kaj klarigaj etikedoj:
Esplorante la Mediastreamer2 VoIP-motoron. Parto 8

Ĉe la fundo de la listo, la bajtoj kiuj konsistigas la RTP-pakaĵeton estas nuancigitaj, kaj ĉi tio siavice estas la utila ŝarĝo de la UDP-pako (ĝia kaplinio estas ĉirkaŭita en nigra). La koloraj fonoj indikas la bajtojn de la RTP-kapo, kaj la datumbloko kiu enhavas la utilan ŝarĝon de la RTP-pako estas elstarigita en verdo. La datumoj estas prezentitaj en deksesuma formato. En nia kazo, tio estas sonsignalo kunpremita laŭ la u-leĝo (mu-leĝo), t.e. unu specimeno havas grandecon de 1 bajto. Ĉar ni uzis la defaŭltan specimenan indicon (8000 Hz), kun paka indico de 50 Hz, ĉiu RTP-pako devus enhavi 160 bajtojn da utila ŝarĝo. Ni vidos ĉi tion kalkulante la bajtojn en la verda areo, devus esti 10 linioj da ili.

Laŭ la normo, la kvanto de datumoj en la utila ŝarĝo devas esti oblo de kvar, aŭ alivorte, ĝi devas enhavi entjeran nombron da kvar-bajtaj vortoj. Se okazas, ke via utila ŝarĝo ne kongruas kun ĉi tiu regulo, tiam vi devas aldoni nul-valorajn bajtojn al la fino de la utila ŝarĝo kaj agordi la Padding biton. Ĉi tiu bito situas en la unua bajto de la RTP-kapo kaj estas kolora turkiso. Notu, ke ĉiuj ŝarĝaj bajtoj estas 0xFF, kio aspektas kiel u-leĝa silento.

La RTP-paka titolo konsistas el 12 devigaj bajtoj, sed en du kazoj ĝi povas esti pli longa:

  • Kiam pakaĵeto portas sonsignalon akiritan miksante signalojn de pluraj fontoj (RTP-riveretoj), tiam post la unuaj 12 bajtoj de la kaplinio ekzistas tabelo kun listo de fontidentigiloj kies utilaj ŝarĝoj estis uzitaj por krei la utilan ŝarĝon de ĉi tiu pakaĵeto. En ĉi tiu kazo, en la pli malaltaj kvar bitoj de la unua bajto de la kaplinio (kampo Kontribuaj fontidentigiloj kalkulas) indikas la nombron da fontoj. La kampograndeco estas 4 bitoj, do la tabelo povas enhavi ĝis 15 fontidentigilojn. Ĉiu el kiuj okupas 4 bajtojn. Ĉi tiu tabelo estas uzata dum agordado de konferenco.

  • Kiam la titolo havas la etendon . En ĉi tiu kazo, la bito estas agordita en la unua bajto de la kaplinio X. En la plilongigita kaplinio, post la tabelo de partoprenantoj (se ekzistas), estas unuvorta etendkapo, sekvata de la etendvortoj. Etendo estas kolekto de bajtoj, kiujn vi povas uzi por transdoni pliajn datumojn. La normo ne kondiĉas la formaton de ĉi tiuj datumoj - ĝi povas esti io ajn. Ekzemple, ĝi povas esti iuj aldonaj agordoj por la aparato, kiu ricevas RTP-pakojn. Por kelkaj aplikoj, tamen, plilongigitaj kapnormoj estis evoluigitaj. Ĉi tio estas farita, ekzemple, por komunikadoj en la normo ED-137 (Kunfunkciebleco-Normoj por VoIP-ATM-Kompontoj).

Nun ni rigardu la kapliniajn kampojn pli detale. Malsupre estas kanona bildo kun la strukturo de la RTP-kapo, kiun mi ankaŭ ne povis rezisti kaj pentris en la samaj koloroj.

Esplorante la Mediastreamer2 VoIP-motoron. Parto 8
VER — protokola versio numero (nuna versio 2);

P - flago kiu estas metita en kazoj kie la RTP-pako estas kompletigita kun malplenaj bajtoj ĉe la fino;

X - flago, ke la kaplinio estas etendita;

CC — enhavas la nombron da CSRC-identigiloj sekvantaj la konstantan kaplinion (post vortoj 1..3), la tabelo ne estas montrita en la figuro;

M — markilo de la komenco de kadro aŭ la ĉeesto de parolo en la kanalo (se oni uzas detektilon de parolpaŭzo). Se la ricevilo ne enhavas parolpaŭzan detektilon, tiam ĉi tiu bito devas esti konstante agordita;

PTYPE - specifas la formaton de la utila ŝarĝo;

Sekvenca nombro - paka nombro, uzata por restarigi la ordon en kiu pakaĵetoj estas luditaj, ĉar la reala situacio estas kiam pakaĵetoj povas atingi la ricevilon en la malĝusta ordo en kiu ili estis senditaj. La komenca valoro devas esti hazarda, tio estas farita tiel ke se la RTP-rivereto estas ĉifrita, estos malfacile haki ĝin. Ankaŭ, ĉi tiu kampo permesas vin detekti maltrafitaj pakaĵoj;

tempstampo - tempomarko. Tempo estas mezurata en signalspecimenoj, t.e. se eksplodo enhavas 160 specimenojn, tiam la tempomarko de la sekva eksplodo estos plia 160. La komenca valoro de la tempomarko devas esti hazarda;

SSRC — identigilo de la paka fonto, ĝi devas esti unika. Pli bone estas generi ĝin hazarde antaŭ ol komenci la RTP-rivereton.

Se vi disvolvas vian propran RTP-pakaĵetsendilon aŭ ricevilon, vi devos rigardi viajn pakaĵetojn pli ol unufoje por pliigi produktivecon, mi rekomendas, ke vi lernu kiel uzi pakatan filtradon en TShark, ĝi ebligas al vi kapti nur tiujn pakaĵetojn, kiuj interesas vin. En medio kie dekoj da RTP-aparatoj funkcias en la reto, tio estas tre valora. En la komandlinio de TShark, filtraj opcioj estas specifitaj per la opcio "-f". Ni uzis ĉi tiun opcion kiam ni volis kapti pakaĵojn de la haveno 8010:
-f "udp port 8010"
Filtraj parametroj estas esence aro de kriterioj kiujn "kaptita" pakaĵeto devas renkonti. La kondiĉo povas kontroli la adreson, havenon, valoron de certa bajto en la pako. Kondiĉoj povas esti kombinitaj kun logikaj operacioj "KAJ", "OR", ktp. Tre potenca ilo.

Se vi volas vidi la dinamikon de kampoŝanĝoj en aroj, vi devos duobligi la eligon TSharko al dosiero, kiel montrite en la lasta artikolo, pasigante la eligon TSharko ĉe la enirejo Tee. Poste, malfermu la protokoldosieron kun malpli, vim aŭ alia ilo, kiu povas rapide labori kun grandegaj tekstaj dosieroj kaj serĉi ŝnurojn, vi povas ekscii ĉiujn nuancojn de la konduto de pakaj kampoj en RTP-rivereto.

Se vi bezonas aŭskulti la signalon elsendita de la RTP-rivereto, tiam vi devas uzi la version TSharko kun vida interfaco Wireshark. Per simplaj musmanipuladoj, vi povas aŭskulti kaj vidi la ondformon de la signalo. Sed je unu kondiĉo - se ĝi estas kodita en u-leĝo aŭ a-malalta formato.

Poste artikolo ni faros dupleksan interfonon kun vi. Provizu paro da kapaŭskultiloj kaj unu interparolanto.

fonto: www.habr.com

Aldoni komenton