Ngajalajah mesin Mediastreamer2 VoIP. Bagian 8

Materi artikel dicokot ti abdi saluran zen.

Ngajalajah mesin Mediastreamer2 VoIP. Bagian 8

Struktur pakét RTP

Di tempo anu kalangkung artikel urang ngagunakeun TShark pakét RTP direbut disilihtukeurkeun antara panarima jeung pamancar urang. Nya, dina ieu kami bakal ngalukis unsur-unsur bungkusan dina warna anu béda sareng ngobrolkeun tujuanana.

Hayu urang tingali pakét anu sami, tapi kalayan widang anu diwarnaan sareng catetan panjelasan:
Ngajalajah mesin Mediastreamer2 VoIP. Bagian 8

Di handapeun daptar aya bait anu ngawangun pakét RTP, anu giliranna mangrupikeun beban pakét UDP (headerna digariskeun hideung). Latar berwarna nunjukkeun bait lulugu RTP, sareng héjo nunjukkeun blok data anu ngandung muatan tina pakét RTP. Data aya dibere dina format héksadesimal. Dina kasus urang, ieu sinyal audio dikomprés nurutkeun u-hukum (mu-hukum), i.e. hiji sampel ukuranana 1 bait. Kusabab kami nganggo laju sampling standar (8000 Hz), dina laju pakét 50 Hz, unggal pakét RTP kedah ngandung 160 bait payload. Urang bakal ningali ieu ku cacah bait di wewengkon héjo, kudu aya 10 garis.

Nurutkeun standar, jumlah data dina payload kudu sababaraha opat, atawa dina basa sejen kudu ngandung hiji angka integer kecap opat-bait. Upami kajantenan muatan anjeun henteu nuturkeun aturan ieu, maka anjeun kedah nambihan bait kalayan nilai nol ka tungtung payload sareng nyetél bit Padding. bit ieu lokasina di bait kahiji tina lulugu RTP sarta diwarnaan pirus. Catet yén sadaya bait payload gaduh nilai 0xFF - ieu mangrupikeun tiiseun dina format u-law.

Header pakét RTP diwangun ku 12 bait anu diperyogikeun, tapi dina dua kasus tiasa langkung panjang:

  • Lamun pakét mawa sinyal audio diala ku Pergaulan sinyal ti sababaraha sumber (RTP stream), lajeng sanggeus 12 bait header munggaran aya tabel kalawan daptar identifiers sumber anu payloads dipaké pikeun nyieun payload tina pakét ieu. Dina hal ieu, dina opat bit handap tina bait mimiti header (field Kontribusi identifiers sumber cacah) jumlah sumber dituduhkeun. Ukuran médan téh 4 bit, jadi tabél bisa ngandung nepi ka 15 identifiers sumber. Masing-masing butuh 4 bait. Méja ieu dianggo nalika ngatur telepon konperénsi.

  • Nalika judulna gaduh ekstensi. Dina hal ieu, bit dina bait mimiti lulugu diatur X. Dina lulugu nu dipanjangan, sanggeus tabel pamilon (lamun aya wae), aya lulugu extension hiji kecap, dituturkeun ku kecap extension. Ekstensi mangrupikeun sakumpulan bait anu tiasa anjeun pake pikeun mindahkeun data tambahan. Standar teu nangtukeun format data ieu - bisa nanaon. Contona, ieu bisa jadi sababaraha setelan tambahan pikeun alat nu narima pakét RTP. Pikeun sababaraha aplikasi, kumaha oge, standar lulugu diperpanjang geus dimekarkeun. Hal ieu dilakukeun, contona, pikeun alat komunikasi dina standar ED-137 (Standar Interoperabilitas pikeun Komponén ATM VoIP).

Ayeuna hayu urang nempo widang header dina leuwih jéntré. Di handap ieu gambar canonical kalawan struktur lulugu RTP, nu kuring ogé teu bisa nolak jeung dicét dina kelir anu sarua.

Ngajalajah mesin Mediastreamer2 VoIP. Bagian 8
VER - nomer versi protokol (versi ayeuna 2);

P - bandéra anu disetél dina kasus dimana pakét RTP ditambahan ku bait kosong dina tungtung;

X - bandéra yén lulugu diperpanjang;

CC - ngandung jumlah identifiers CSRC nuturkeun lulugu konstan (sanggeus kecap 1..3), tabél teu ditémbongkeun dina gambar;

M - pananda awal pigura atawa ayana ucapan dina saluran (upami detektor jeda ucapan dipaké). Upami panarima henteu ngandung detektor jeda ucapan, maka bit ieu kedah disetél permanén;

PTYPE - nunjukkeun format payload;

Jumlah runtuyan - Jumlah pakét, dipaké pikeun mulangkeun urutan playback pakét, saprak kaayaan nyata nalika pakét bisa ngahontal panarima dina urutan béda ti nu aranjeunna dikirim. Nilai awalna kedah acak; ieu dilakukeun supados upami énkripsi aliran RTP dianggo, éta bakal sesah rengat. Widang ieu ogé ngamungkinkeun anjeun pikeun ngadeteksi tetes pakét;

Timestamp - cap waktu. Waktu diukur dina sampel sinyal, i.e. lamun pakét ngandung 160 sampel, mangka timestamp tina pakét salajengna bakal leuwih gede ku 160. Nilai awal timestamp kudu acak;

SSRC - identifier sumber pakét, éta kudu unik. Éta hadé pikeun ngahasilkeun sacara acak sateuacan ngamimitian aliran RTP.

Upami anjeun ngembangkeun pamancar atanapi panarima pakét RTP anjeun nyalira, anjeun kedah ningali pakét anjeun langkung ti sakali, ku kituna pikeun ningkatkeun produktivitas, kuring nyarankeun yén anjeun ngawasa panggunaan panyaring pakét dina TShark, éta ngamungkinkeun anjeun ngan ukur nangkep pakét éta. anu dipikaresep ku anjeun. Dina kaayaan dimana puluhan alat RTP beroperasi dina jaringan, ieu pohara berharga. Dina garis paréntah TShark, parameter nyaring dieusian ku pilihan "-f". Kami nganggo pilihan ieu nalika urang hoyong nangkep pakét tina port 8010:
-f "udp port 8010"
Parameter nyaring dasarna mangrupikeun sakumpulan kritéria anu kedah dipendakan ku pakét "bray". Kaayaan éta tiasa pariksa alamat, palabuhan, atanapi nilai bait khusus dina pakét. Kaayaan tiasa digabungkeun nganggo operasi logis "AND", "OR", jsb. Alat anu pohara kuat.

Upami anjeun hoyong ningali dinamika parobahan lapangan dina bets, anjeun kedah duplikat kaluaran TShark kana file, sakumaha anu dipidangkeun dina artikel saméméhna, ngagunakeun transfer output TShark di lawang majalengka. Salajengna, buka file log nganggo kirang, vim atawa alat sejen nu bisa gancang digawekeun ku file téks badag tur neangan string, anjeun tiasa manggihan sagala nuances tina kabiasaan widang pakét dina aliran RTP.

Upami anjeun kedah ngadangukeun sinyal anu dikirimkeun ku aliran RTP, maka anjeun kedah nganggo versi TShark kalawan panganteur visual Wireshark. Ku manipulasi saderhana sareng beurit, anjeun tiasa ngadangukeun sareng ningali oscillogram sinyal. Tapi dina hiji kaayaan - lamun disandikeun dina u-hukum atawa format a-low.

Teras artikel Kami bakal ngadamel interkom duplex sareng anjeun. Simpen dina sababaraha headset sareng hiji interlocutor.

sumber: www.habr.com

Tambahkeun komentar