Professional Documents
Culture Documents
شبكات نظري
شبكات نظري
إعداد
خليفة محمد حسونة
رقم القيد13530 :
أستاذ المقرر
احمد جحا
الفصل الدراسي :خريف 2018/2019
RTP REAL-TIME TRANSPORT PROTOCOL HEADE مكونات الـ
• PADDING-2ويتكون من BIT 1وهو FLAGيبين إذا كنا سنضيف معلومات إضافية على الـRTP HEADER
وكمثال يمكن أن يستخدم هذا الـ PADDINGفي حالة كنا نريد إرسال الـ RTP PAYLOADبشكل مشفر وبهذه الحالة
يضاف الـ PADDINGوالذي سيحتوي على معلومات حول موقع الـ PAYLOADالمشفر في أسفل الـRTP
.HEADER
• EXTENSION -3ويتكون من BIT 1وهو FLAGيبين إذا كان الـ RTP HEADERيحتوي على
EXTENSIONSفي نهاية الـ RTP HEADERأم ال والتي قد تحتوي على معلومات خاصة بالـAPPLICATION
الذي يستخدم الـ RTPلنقل البيانات.
• CSRC COUNT -4ويتكون من BITS 4وفيه يبين عدد الـ CONTENT SOURCE IDENTIFIERSالملحقة مع
الـ RTP HEADERويستخدم هذا الـ FIELDفي حالة كنا نريد دمج أكثر من RTP STREAMفي RTP STREAMواحد
فمن المعروف أنه ال يمكن تحميل أكثر من PAYLOAD TYPEواحد على الـ RTP STREAMوبالتالي في حالة كنا نريد
إرسال الصوت والصورة فال بد من استخدام اثنين من الـ RTP STREAMوبالتالي قد تظهر مشاكل الحقة في عملية المزامنة
بين الصوت والصورة ولحل هذه المشكلة يمكن دمج الـ RTP STREAMالخاص بالصوت والـ RTP STREAMالخاص
بالصورة بـ RTP STREAMواحد وتميزها بإعطاء IDENTIFIERخاص لكل منها ويتكون الـ
IDENTIFIERللـ CSRCمن BITS 32وقد يصل عدد الـ CSRCالتي يمكن تحميلها على الـ RTP HEADERإلى 16
بحجم أعظمي .32X16 = 480 BITS
• MARKER-5ويتكون من BIT 1وهو FLAGيبين بداية ونهاية اإلرسال لكل مجموعة من البيانات وكمثال في حالة نقل
صورة IMAGE FRAMEعلى أكثر من RTP PACKETفإن ذلك الـ MARKERسيحتوي على قيمة 1في أول
FRAMEيتم إرساله لمعرفة بداية ونهاية اإلرسال لتلك الصورة.
• PAYLOAD TYPE-6ويتكون من BITS 7توضح فيها نوع البيانات التي سيتم تحميلها على الـ RTP PACKETوكما أوضحنا سابقا ال
يمكن أن يتم تحميل أكثر من نوع من البيانات على نفس الـ RTP STREAMويبين الجدول التالي أنواع الـ RTP PAYLOADالتي يمكن
تحميلها على الـ:RTP STREAM
• HTTP://WWW.SOCKETCODER.COM/DOWNLOAD/IMAGES/281RTP_PT.GIF
• :SEQUENCE NUMBER-7ويتكون من BITS 16ويحتوي على الرقم المتسلسل والذي يولد في البداية بشكل عشوائي ويزيد بمقدار
واحد لكل RTP PACKETيتم إرساله ويستفاد من هذا الرقم لمعرفة موقع الـ RTP PACKETعند استالمه إلجراء عملية الترتيب كذلك
يستفاد منه في اكتشاف فقدان إي من الـ RTP PACKETSالمرسلة.
• :TIMESTAMP-8ويتكون من BITS 32ويحتوي على الوقت الزمني الذي تم فيه تحميل البيانات على الـ RTP PACKETويستفاد من
هذه البيانات بشكل كبير لتغلب على مشكالت الـ JITTERوالمزامنة بين عملية اإلرسال واالستقبال والزمن المستغرق بينهما.
• : SSRC IDENTIFIER SYNCHRONIZATION SOURCE-9ويتكون من BITS 32ويحتوي على رقم متسلسل يولد عشوائيا
لتميز كل RTP STREAMعن غيره بحيث ال يتشابه RTP STREAMمع اآلخر على نفس الـ SESSIONمما قد يؤدي إلى ما يسمى
بالـ.RTP STREAM CONFLICT
استخدام الـ RTP In .NET
ضمن Third Party Kitsمجموعة من الـ Microsoftلكن قدمت RTP Protocolللـ Classesأية .NET Framework 3.5ال يدعم الـ
بشكل كامل وقد تم تقسيمه إلى مجموعة RTP Protocolوالذي يحتوي على نواة الـ Microsoft Conference XPمشروعها المفتوح المصدر
:وكما في الشكل التالي RTPبناء على كيفية عمل الـ Classesمن الـ
بشكل أساسي في عملية إدارة جلسة االتصال والتي يمكن أن يتم فيها RTP Sessionيستخدم الـ RtpParticipant :والـ RTPSessionأوال الـ
كذلك يمكن للمشترك Participantsالواحدة مجموعة من المشتركين Sessionكما ويمكن أن يتصل بالـ RTP Streamإرسال مجموعة من الـ
CNAMEالذي يتم اإلرسال له كذلك يتم إضافة Portبالعنوان ورقم الـ RTP Sessionوتميز كل RTP Sessionالواحد أن يتصل بأكثر من
:عن األخرى وكمثال في الدوت نيت RTP Sessionلتميز محتويات كل
RtpSession rtpSession = new RtpSession(endpoint, new RtpParticipant("My Audio Session",
;)ParticipatorName), true, true
RTPاالستقبال وينضم المرسل أو المستقبل إلى الـ Portباإلضافة إلى Multicast IPوالذي يحتوي على عنوان Endpoint Objectإذ يمرر الـ
واسم المتصل إليه بعد ذلك CNAMEولتعريفه يجب أن يتم تمرير الـ RTP Sessionإلى الـ RtpParticipant Objectبتمرير الـ Session
فقط ويحدد الثاني إذا كنت RTP Sessionويحدد في األول أنك تريد االنضمام إلى الـ Falseأو Trueبتمرير قيم RTP Sessionنكمل تعريف الـ
Session.تنوي اإلرسال باستخدام تلك
معين عند حدوث أي منها Actionوالتي يمكن أن يوضع RTP Sessionوهو مجموعة األحداث التي تحدث داخل الـ RtpEvents:ثانيا الـ
:وتقسم هذه األحداث إلى ثالثة أقسام وهي
: وهيEXCEPTIONS EVENTS • أوال أحداث ترتبط باكتشاف أخطاء أو مشاكل إثناء اإلرسال أو االستقبال ويمكن أن نسميها
DUPLICATECNAMEDETECTED-1
2-FRAMEOUTOFSEQUENCE
3-HIDDENSOCKETEXCEPTION
4-INVALIDPACKET
5-INVALIDPACKETINFRAME
6-NETWORKTIMEOUT
7-PACKETOUTOFSEQUENCE
8-RTPPARTICIPANTTIMEOUT
9-RTPSTREAMTIMEOUT
.RECEIVERREPORT وهوRTP RECEIVED DATA عن حالة الـREPORT • ثانيا حدث وحيد لجلب معلومات
SESSION RTP PARTICIPANT & STREAM وإضافة وحذفSESSION • ثالثا أحداث تتعلق باالنضمام إلى
: وهيADD/REMOVE EVENTS
RTPPARTICIPANTADDED-1- •
2-RTPPARTICIPANTDATACHANGED
3-RTPPARTICIPANTREMOVED
4-RTPSTREAMREMOVED
5-RTPSTREAMADDED
ثالثا الـ RTPSENDERوالـ RTPLISTENER :يمكن اإلرسال مباشرة بعد تعريف الـ RTP SESSIONولتعريف الـ RTPSENDERيجب •
أن يمرر له الـ RTP SESSIONالذي قمنا بتعريفه سابقا ويضاف إليها أيضا الـ PAYLOAD TYPEالذي سيتم إرساله على الـRTP SESSION
ولتمييز الـ RTP SENDERفي الـ SESSIONعن غيره يمكن أن يتم تعريف HASH TABLEلذلك اختياريا أو قيمة NULLوتمريره لدالة
CREATERTPSENDERوكما يلي كمثال: