Ուսումնասիրելով Mediastreamer2 VoIP շարժիչը: Մաս 8

Հոդվածի նյութը վերցված է իմ զեն ալիք.

Ուսումնասիրելով Mediastreamer2 VoIP շարժիչը: Մաս 8

RTP փաթեթի կառուցվածքը

Անցյալում Հոդված մենք օգտագործում ենք TSShark գրավված RTP փաթեթներ, որոնք փոխանակվում են մեր ստացողի և հաղորդիչի միջև: Դե, այս մեկում մենք կնկարենք փաթեթի տարրերը տարբեր գույներով և կխոսենք դրանց նպատակի մասին։

Եկեք նայենք նույն փաթեթին, բայց մգեցված դաշտերով և բացատրական նշումներով.
Ուսումնասիրելով Mediastreamer2 VoIP շարժիչը: Մաս 8

Ցուցակի ներքևում գտնվում են RTP փաթեթը կազմող բայթերը, որն իր հերթին հանդիսանում է UDP փաթեթի օգտակար բեռը (նրա վերնագիրը ուրվագծված է սևով): Գունավոր ֆոները ցույց են տալիս RTP վերնագրի բայթերը, իսկ կանաչը ցույց է տալիս տվյալների բլոկը, որը պարունակում է RTP փաթեթի օգտակար բեռը: Այնտեղ տվյալները ներկայացված են տասնվեցական ձևաչափով։ Մեր դեպքում սա աուդիո ազդանշան է, որը սեղմված է u-law-ի (mu-law) համաձայն, այսինքն. մեկ նմուշը 1 բայթ է: Քանի որ մենք օգտագործել ենք նմուշառման լռելյայն արագությունը (8000 Հց), 50 Հց փաթեթի արագությամբ, յուրաքանչյուր RTP փաթեթ պետք է պարունակի 160 բայթ օգտակար բեռ: Սա կտեսնենք կանաչ հատվածի բայթերը հաշվելով, պետք է լինի 10 տող։

Ստանդարտի համաձայն, օգտակար բեռնվածքում տվյալների քանակը պետք է լինի չորսի բազմապատիկ, կամ այլ կերպ ասած պետք է պարունակի չորս բայթ բառերի ամբողջ թիվ։ Եթե ​​պատահում է, որ ձեր ծանրաբեռնվածությունը չի հետևում այս կանոնին, ապա դուք պետք է զրոյական արժեքներով բայթեր ավելացնեք բեռի վերջում և սահմանեք Padding bit: Այս բիթը գտնվում է RTP վերնագրի առաջին բայթում և ունի փիրուզագույն գույն: Նկատի ունեցեք, որ բոլոր օգտակար բայթերն ունեն 0xFF արժեքը. ահա թե ինչ տեսք ունի լռությունը u-law ձևաչափով:

RTP փաթեթի վերնագիրը բաղկացած է 12 պահանջվող բայթից, բայց երկու դեպքում այն ​​կարող է ավելի երկար լինել.

  • Երբ փաթեթը կրում է աուդիո ազդանշան, որը ստացվել է մի քանի աղբյուրներից ազդանշաններ խառնելով (RTP հոսքեր), ապա վերնագրի առաջին 12 բայթից հետո կա աղյուսակ՝ աղբյուրի նույնացուցիչների ցանկով, որոնց բեռները օգտագործվել են այս փաթեթի օգտակար բեռը ստեղծելու համար: Այս դեպքում վերնագրի առաջին բայթի ստորին չորս բիթերում (դաշտ Նպաստող աղբյուրի նույնացուցիչների թիվը) նշվում է աղբյուրների քանակը։ Դաշտի չափը 4 բիթ է, ուստի աղյուսակը կարող է պարունակել մինչև 15 աղբյուրի նույնացուցիչ: Որոնցից յուրաքանչյուրը տեւում է 4 բայթ: Այս աղյուսակը օգտագործվում է կոնֆերանսի զանգ կազմակերպելիս:

  • Երբ վերնագիրն ունի ընդլայնում: Այս դեպքում վերնագրի առաջին բայթի բիթը դրված է X. Ընդլայնված վերնագրում մասնակիցների աղյուսակից հետո (եթե այդպիսիք կան) կա մեկ բառով ընդլայնման վերնագիր, որին հաջորդում են ընդլայնման բառերը։ Ընդլայնումը բայթերի մի շարք է, որը կարող եք օգտագործել լրացուցիչ տվյալներ փոխանցելու համար: Ստանդարտը չի նշում այս տվյալների ձևաչափը. դա կարող է լինել ցանկացած բան: Օրինակ, դրանք կարող են լինել RTP փաթեթներ ստացող սարքի որոշ լրացուցիչ կարգավորումներ: Որոշ հավելվածների համար, սակայն, մշակվել են ընդլայնված վերնագրի ստանդարտներ: Դա արվում է, օրինակ, ստանդարտում առկա կապի սարքավորումների համար ED-137 (Փոխգործունակության ստանդարտներ VoIP բանկոմատների բաղադրիչների համար).

Հիմա եկեք ավելի մանրամասն նայենք վերնագրի դաշտերին: Ստորև ներկայացված է RTP վերնագրի կառուցվածքով կանոնական նկար, որին ես նույնպես չդիմացա և ներկեցի նույն գույներով:

Ուսումնասիրելով Mediastreamer2 VoIP շարժիչը: Մաս 8
VER — արձանագրության տարբերակի համարը (ընթացիկ տարբերակ 2);

P — դրոշակ, որը դրված է այն դեպքերում, երբ RTP փաթեթը վերջում լրացվում է դատարկ բայթերով.

X — նշեք, որ վերնագիրն ընդլայնված է.

CC — պարունակում է հաստատուն վերնագրին հաջորդող CSRC նույնացուցիչների թիվը (1..3 բառերից հետո), աղյուսակը պատկերված չէ նկարում.

M — կադրի սկզբի նշիչ կամ ալիքում խոսքի առկայություն (եթե օգտագործվում է խոսքի դադարի դետեկտոր): Եթե ​​ընդունիչը չի պարունակում խոսքի դադարի դետեկտոր, ապա այս բիթը պետք է մշտապես կարգավորվի.

PTYPE - ցույց է տալիս ծանրաբեռնվածության ձևաչափը.

Հաջորդական համարը — փաթեթի համարը, որն օգտագործվում է փաթեթների նվագարկման կարգը վերականգնելու համար, քանի որ իրական իրավիճակն այն է, երբ փաթեթները կարող են ստացողին հասնել այլ հերթականությամբ, քան ուղարկվել են: Սկզբնական արժեքը պետք է լինի պատահական, դա արվում է այնպես, որ եթե օգտագործվի RTP հոսքի կոդավորումը, այն դժվար լինի կոտրել: Այս դաշտը նաև թույլ է տալիս հայտնաբերել փաթեթների կաթիլներ.

Timestamp - ժամանակի կնիք: Ժամանակը չափվում է ազդանշանի նմուշներով, այսինքն. եթե փաթեթը պարունակում է 160 նմուշ, ապա հաջորդ փաթեթի ժամանակային դրոշմը կլինի 160-ով:

ՊՊԾԿ — փաթեթի աղբյուրի նույնացուցիչը, այն պետք է լինի եզակի: Ավելի լավ է այն գեներացնել պատահականորեն՝ նախքան RTP հոսքը սկսելը:

Եթե ​​դուք մշակում եք RTP փաթեթների ձեր սեփական հաղորդիչը կամ ստացողը, դուք ստիպված կլինեք դիտել ձեր փաթեթները մեկից ավելի անգամ, ուստի արտադրողականությունը բարձրացնելու համար խորհուրդ եմ տալիս տիրապետել փաթեթների ֆիլտրման օգտագործմանը TShark-ում, այն թույլ է տալիս գրավել միայն այդ փաթեթները: որոնք ձեզ հետաքրքրում են: Այն պայմաններում, երբ տասնյակ RTP սարքեր աշխատում են ցանցում, սա շատ արժեքավոր է: TShark հրամանի տողում զտման պարամետրերը նշվում են «-f» տարբերակով: Մենք օգտագործում էինք այս տարբերակը, երբ ցանկանում էինք փաթեթներ գրավել 8010 նավահանգստից.
-f "udp port 8010"
Զտման պարամետրերը, ըստ էության, չափանիշների մի շարք են, որոնց պետք է համապատասխանի «բռնված» փաթեթը: Պայմանը կարող է ստուգել փաթեթի որոշակի բայթի հասցեն, պորտը կամ արժեքը: Պայմանները կարելի է համատեղել՝ օգտագործելով «AND», «OR» և այլն տրամաբանական գործողությունները: Շատ հզոր գործիք։

Եթե ​​ցանկանում եք դիտել դաշտերի փոփոխությունների դինամիկան խմբաքանակներում, ապա ձեզ հարկավոր է կրկնօրինակել ելքը TSShark դեպի ֆայլ, ինչպես ցույց է տրվել նախորդ հոդվածում, օգտագործելով ելքային փոխանցումը TSShark մուտքի մոտ Թեյ. Հաջորդը, բացեք գրանցամատյանի ֆայլը, օգտագործելով պակաս, վիմ կամ մեկ այլ գործիք, որը կարող է արագ աշխատել հսկայական տեքստային ֆայլերի հետ և որոնել տողեր, դուք կարող եք պարզել փաթեթային դաշտերի վարքագծի բոլոր նրբությունները RTP հոսքում:

Եթե ​​Ձեզ անհրաժեշտ է լսել RTP հոսքի միջոցով փոխանցվող ազդանշանը, ապա դուք պետք է օգտագործեք տարբերակը TSShark տեսողական ինտերֆեյսով Wireshark. Մկնիկի հետ պարզ մանիպուլյացիաների միջոցով դուք կարող եք լսել և տեսնել ազդանշանային օսցիլոգրամը: Բայց մեկ պայմանով՝ եթե այն կոդավորված է u-law կամ a-low ձևաչափով։

Հաջորդը Հոդված Մենք ձեզ հետ կպատրաստենք դուպլեքս դոմոֆոն։ Պահպանեք մի քանի ականջակալ և մեկ զրուցակից:

Source: www.habr.com

Добавить комментарий