استكشاف محرك Mediastreamer2 VoIP. الجزء 8

مادة المقال مأخوذة من بلدي قناة زين.

استكشاف محرك Mediastreamer2 VoIP. الجزء 8

بنية حزمة RTP

في الماضي مقالة نحن نستخدم شارك أجرى التقاط حزم RTP التي تم تبادلها بين جهاز الاستقبال وجهاز الإرسال لدينا. حسنًا ، سنرسم في هذا العنصر عناصر العبوة بألوان مختلفة ونتحدث عن الغرض منها.

دعنا نلقي نظرة على نفس الحزمة ، ولكن مع هوامش ملونة وملصقات توضيحية:
استكشاف محرك Mediastreamer2 VoIP. الجزء 8

في الجزء السفلي من القائمة ، يتم تلوين البايتات التي تشكل حزمة RTP ، وهذا بدوره يمثل حمولة حزمة UDP (رأسها محاط بدائرة باللون الأسود). تشير الخلفيات الملونة إلى وحدات البايت الخاصة برأس RTP ، ويتم تمييز كتلة البيانات التي تحتوي على حمولة حزمة RTP باللون الأخضر. يتم تقديم البيانات بتنسيق سداسي عشري. في حالتنا ، هذه إشارة صوتية مضغوطة وفقًا للقانون u (mu-law) ، أي عينة واحدة بحجم 1 بايت. نظرًا لأننا استخدمنا معدل أخذ العينات الافتراضي (8000 هرتز) ، بمعدل حزمة يبلغ 50 هرتز ، يجب أن تحتوي كل حزمة RTP على 160 بايت من الحمولة. سنرى هذا من خلال حساب البايت في المنطقة الخضراء ، يجب أن يكون هناك 10 أسطر منها.

وفقًا للمعيار ، يجب أن يكون مقدار البيانات في الحمولة مضاعفًا لأربعة ، أو بعبارة أخرى ، يجب أن يحتوي على عدد صحيح من الكلمات المكونة من أربعة بايت. إذا حدث أن حمولتك لا تتطابق مع هذه القاعدة ، فأنت بحاجة إلى إضافة وحدات بايت صفرية إلى نهاية الحمولة وتعيين بت الحشو. يوجد هذا البت في البايت الأول لرأس 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 - علامة بداية إطار أو وجود كلام في القناة (في حالة استخدام كاشف لإيقاف الكلام). إذا كان جهاز الاستقبال لا يحتوي على كاشف لإيقاف الكلام ، فيجب ضبط هذه البتة بشكل دائم ؛

بتيب - يحدد تنسيق الحمولة ؛

رقم التسلسل - رقم الحزمة ، يُستخدم لاستعادة الترتيب الذي يتم تشغيل الحزم به ، نظرًا لأن الموقف الحقيقي هو عندما تصل الحزم إلى جهاز الاستقبال بالترتيب الخاطئ الذي تم إرسالها به. يجب أن تكون القيمة الأولية عشوائية ، ويتم ذلك بحيث إذا تم تشفير دفق RTP ، فسيكون من الصعب اختراقه. يسمح لك هذا الحقل أيضًا باكتشاف الحزم المفقودة ؛

الطابع الزمني - الطابع الزمني. يتم قياس الوقت في عينات الإشارة ، أي إذا احتوت الرشقة على 160 عينة ، فإن الطابع الزمني للدفقة التالية سيكون 160. يجب أن تكون القيمة الأولية للطابع الزمني عشوائية ؛

مفوضية استفتاء جنوب السودان - معرّف مصدر الحزمة ، يجب أن يكون فريدًا. من الأفضل إنشاءه بشكل عشوائي قبل بدء دفق RTP.

إذا قمت بتطوير جهاز إرسال أو مستقبل RTP الخاص بك ، فسيتعين عليك مراجعة الحزم الخاصة بك أكثر من مرة من أجل زيادة الإنتاجية ، أوصي بأن تتعلم كيفية استخدام تصفية الحزم في TShark ، فهي تتيح لك التقاط تلك الحزم فقط تهمك. في بيئة تعمل فيها العشرات من أجهزة RTP على الشبكة ، يعد هذا أمرًا ذا قيمة كبيرة. في سطر أوامر TShark ، يتم تحديد خيارات التصفية باستخدام الخيار "-f". استخدمنا هذا الخيار عندما أردنا التقاط الحزم من المنفذ 8010:
-f "udp port 8010"
معلمات التصفية هي في الأساس مجموعة من المعايير التي يجب أن تلبيها الحزمة "الملتقطة". يمكن للشرط التحقق من العنوان والمنفذ وقيمة بايت معين في الحزمة. يمكن دمج الشروط مع العمليات المنطقية "و" ، "أو" ، إلخ. أداة قوية جدا.

إذا كنت ترغب في عرض ديناميكيات تغييرات الحقل على دفعات ، فستحتاج إلى تكرار الإخراج شارك إلى ملف ، كما هو موضح في المقال الأخير ، عن طريق تمرير الإخراج شارك في المدخل نقطة الإنطلاق. بعد ذلك ، افتح ملف السجل باستخدام أقل ، فيم أو أداة أخرى يمكنها العمل بسرعة مع ملفات نصية ضخمة والبحث عن سلاسل ، يمكنك معرفة جميع الفروق الدقيقة في سلوك حقول الحزمة في تدفق RTP.

إذا كنت بحاجة إلى الاستماع إلى الإشارة المرسلة من خلال تدفق RTP ، فأنت بحاجة إلى استخدام الإصدار شارك مع واجهة مرئية يريشارك. من خلال التلاعب البسيط بالماوس ، يمكنك الاستماع إلى شكل موجة الإشارة ورؤيتها. ولكن بشرط واحد - إذا تم ترميزه بتنسيق u-law أو تنسيق a-low.

التالي مقالة سنقوم بعمل اتصال داخلي مزدوج معك. قم بتخزين زوج من سماعات الرأس ومحاور واحد.

المصدر: www.habr.com

إضافة تعليق