SCTP (RFC 4960) نقل موثوق موجّه بالرسائل مصمَّم للإشارات. وخلافًا لتدفق البايتات الوحيد في TCP، يسلّم رسائل منفصلة عبر عدة تدفقات مستقلة (متجنّبًا حجب رأس الطابور) ويدعم تعدّد الإيواء — عدة عناوين IP لكل نهاية لتجاوز فشل المسار آليًا. ويستخدمه SIGTRAN لحمل SS7 فوق IP.
لماذا SCTP بدل TCP
تحتاج إشارات SS7 تسليمًا موثوقًا مرتَّبًا منخفض زمن الاستجابة مع تجاوز فشل سريع — وهي متطلبات يلبّيها TCP جزئيًا فقط. فـ TCP تدفق بايتات وحيد، فيحجب مقطع مفقود واحد كل بايت لاحق حتى يُعاد إرساله (حجب رأس الطابور)، ووصلة TCP مقيَّدة بزوج عناوين IP واحد، فيكسرها فشل مسار. وصُمّم SCTP لإصلاح كليهما: يسلّم رسائل مستقلة عبر عدة تدفقات ويربط الوصلة بعدة عناوين لتجاوز فشل شفّاف. كما يقاوم هجمات إغراق SYN بمصافحة رباعية.
| الخاصية | TCP | SCTP |
|---|---|---|
| نموذج البيانات | تدفق البايت | موجّه للرسائل (يحافظ على حدود الرسائل) |
| التدفقات | واحد | تدفقات مستقلة متعددة لكل اقتران (association) |
| حجب رأس الطابور (Head-of-line) | عبر الاتصال بأكمله | محصور في تدفق (stream) واحد |
| عنونة نقاط النهاية | زوج IP واحد | متعدد الاستضافة (multi-homed: عدة عناوين IP لكل نقطة نهاية) |
| المصافحة | مصافحة ثلاثية (معرّضة لهجمات SYN flood) | مصافحة رباعية مع cookie موقّع |
| خيارات التسليم | مرتب فقط | مرتبة أو غير مرتبة لكل رسالة |
تعدّد التدفقات
تحمل وصلة SCTP عدة تدفقات منطقية، مرقَّمة بمعرّف تدفق. وكل تدفق مرتَّب مستقلًا برقم تسلسل تدفق، بينما يحكم رقم تسلسل إرسال واحد (TSN) التسليم الموثوق عبر الوصلة كاملة. والأثر أن فقدًا على تدفق واحد لا يعطّل الآخرين — فرسالة عالقة لوجهة لا تحجب الإشارات لأخرى. ويمكن للتطبيقات أيضًا إرسال رسائل غير مرتَّبة حين لا يلزم التسلسل، ما يقلّل زمن الاستجابة أكثر.
تعدّد الإيواء (multi-homing) والتحوّل الاحتياطي
يمكن لنهاية SCTP ربط عدة عناوين IP — عادةً على مسارات شبكة منفصلة. عنوان واحد هو المسار الأساسي؛ والباقي بدائل. ويراقب SCTP كل عنوان وجهة باستمرار بكتل HEARTBEAT، وإن فشل المسار الأساسي أعاد الإرسال على بديل دون تفكيك الوصلة. وهذا يمنح روابط الإشارات مرونة احترافية فوق IP لا تستطيعها وصلة TCP وحيدة الإيواء، وهو سبب رئيسي لاختيار SIGTRAN لـ SCTP.
صيغة الرزمة القائمة على الكتل
لرزمة SCTP ترويسة مشتركة بطول 12 بايت — منفذا المصدر والوجهة، ووسم تحقق بطول 32 بت يحرس الوصلة، ومجموع تحقق CRC-32c — يتبعها كتلة واحدة أو أكثر. والكتل واصفة لذاتها (نوع، أعلام، طول، قيمة) ويمكن حزم عدة منها في رزمة واحدة. تُعِدّ كتل التحكم الوصلة وتديرها؛ وتحمل كتل DATA رسائل المستخدم. وتتيح هذه البنية لـ SCTP الإقرار والنبض وحمل البيانات بكفاءة في الرزمة نفسها.
Common header (12 bytes):
Source port (2) Destination port (2)
Verification Tag (4) Checksum CRC-32c (4)
Then 1..n chunks, each:
Type (1) Flags (1) Length (2) Value (variable)
e.g. [ DATA chunk (TSN, Stream ID, SSN, payload) ] [ SACK chunk ]أنواع الكتل وإعداد الوصلة
تُنشأ الوصلة بمصافحة رباعية — INIT وINIT ACK (حاملة كوكي حالة موقّعة) وCOOKIE ECHO وCOOKIE ACK — تتيح للخادم البقاء بلا حالة حتى تُعاد الكوكي، هازمةً هجمات إغراق SYN. وتتدفّق البيانات في كتل DATA يُقرّها SACK. وتفحص HEARTBEAT/HEARTBEAT ACK المسارات الخاملة. وتُغلَق الوصلة بسلاسة بـ SHUTDOWN أو فجأةً بـ ABORT.
| النوع | الكتلة | الغرض |
|---|---|---|
| 0 | DATA | نقل رسالة مستخدم (TSN، Stream ID، SSN، الحمولة) |
| 1 / 2 | INIT / INIT ACK | بدء الاقتران (association)؛ يحمل INIT ACK الـ state cookie |
| 3 | SACK | إقرار انتقائي لمقاطع DATA المستلمة |
| 4 / 5 | HEARTBEAT / HEARTBEAT ACK | اختبار إمكانية الوصول إلى عنوان الوجهة |
| 6 | ABORT | إغلاق غير طبيعي وفوري للاقتران (association) |
| 7 / 8 | SHUTDOWN / SHUTDOWN ACK | إغلاق سلس |
| 10 / 11 | COOKIE ECHO / COOKIE ACK | أكمل المصافحة الرباعية |
الأسئلة المتكررة
ما الميزة الرئيسية لـ SCTP على TCP؟
أمران: تعدّد التدفقات، فلا تحجب رزمة مفقودة على تدفق واحد الآخرين (لا حجب رأس طابور على مستوى الوصلة)، وتعدّد الإيواء، فيمكن لنهاية استخدام عدة عناوين IP وتجاوز الفشل آليًا عند سقوط مسار. وكلاهما مهمّ جدًا لموثوقية الإشارات.
ما هو تعدّد الإيواء في SCTP؟
يتيح تعدّد الإيواء لوصلة SCTP واحدة ربط عدة عناوين IP لكل نهاية. واحد هو المسار الأساسي والباقي بدائل، تُراقَب بالنبضات. وإن فشل المسار الأساسي، يعيد SCTP الإرسال على بديل دون إسقاط الوصلة — تكرار مسار مبني في النقل.
ما هي كتلة SCTP؟
الكتلة وحدة واصفة لذاتها داخل رزمة SCTP، بنوع وأعلام وطول وقيمة. تحمل كتل DATA رسائل المستخدم؛ وتدير كتل التحكم (INIT وSACK وHEARTBEAT وSHUTDOWN وغيرها) الوصلة. ويمكن حزم عدة كتل في رزمة واحدة.
لماذا يستخدم SCTP مصافحة رباعية؟
تتيح الخطوة الإضافية للمستجيب البقاء بلا حالة حتى يستقبل كوكي حالة موقّعة (في COOKIE ECHO). ولأن لا حالة وصلة تُخصَّص حتى تُعاد الكوكي، يقاوم SCTP هجمات استنزاف الموارد من نمط إغراق SYN التي تصيب المصافحة الثلاثية في TCP.
ما هو وسم التحقق في SCTP؟
قيمة بطول 32 بت في الترويسة المشتركة، تُتبادَل أثناء إعداد الوصلة، ويجب أن يضمّنها الطرفان في كل رزمة. تتحقّق من أن الرزمة تخصّ الوصلة الحالية، حاميةً من الرزم القديمة وهجمات الحقن الأعمى.
مواصفات المصدر
تستند هذه الصفحة إلى المعايير المنشورة. يفتح في علامة تبويب جديدة.