Mediastreamer2 VoIP хөдөлгүүртэй танилцаж байна. 8-р хэсэг

Нийтлэлийн материалыг миний нийтлэлээс авсан болно zen суваг.

Mediastreamer2 VoIP хөдөлгүүртэй танилцаж байна. 8-р хэсэг

RTP багцын бүтэц

Хамгийн сүүлд нийтлэл бид ашиглаж байна TShark Манай хүлээн авагч болон дамжуулагчийн хооронд солилцсон RTP пакетуудыг барьж авсан. За, энэ нь бид багцын элементүүдийг өөр өөр өнгөөр ​​будаж, тэдгээрийн зорилгын талаар ярих болно.

Өнгөт зах болон тайлбар шошготой ижил багцыг харцгаая.
Mediastreamer2 VoIP хөдөлгүүртэй танилцаж байна. 8-р хэсэг

Жагсаалтын доод хэсэгт RTP пакетийг бүрдүүлдэг байтууд нь будагдсан байдаг бөгөөд энэ нь эргээд UDP пакетийн ачаалал юм (түүний толгойг хараар дугуйлсан). Өнгөт дэвсгэрүүд нь RTP толгой хэсгийн байтыг заадаг бөгөөд RTP пакетийн ачааллыг агуулсан өгөгдлийн блокыг ногоон өнгөөр ​​тодруулсан болно. Өгөгдлийг арван зургаатын форматаар үзүүлэв. Манай тохиолдолд энэ нь u-law (mu-law) дагуу шахагдсан аудио дохио юм, i.e. нэг түүврийн хэмжээ 1 байт байна. Бид анхдагч түүвэрлэлтийн хурдыг (8000 Гц) 50 Гц-ийн багцын хурдаар ашигласан тул RTP пакет бүр 160 байт ачаалал агуулсан байх ёстой. Бид үүнийг ногоон бүсэд байт тоолох замаар харах болно, тэдгээрийн 10 мөр байх ёстой.

Стандартын дагуу ачааны өгөгдлийн хэмжээ нь дөрвийн үржвэр байх ёстой, өөрөөр хэлбэл дөрвөн байт үгийн бүхэл тоог агуулсан байх ёстой. Хэрэв таны ачаалал энэ дүрэмд тохирохгүй байвал та ачааллын төгсгөлд тэг үнэлэгдсэн байт нэмж, Padding битийг тохируулах хэрэгтэй. Энэ бит нь RTP толгойн эхний байт дотор байрлах ба оюу өнгөтэй байна. Бүх ачааллын байт нь 0xFF бөгөөд энэ нь u-law чимээгүй байдал ямар харагддаг болохыг анхаарна уу.

RTP багцын толгой хэсэг нь заавал 12 байтаас бүрдэх боловч хоёр тохиолдолд илүү урт байж болно.

  • Пакет нь хэд хэдэн эх сурвалжаас (RTP урсгал) дохиог холих замаар олж авсан аудио дохиог дамжуулах үед толгойн эхний 12 байтын дараа энэ пакетын ачааллыг үүсгэхэд ашиг тустай эх сурвалжийн тодорхойлогчдын жагсаалт бүхий хүснэгт гарч ирнэ. Энэ тохиолдолд толгойн эхний байтын доод дөрвөн бит (талбар Хувь нэмрээ оруулах эх сурвалжийн тодорхойлогчдын тоо) эх сурвалжийн тоог заана. Талбайн хэмжээ нь 4 бит тул хүснэгтэд 15 хүртэлх эх сурвалжийн танигч байж болно. Тус бүр нь 4 байт эзэлдэг. Энэ хүснэгтийг хурлын дуудлага хийх үед ашигладаг.

  • Гарчиг нь өргөтгөлтэй үед . Энэ тохиолдолд битийг толгойн эхний байтад тохируулна X. Өргөтгөсөн толгой хэсэгт оролцогчдын хүснэгтийн дараа (хэрэв байгаа бол) нэг үгтэй өргөтгөлийн толгой хэсэг, дараа нь өргөтгөлийн үгс байна. Өргөтгөл нь нэмэлт өгөгдөл дамжуулахад ашиглаж болох байтуудын цуглуулга юм. Стандарт нь энэ өгөгдлийн форматыг заагаагүй - энэ нь юу ч байж болно. Жишээлбэл, энэ нь RTP пакетуудыг хүлээн авдаг төхөөрөмжийн зарим нэмэлт тохиргоо байж болно. Гэсэн хэдий ч зарим хэрэглээний хувьд өргөтгөсөн толгойн стандартуудыг боловсруулсан. Энэ нь жишээлбэл стандарт дахь харилцаа холбооны хувьд хийгддэг ED-137 (VoIP ATM-ийн бүрэлдэхүүн хэсгүүдийн харилцан ажиллах стандартууд).

Одоо толгойн талбаруудыг илүү нарийвчлан авч үзье. Доорх нь RTP толгойн бүтэцтэй каноник зураг бөгөөд үүнийг би эсэргүүцэж чадаагүй бөгөөд ижил өнгөөр ​​будсан.

Mediastreamer2 VoIP хөдөлгүүртэй танилцаж байна. 8-р хэсэг
VER — протоколын хувилбарын дугаар (одоогийн хувилбар 2);

P - RTP багцыг төгсгөлд нь хоосон байтаар дүүргэсэн тохиолдолд тавигддаг туг;

X - толгойг өргөтгөсөн гэсэн туг;

CC - тогтмол толгойн дараа CSRC танигчийн тоог агуулсан (1..3 үгийн дараа), хүснэгтийг зурагт харуулаагүй болно;

M - хүрээний эхлэл эсвэл суваг дахь яриа байгаа эсэхийг харуулсан тэмдэглэгээ (хэрэв ярианы түр зогсоох мэдрэгч ашигладаг бол). Хэрэв хүлээн авагч нь ярианы түр зогсоох мэдрэгчгүй бол энэ битийг байнга тохируулна;

PTYPE - ачааны форматыг зааж өгнө;

Дарааллын дугаар - пакетууд илгээсэн дарааллаар нь хүлээн авагчид хүрэх бодит нөхцөл байдаг тул пакетуудыг тоглуулах дарааллыг сэргээхэд ашигладаг пакетийн дугаар. Анхны утга нь санамсаргүй байдлаар хийгдсэн байх ёстой бөгөөд хэрэв RTP урсгалыг шифрлэсэн бол түүнийг хакердахад хэцүү байх болно. Мөн энэ талбар нь алдсан пакетуудыг илрүүлэх боломжийг олгодог;

Цаг хугацаа - цагийн тэмдэг. Цагийг дохионы дээжээр хэмждэг, i.e. хэрэв тэсрэлт 160 дээжийг агуулж байвал дараагийн тэсрэлтийн цагийн тэмдэг 160 илүү байх болно. Хугацаа тэмдгийн анхны утга санамсаргүй байх ёстой;

SSRC — багцын эх сурвалжийн танигч, энэ нь өвөрмөц байх ёстой. RTP урсгалыг эхлүүлэхийн өмнө үүнийг санамсаргүй байдлаар үүсгэх нь дээр.

Хэрэв та өөрийн RTP пакет дамжуулагч эсвэл хүлээн авагчийг хөгжүүлбэл бүтээмжийг нэмэгдүүлэхийн тулд багцуудаа нэгээс олон удаа үзэх шаардлагатай болно. TShark дээр пакет шүүлтүүрийг хэрхэн ашиглах талаар сурахыг танд зөвлөж байна, энэ нь танд зөвхөн эдгээр пакетуудыг авах боломжийг олгодог. таны сонирхлыг татаж байна. Сүлжээнд олон арван RTP төхөөрөмж ажилладаг орчинд энэ нь маш үнэ цэнэтэй юм. TShark командын мөрөнд шүүлтүүрийн сонголтыг "-f" сонголтоор зааж өгсөн болно. Бид 8010 портоос пакетуудыг авахыг хүссэн үедээ энэ сонголтыг ашигласан:
-f "udp port 8010"
Шүүлтийн параметрүүд нь үндсэндээ "барьсан" багцын хангасан байх ёстой шалгууруудын багц юм. Нөхцөл нь пакет дахь тодорхой байтын хаяг, порт, утгыг шалгаж болно. Нөхцөлүүдийг "AND", "OR" гэх мэт логик үйлдлүүдтэй нэгтгэж болно. Маш хүчирхэг хэрэгсэл.

Хэрэв та талбайн өөрчлөлтийн динамикийг багцаар нь харахыг хүсвэл гаралтыг хуулбарлах шаардлагатай болно TShark гаралтыг дамжуулах замаар сүүлийн нийтлэлд үзүүлсэн шиг файл руу TShark үүдэнд tee. Дараа нь бүртгэлийн файлыг нээнэ үү бага, vim эсвэл асар том текст файлуудтай хурдан ажиллах, мөр хайх боломжтой өөр хэрэглүүрийн тусламжтайгаар та RTP урсгал дахь пакет талбаруудын үйл ажиллагааны бүх нарийн ширийн зүйлийг олж мэдэх боломжтой.

Хэрэв та RTP урсгалаар дамжуулж буй дохиог сонсох шаардлагатай бол хувилбарыг ашиглах хэрэгтэй TShark харааны интерфейстэй Wireshark. Хулганы энгийн аргуудын тусламжтайгаар та дохионы долгионы хэлбэрийг сонсож, харж болно. Гэхдээ нэг нөхцөлөөр - хэрэв энэ нь u-law эсвэл a-low форматаар кодлогдсон бол.

Дараачийн нийтлэл бид тантай хоёр талт харилцаа холбоо хийх болно. Хос чихэвч, нэг ярилцагчийг нөөцөл.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх