Mediastreamer2 वीओआईपी इंजन की खोज। भाग ---- पहला

लेख की सामग्री मेरे से ली गई है ज़ेन चैनल.

Mediastreamer2 वीओआईपी इंजन की खोज। भाग ---- पहला

आरटीपी पैकेट संरचना

पिछले लेख हम प्रयोग कर रहे हैं टीशार्क हमारे रिसीवर और ट्रांसमीटर के बीच आदान-प्रदान किए गए RTP पैकेटों को कैप्चर करने का प्रदर्शन किया। खैर, इसमें हम पैकेज के तत्वों को अलग-अलग रंगों में रंगेंगे और उनके उद्देश्य के बारे में बात करेंगे।

आइए एक ही पैकेज पर नज़र डालें, लेकिन रंगीन मार्जिन और व्याख्यात्मक लेबल के साथ:
Mediastreamer2 वीओआईपी इंजन की खोज। भाग ---- पहला

लिस्टिंग के निचले भाग में, आरटीपी पैकेट बनाने वाले बाइट्स टिंटेड हैं, और यह बदले में यूडीपी पैकेट का पेलोड है (इसका हेडर काले घेरे में है)। रंगीन पृष्ठभूमि आरटीपी हेडर के बाइट्स को इंगित करती है, और आरटीपी पैकेट के पेलोड वाले डेटा ब्लॉक को हरे रंग में हाइलाइट किया जाता है। डेटा हेक्साडेसिमल प्रारूप में प्रस्तुत किया गया है। हमारे मामले में, यह यू-लॉ (म्यू-लॉ) के अनुसार संकुचित एक ऑडियो सिग्नल है, अर्थात। एक नमूने का आकार 1 बाइट है। चूंकि हमने डिफ़ॉल्ट नमूनाकरण दर (8000 हर्ट्ज) का उपयोग किया है, 50 हर्ट्ज की पैकेट दर के साथ, प्रत्येक आरटीपी पैकेट में पेलोड के 160 बाइट्स होने चाहिए। हम हरे क्षेत्र में बाइट गिनकर इसे देखेंगे, उनमें से 10 लाइनें होनी चाहिए।

मानक के अनुसार, पेलोड में डेटा की मात्रा चार से अधिक होनी चाहिए, या दूसरे शब्दों में, इसमें चार-बाइट शब्दों की पूर्णांक संख्या होनी चाहिए। यदि ऐसा होता है कि आपका पेलोड इस नियम से मेल नहीं खाता है, तो आपको पेलोड के अंत में शून्य-मूल्यवान बाइट जोड़ने और पैडिंग बिट सेट करने की आवश्यकता है। यह बिट RTP हेडर के पहले बाइट में स्थित है और फ़िरोज़ा रंग का है। ध्यान दें कि सभी पेलोड बाइट 0xFF हैं, जो कि यू-लॉ साइलेंस जैसा दिखता है।

RTP पैकेट हेडर में 12 अनिवार्य बाइट होते हैं, लेकिन दो मामलों में यह लंबा हो सकता है:

  • जब एक पैकेट में कई स्रोतों (RTP स्ट्रीम) से संकेतों को मिलाकर प्राप्त ऑडियो सिग्नल होता है, तो हेडर के पहले 12 बाइट्स के बाद स्रोत पहचानकर्ताओं की सूची के साथ एक तालिका होती है, जिसके पेलोड का उपयोग इस पैकेट के पेलोड को बनाने के लिए किया गया था। इस मामले में, हेडर के पहले बाइट के निचले चार बिट्स में (field योगदानकर्ता स्रोत पहचानकर्ताओं की गिनती होती है) स्रोतों की संख्या इंगित करता है। फ़ील्ड का आकार 4 बिट है, इसलिए तालिका में अधिकतम 15 स्रोत पहचानकर्ता हो सकते हैं। जिनमें से प्रत्येक 4 बाइट्स पर कब्जा करता है। कॉन्फ़्रेंस कॉल सेट करते समय इस तालिका का उपयोग किया जाता है।

  • जब शीर्षक का विस्तार हो। इस मामले में, हेडर के पहले बाइट में बिट सेट किया गया है X. विस्तारित हेडर में, प्रतिभागियों की तालिका (यदि कोई हो) के बाद, एक-शब्द एक्सटेंशन हेडर होता है, जिसके बाद एक्सटेंशन शब्द होते हैं। एक एक्सटेंशन बाइट्स का एक संग्रह है जिसका उपयोग आप अतिरिक्त डेटा स्थानांतरित करने के लिए कर सकते हैं। मानक इस डेटा के प्रारूप को निर्दिष्ट नहीं करता - यह कुछ भी हो सकता है। उदाहरण के लिए, यह RTP पैकेट प्राप्त करने वाले डिवाइस के लिए कुछ अतिरिक्त सेटिंग्स हो सकती हैं। हालांकि, कुछ अनुप्रयोगों के लिए विस्तारित शीर्षलेख मानक विकसित किए गए हैं। यह किया जाता है, उदाहरण के लिए, मानक में संचार के लिए ED-137 (वीओआईपी एटीएम घटकों के लिए इंटरऑपरेबिलिटी मानक).

अब आइए हेडर फ़ील्ड्स को और अधिक विस्तार से देखें। नीचे RTP हेडर की संरचना के साथ एक विहित चित्र है, जिसका मैं भी विरोध नहीं कर सका और उसी रंग में चित्रित किया।

Mediastreamer2 वीओआईपी इंजन की खोज। भाग ---- पहला
देखें - प्रोटोकॉल संस्करण संख्या (वर्तमान संस्करण 2);

P - एक ध्वज जो उन मामलों में सेट किया जाता है जहां आरटीपी पैकेट को अंत में खाली बाइट्स के साथ पूरक किया जाता है;

X - फ़्लैग करें कि हेडर बढ़ाया गया है;

CC - निरंतर हेडर (शब्द 1..3 के बाद) के बाद CSRC पहचानकर्ताओं की संख्या शामिल है, तालिका चित्र में नहीं दिखाई गई है;

M - एक फ्रेम की शुरुआत का मार्कर या चैनल में भाषण की उपस्थिति (यदि एक भाषण ठहराव डिटेक्टर का उपयोग किया जाता है)। यदि रिसीवर में स्पीच पॉज़ डिटेक्टर नहीं है, तो यह बिट स्थायी रूप से सेट हो जाएगा;

पीटीवाईपीई - पेलोड के प्रारूप को निर्दिष्ट करता है;

क्रम संख्या - पैकेट संख्या, उस क्रम को पुनर्स्थापित करने के लिए उपयोग किया जाता है जिसमें पैकेट चलाए जाते हैं, क्योंकि वास्तविक स्थिति तब होती है जब पैकेट गलत क्रम में रिसीवर तक पहुंच सकते हैं जिसमें उन्हें भेजा गया था। प्रारंभिक मान यादृच्छिक होना चाहिए, ऐसा इसलिए किया जाता है ताकि यदि RTP स्ट्रीम एन्क्रिप्ट हो जाए, तो उसे हैक करना मुश्किल हो जाए। साथ ही, यह फ़ील्ड आपको छूटे हुए पैकेटों का पता लगाने की अनुमति देता है;

टाइमस्टैम्प - टाइमस्टैम्प। समय को सिग्नल के नमूनों में मापा जाता है, अर्थात यदि किसी बर्स्ट में 160 नमूने हैं, तो अगले बर्स्ट का टाइमस्टैम्प 160 और होगा। टाइमस्टैम्प का प्रारंभिक मान यादृच्छिक होना चाहिए;

एसएसआरसी - पैकेज स्रोत का पहचानकर्ता, यह अद्वितीय होना चाहिए। आरटीपी स्ट्रीम शुरू करने से पहले इसे बेतरतीब ढंग से जनरेट करना बेहतर है।

यदि आप अपना स्वयं का RTP ट्रांसमीटर या रिसीवर विकसित करते हैं, तो उत्पादकता बढ़ाने के लिए आपको अपने पैकेटों की एक से अधिक बार समीक्षा करनी होगी, मेरा सुझाव है कि आप TShark में पैकेट फ़िल्टरिंग का उपयोग करना सीखें, यह आपको केवल उन पैकेटों को कैप्चर करने की अनुमति देता है जो आप के लिए ब्याज। ऐसे माहौल में जहां दर्जनों आरटीपी डिवाइस नेटवर्क पर काम करते हैं, यह बहुत मूल्यवान है। TShark कमांड लाइन में, फ़िल्टरिंग विकल्पों को "-f" विकल्प के साथ निर्दिष्ट किया गया है। हमने इस विकल्प का उपयोग तब किया जब हम पोर्ट 8010 से पैकेट कैप्चर करना चाहते थे:
-f "udp port 8010"
फ़िल्टरिंग पैरामीटर अनिवार्य रूप से मानदंडों का एक सेट है जो "पकड़े गए" पैकेट से मेल खाना चाहिए। स्थिति पैकेट में एक निश्चित बाइट का पता, बंदरगाह, मूल्य की जांच कर सकती है। शर्तों को तार्किक संचालन "AND", "OR", आदि के साथ जोड़ा जा सकता है। एक बहुत ही शक्तिशाली उपकरण।

यदि आप बैचों में फ़ील्ड परिवर्तनों की गतिशीलता देखना चाहते हैं, तो आपको आउटपुट को डुप्लिकेट करना होगा टीशार्क फ़ाइल में, जैसा कि पिछले लेख में दिखाया गया है, आउटपुट पास करके टीशार्क प्रवेश पर टी. इसके बाद, लॉग फ़ाइल को खोलें कम, विम या कोई अन्य उपकरण जो बड़ी पाठ फ़ाइलों के साथ जल्दी से काम कर सकता है और स्ट्रिंग्स की खोज कर सकता है, आप RTP स्ट्रीम में पैकेट फ़ील्ड के व्यवहार की सभी बारीकियों का पता लगा सकते हैं।

यदि आपको RTP स्ट्रीम द्वारा प्रेषित सिग्नल को सुनने की आवश्यकता है, तो आपको संस्करण का उपयोग करने की आवश्यकता है टीशार्क दृश्य इंटरफ़ेस के साथ Wireshark. सरल माउस जोड़तोड़ के साथ, आप सिग्नल के तरंग को सुन और देख सकते हैं। लेकिन एक शर्त पर - अगर यह यू-लॉ या ए-लो फॉर्मेट में एनकोडेड है।

अगला लेख हम आपके साथ एक डुप्लेक्स इंटरकॉम बनाएंगे। हेडसेट की एक जोड़ी और एक इंटरलोक्यूटर पर स्टॉक करें।

स्रोत: www.habr.com

एक टिप्पणी जोड़ें