SDP (بروتوكول وصف الجلسة، RFC 4566) هو الصيغة النصية التي يحملها SIP لوصف جلسة وسائط — عنوان IP والمنافذ وأنواع الوسائط والترميزات التي يعرضها كل جانب. وهو ليس نقلًا؛ بل وصف. يستخدمه SIP في تبادل عرض/إجابة (RFC 3264) للتفاوض على الوسائط التي سيتبادلها الطرفان فوق RTP.
ما هو SDP
SDP صيغة نصية صغيرة قائمة على الأسطر تصف جلسة وسائط متعددة: أي وسائط (صوت، فيديو)، وإلى أين تُرسَل (عنوان الاتصال والمنفذ)، وأي ترميزات مقبولة، وبأي اتجاه قد تتدفّق. ولا يفسّر SIP الوسائط نفسها؛ بل يحمل SDP في جسم الرسالة (Content-Type: application/sdp) ويترك الطرفين يتفقان على المعاملات. وSDP وصفي بحت — لا ينقل وسائط ولا يتفاوض بذاته؛ ويأتي التفاوض من كيفية تبادل SIP لجسمَي SDP.
بنية الأسطر
جسم SDP تسلسل من أسطر أنواع بحرف واحد بترتيب ثابت، مقسَّم إلى قسم على مستوى الجلسة يتبعه قسم أو أكثر على مستوى الوسائط يبدأ كل منها بسطر m=. وأهمها o= (المصدر ومعرّف الجلسة) وc= (عنوان الاتصال) وm= (نوع الوسائط والمنفذ والنقل والصيغ) وأسطر السمات a= التي تحمل خرائط الترميز والاتجاه. والأسطر مرتَّبة وحسّاسة لحالة الأحرف.
| السطر | الاسم | ينقل |
|---|---|---|
| v= | الإصدار | إصدار ⟦SDP⟧ (0) |
| o= | المصدر | اسم المستخدم، معرف الجلسة/الإصدار، الشبكة/العنوان |
| s= | اسم الجلسة | تسمية للجلسة |
| c= | الاتصال | نوع الشبكة، ونوع العنوان، وعنوان IP الخاص بالوسائط |
| t= | التوقيت | وقت البدء/الإيقاف (0 0 لمكالمة غير محدودة) |
| m= | الوسائط | نوع الوسائط، المنفذ، النقل (RTP/AVP…) والتنسيقات |
| a= | السمات | rtpmap، fmtp، ptime، الاتجاه (sendrecv...) والمزيد |
نموذج العرض/الإجابة
يتفاوض SIP على الوسائط بنموذج العرض/الإجابة في RFC 3264. يرسل طرف عرض SDP (عادةً في INVITE) يسرد تدفقات الوسائط وكل ترميز يقبله. ويعيد الآخر إجابة SDP (عادةً في 200 OK) يختار مما عُرِض — مبقيًا فقط الترميزات التي يدعمها أيضًا، بترتيب تفضيله، وضابطًا الاتجاه. والنتيجة التقاطع الذي اتفق عليه الطرفان. وعدم تطابق بلا ترميز مشترك هو ما ينتج 488 Not Acceptable Here.
v=0
o=alice 2890844526 2890844526 IN IP4 host.example.com
s=-
c=IN IP4 198.51.100.10
t=0 0
m=audio 49170 RTP/AVP 0 8 96
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-15
a=ptime:20
a=sendrecvالترميزات وأنواع الحمولة
يسرد سطر m= أرقام أنواع حمولة RTP، ويطابق كل a=rtpmap رقمًا بترميز ومعدّل ساعة. وتشمل أنواع الحمولة 0–95 تعيينات ساكنة (0 = PCMU/G.711 µ-law، و8 = PCMA/G.711 A-law، و9 = G722، و18 = G729)، بينما 96–127 ديناميكية ويجب تعريفها بـ rtpmap. ويحمل a=fmtp معاملات خاصة بالترميز، وحدث telephone-event (RFC 4733) هو كيف يُتفاوَض على DTMF. وسرد الترميزات بترتيب التفضيل يتيح للمُجيب اختيار الأفضل المدعوم متبادلًا.
| PT | الترميز | الساعة | ملاحظة |
|---|---|---|---|
| 0 | PCMU (G.711 µ-law) | 8000 | ثابت؛ جودة هاتفية (toll quality) ~64 كيلوبت/ثانية |
| 8 | PCMA (G.711 A-law) | 8000 | ثابت؛ جودة هاتفية (toll quality) ~64 كيلوبت/ثانية |
| 9 | G722 | 8000 | نطاق ترددي عريض (صوت بتردد 16 كيلو هرتز) |
| 18 | G729 | 8000 | ثابت؛ مضغوط بمعدل 8 كيلوبت/ثانية تقريبًا |
| 96–127 | ديناميكي (Opus، telephone-event…) | متفاوت | مُعرَّف بواسطة a=rtpmap |
سمات اتجاه الوسائط
تضبط سمة اتجاه a= كيف تتدفّق الوسائط لتدفق. sendrecv الافتراضي ثنائي الاتجاه العادي. وsendonly وrecvonly تقيّدان التدفق باتجاه واحد — تُستخدمان للتعليق والإعلانات والوسائط أحادية الاتجاه. وinactive توقف الوسائط كليًا مع إبقاء الجلسة قائمة. وتبديل هذه (مثلًا sendonly ⇄ sendrecv في re-INVITE) هو كيف يُنفَّذ تعليق المكالمة واستئنافها وموسيقى الانتظار دون إسقاط الحوار.
| سمة | المعنى |
|---|---|
| a=sendrecv | إرسال واستقبال الوسائط (افتراضي) |
| a=sendonly | إرسال فقط (مثلًا إعلان، أو الطرف المعلَّق) |
| a=recvonly | استقبال فقط (مثلًا الطرف الموضوع قيد الانتظار) |
| a=inactive | لا وسائط في أي من الاتجاهين؛ تبقى الجلسة قائمة |
الأسئلة المتكررة
فيمَ يُستخدم SDP في SIP؟
يصف SDP جلسة الوسائط — عنوان IP والمنافذ وأنواع الوسائط والترميزات التي يعرضها كل طرف. ويحمل SIP جسمَي SDP في تبادل عرض/إجابة للتفاوض على أي صوت أو فيديو سيتبادله الطرفان فوق RTP. وSDP نفسه لا يحمل وسائط.
ما هو نموذج العرض/الإجابة في SIP؟
المحدَّد في RFC 3264، هو كيف يتفاوض SIP على الوسائط: يرسل جانب عرض SDP (غالبًا في INVITE) يسرد وسائطه وترميزاته، ويعيد الآخر إجابة SDP (غالبًا في 200 OK) يختار المجموعة الفرعية التي يدعمها أيضًا. والتقاطع المتفَق عليه هو ما يتدفّق.
ماذا يعني سطر m= في SDP؟
يعلن سطر m= (الوسائط) تدفق وسائط: نوعه (صوت/فيديو)، والمنفذ الذي يُرسَل إليه، والنقل (مثل RTP/AVP أو RTP/SAVP لـ SRTP)، وقائمة أرقام أنواع حمولة RTP المعروضة. ثم يُوصَف كل نوع حمولة بسطر a=rtpmap.
كيف تُختار الترميزات في مكالمة SIP؟
يسرد العارض الترميزات المقبولة بترتيب التفضيل في SDP. ويبقي المُجيب فقط تلك التي يدعمها أيضًا ويعيدها، مختارًا فعليًا الأفضل المدعوم متبادلًا. وإن لم تتقاطع المجموعتان، يفشل التفاوض، عادةً بـ 488 Not Acceptable Here.
كيف يُنفَّذ تعليق المكالمة بـ SDP؟
بتغيير سمة اتجاه الوسائط في re-INVITE — مثلًا ضبط a=sendonly (أو تاريخيًا عنوان اتصال صفري) لتعليق الطرف البعيد، وa=sendrecv للاستئناف. يبقى الحوار قائمًا؛ ويتغيّر فقط اتجاه الوسائط.
مواصفات المصدر
تستند هذه الصفحة إلى المعايير المنشورة. يفتح في علامة تبويب جديدة.