# أساسيات SMPP

- الرابط الأساسي: https://www.broadnet.me/ar/academy/smpp-fundamentals
- اللغة: ar
- آخر تحديث: 2026-07-18
- الناشر: BroadNet (https://www.broadnet.me)
- نسخة Markdown من الصفحة، مولّدة من الصفحة المعروضة.

البروتوكولات متوسط

البروتوكول الثنائي وراء رسائل SMS عالية الحجم: أنواع الربط (binds)، وsubmit_sm، وPDUs، ونافذة الإرسال، وإيصالات التسليم، وإشارات الإبقاء حيًا.

5 الدروس 3 دقائق قراءة قائم على المعايير · بوتيرة ذاتية

ما ستتعلمه

- ما هو SMPP وموقعه مقارنةً بواجهة REST API
- أنواع الربط: المُرسِل، والمستقبِل، والمرسِل-المستقبِل
- بنية PDU وحقول submit_sm الأساسية
- كيف تحكم نافذة الإرسال والتقييد (throttling) معدل النقل
- كيف تصل إيصالات التسليم وكيف تبقي الجلسة حيّة

مخطط الدورة

1. 01ما هو SMPP
2. 02أنواع الربط والجلسات
3. 03PDUs وsubmit_sm
4. 04النافذة والخنق (throttling) ورسائل keepalive
5. 05إيصالات التسليم عبر SMPP
6. ★أهم النقاط

[جميع الدورات](https://www.broadnet.me/ar/academy)

مخطط جلسة SMPP بين منصتكم وBroadNet

منصتكم (ESME)

BroadNet SMSC

اتصال TCP/TLS مستمر واحد

1. `bind_transceiver` فتح الجلسة والمصادقة عليها
2. `bind_transceiver_resp` تم قبول الجلسة
3. `submit_sm` إرسال رسالة
4. `submit_sm_resp` تم القبول، وإعادة معرف الرسالة
5. `deliver_sm` إيصال استلام أو رسالة واردة
6. `deliver_sm_resp` تم التأكيد
7. `enquire_link` إشارة Keepalive أثناء الخمول

الدرس 01

## ما هو SMPP

SMPP — بروتوكول الرسائل القصيرة النظير إلى النظير (Short Message Peer-to-Peer) — هو البروتوكول الثنائي القائم على الجلسات الذي يعرضه المجمِّعون والمشغّلون لمراسلة A2P عالية الإنتاجية. فبينما تكون واجهة REST مريحة وعديمة الحالة (stateless)، يقوم SMPP على اتصال TCP دائم مبنيّ من أجل الحجم وزمن الاستجابة المنخفض.

يفتح ESME (كيان الرسائل القصيرة الخارجي — طرفك) جلسة إلى SMSC ويتبادل PDUs (وحدات بيانات البروتوكول). البروتوكول مضغوط وفعّال، وهذا سبب بقائه العمود الفقري للمرسلين الكبار حتى مع تغطية REST للاستخدام اليومي.

الإصدار الأكثر انتشارًا هو SMPP v3.4؛ ويضيف الإصدار v5.0 إشارات حالة الازدحام (congestion-state) ومعاملات محسَّنة لكنه متوافق مع الإصدارات السابقة. لا يجب أن تفترض أبدًا توفّر ميزة من v5.0 حتى تؤكد استجابة الربط (bind response) الإصدار المتفاوَض عليه.

الدرس 02

## أنواع الربط والجلسات

قبل إرسال أي شيء، يجب على ESME أن يقوم بالربط (bind) — التحقق من الهوية وإعلان الدور. ربط المُرسِل يرسل الرسائل فقط؛ وربط المستقبِل يستقبل الرسائل الصادرة من الجهاز (MO) وإيصالات التسليم فقط؛ أما ربط المرسِل-المستقبِل فيقوم بالأمرين معًا عبر اتصال واحد.

يُفضَّل عادةً ربط المرسِل-المستقبِل لأنه يقلّل عدد الاتصالات إلى النصف ويبسّط ربط إيصالات DLR بعمليات الإرسال. عدد الروابط المتزامنة والرسائل في الثانية (TPS) لكل ربط يحدّدهما مزوّد الخدمة ويجب الالتزام بهما.

يحمل الربط system_id وpassword وsystem_type وaddress_range. وnطاق عنوان (address_range) غير مطابق يكسر بصمت توجيه MO وDLR على روابط المستقبِل — وهذا خطأ تكامل كلاسيكي لا ينتج عنه أي أخطاء ظاهرة، بل فقط حركة مفقودة.

الدرس 03

## PDUs وsubmit_sm

كل تفاعل في SMPP هو PDU يحمل رأسية أوامر (الطول، معرّف الأمر، الحالة، رقم التسلسل) وجسمًا. العنصر الأساسي هو submit_sm، الذي يحمل رسالة صادرة واحدة.

زوجان من الحقول يحدّدان العنونة: source_addr مع TON/NPI الخاص به (نوع الرقم / مؤشّر خطة الترقيم) وdest_addr مع النوع الخاص به. معرّف المُرسِل الأبجدي الرقمي يستخدم TON 5؛ ورقم MSISDN الدولي يستخدم TON 1 وNPI 1. الخطأ في هذين الحقلين يجعل معرّف المُرسِل يظهر بشكل غير صحيح أو يؤدي إلى رفض الرسالة.

يحدّد حقل data_coding الترميز — GSM 7-bit (0)، أو 8-bit (4)، أو UCS-2 (8) ليونيكود. تُسلسَل الرسائل الطويلة إما بواسطة بايتات UDH داخل الجسم أو بواسطة معاملات SAR الاختيارية (sar_msg_ref_num، sar_total_segments، sar_segment_seqnum)؛ اختر طريقة واحدة والتزم بها، لأن المسارات تختلف في ما تقبله.

الدرس 04

## النافذة والخنق (throttling) ورسائل keepalive

يستخدم SMPP نافذة إرسال (transmit window): سقف لعدد PDUs من نوع submit_sm المُرسَلة قبل عودة استجاباتها. تجاوز النافذة، أو الـ TPS المُتاح، يُطلق ESME_RTHROTTLED (0x58). الاستجابة الصحيحة هي الإبطاء التدريجي (backoff) مع تشويش زمني عشوائي (jitter)، لا إعادة المحاولة في حلقة سريعة.

للكشف عن اتصال TCP نصف مفتوح، يرسل كل طرف enquire_link على مؤقت خمول (عادةً كل 30–60 ثانية) ويتوقع استجابة enquire_link_resp. عدم وصول الاستجابة يعني أن الجلسة ميتة ويجب إعادة ربطها مع تراجع أُسّي (exponential backoff).

يستخدم الإيقاف السلس unbind / unbind_resp. أما الانقطاعات غير المتوقعة فيجب أن تُطلق إعادة اتصال مع تراجع، مع إعادة محاولة idempotent، بحيث لا تتسبب نافذة متعطّلة في إرسال مزدوج وفوترة مزدوجة.

الدرس 05

## إيصالات التسليم عبر SMPP

تصل إيصالات التسليم كـ PDUs من نوع deliver_sm. يحمل نص الإيصال في حقل short_message البيانات id وsub وdlvrd وتاريخ الإرسال وتاريخ الإنجاز والحالة النهائية stat (DELIVRD، UNDELIV، EXPIRED، REJECTD) ورمز خطأ err.

اربط الإيصال بعملية الإرسال الأصلية باستخدام message_id الخاص بمزوّد الخدمة، وليس بنص الإيصال وحده — فقد يُعاد message_id بصيغة سداسية عشرية في submit_resp لكن بصيغة عشرية في DLR، لذا وحّد الصيغتين.

أجب دائمًا بـ deliver_sm_resp. فالإيصال غير المؤكَّد يُعاد إرساله من SMSC ويمكن أن يعطّل نافذة الاستقبال، لذا أكّد الاستلام فورًا حتى لو كانت معالجتك اللاحقة غير متزامنة.

أهم النقاط

- SMPP جلسة ثنائية دائمة لمراسلة A2P عالية الحجم؛ v3.4 هو الأساس الشائع، وv5.0 متوافق مع الإصدارات السابقة.
- اربط كمُرسِل، أو مستقبِل، أو مرسِل-مستقبِل؛ ربط المرسِل-المستقبِل يقلّل الاتصالات إلى النصف ويسهّل ربط DLR.
- TON/NPI يحدّدان عرض معرّف المُرسِل وdata_coding يحدّد الترميز — كلاهما سهل الخطأ فيهما.
- احترم النافذة وTPS، وتراجع عند ESME_RTHROTTLED، وأبقِ الجلسة حيّة بـ enquire_link.

يستمر في التقدم

### إجابات ومنتجات وأدوات ذات صلة

- [ما هو SMPP؟](https://www.broadnet.me/ar/answers/what-is-smpp)
- [SMPP 3.4 مقابل 5.0](https://www.broadnet.me/ar/answers/smpp-3-4-vs-5-0)
- [REST مقابل SMPP](https://www.broadnet.me/ar/compare/sms-api-vs-smpp)
- [بحث رموز أخطاء SMPP (أداة مجانية)](https://www.broadnet.me/ar/tools/smpp-error-codes)
- [فك ترميز DLR (أداة مجانية)](https://www.broadnet.me/ar/tools/dlr-decoder)
- [وثائق المطورين](https://www.broadnet.me/ar/developers)

مراجع

- [مواصفة SMPP v3.4](https://smpp.org/SMPP_v3_4_Issue1_2.pdf)
- [مواصفة SMPP v5.0](https://smpp.org/SMPP_v5.pdf)

الموضوع التالي في المنهج الدراسي

[متوسط · التوجيه والجودة توجيه SMS والتوجيه بأقل تكلفة كيف تجد الرسائل مسارًا إلى الشبكة الوجهة — المسارات المباشرة، والمسارات الرمادية، والتوجيه بأقل تكلفة، والتحوّل القائم على الجودة.](https://www.broadnet.me/ar/academy/sms-routing-and-least-cost-routing) [متوسط · التحقق OTP والتحقق من الأرقام كيف تعمل رموز التحقق لمرة واحدة والتحقق من الأرقام — TOTP/HOTP، وقنوات التسليم والتحوّل الاحتياطي، واصطلاحات التعبئة التلقائية، والدفاع ضد AIT.](https://www.broadnet.me/ar/academy/otp-and-number-verification)

قم بتطبيقه عملياً

## استغل ما تعلمته للتو.

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

[تحدث إلى قسم الهندسة](https://www.broadnet.me/ar/contact) [وثائق المطورين](https://www.broadnet.me/ar/developers)

لماذا نتعلم من BroadNet

- منذ 2003
- بلدان 200+
- روابط المشغّل 1,000+
