# SMPP enquire_link والنوافذ والخنق

> enquire_link (0x00000015) نبضة خفيفة لإبقاء الاتصال نشطًا (keepalive) تؤكّد أن جلسة SMPP المربوطة ما زالت سليمة عبر TCP. ويحكم معدلَ النقل (throughput) حدّان: النافذة (كم وحدة PDU يمكن أن تبقى غير مُقرّة في آن واحد) وسقف TPS لدى المزوّد. ويؤدي تجاوز المعدّل إلى إعادة ESME_RTHROTTLED (0x00000058)؛ والحلّ هو الإبطاء التدريجي (backoff).

- الرابط الأساسي: https://www.broadnet.me/ar/reference/smpp-enquire-link-throttling
- اللغة: ar
- آخر تحديث: 2026-07-18
- الناشر: BroadNet (https://www.broadnet.me)

كيف يُبقي SMPP الجلسة حيّة بـ enquire_link، وكيف تحدّ النافذة من وحدات PDU المعلَّقة غير المُقرّة، وكيف يحكم ESME_RTHROTTLED وحدّ TPS لكل ربط إنتاجيتك الحقيقية.

## نبضة enquire_link لإبقاء الاتصال نشطًا

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

*تبادل keepalive*

```text
ESME → SMSC  enquire_link      seq=1200
SMSC → ESME  enquire_link_resp seq=1200  status=ESME_ROK
  (no response within timeout ⇒ treat session as dead, reconnect)
```

## النافذة: وحدات PDU المعلَّقة غير المُقرّة

SMPP غير متزامن: يمكنك إرسال عدة وحدات submit_sm قبل وصول استجابة submit_sm_resp الخاصة بها. ويحدّ حجم النافذة كم منها يمكن أن تكون معلَّقة (غير مُقرّة) في آن واحد. وحين تمتلئ النافذة يجب أن توقف الإرسال حتى تُحرّر استجابةٌ مكانًا. والإطلاق بما يتجاوز النافذة سبب رئيسي للخنق وإسقاط الوحدات. ويُتّفق على حجم النافذة مع المزوّد — لا توجد قيمة افتراضية واحدة للبروتوكول.

## الخنق وTPS

بمعزل عن النافذة، يفرض المزوّد معدّل رسائل أقصى — معاملات في الثانية (TPS) — لكل ربط أو لكل حساب. ويؤدي تجاوزه إلى إعادة ESME_RTHROTTLED (0x00000058). والاستجابة الصحيحة هي الإبطاء: أوقِف، وأبطئ تدريجيًا (backoff) مع تشويش زمني، واستأنف دون السقف. لا تعِد أبدًا إرسال وحدة مخنوقة فورًا ولا تفتح عمليات ربط إضافية للالتفاف على الحدّ — كلاهما يخاطر بتعليق الحساب. وفي v5.0 يمكن لـ SMSC إضافيًا الإعلان عن الازدحام عبر معامل congestion_state كي يبطئ ESME استباقيًا.

*الحدود الثلاثة التي تحدد معدل النقل*

| الحد | يتحكم في | إشارة التجاوز |
|---|---|---|
| حجم النافذة | وحدات PDU غير مؤكدة قيد النقل | الضغط العكسي / وحدات PDU مُسقَطة |
| الحد الأقصى لعدد الرسائل في الثانية (TPS) | عدد الرسائل في الثانية | ESME_RTHROTTLED (0x58) |
| عدد جلسات bind | جلسات متوازية | تم رفض الربط / إجراء الحساب |

## الضبط لمعدل نقل مستدام

معدل النقل الفعلي تقريبًا هي حجم النافذة مقسومًا على زمن الذهاب والإياب، مقيَّدًا بسقف TPS. تساعد النافذة الأكبر على الروابط عالية زمن الاستجابة؛ ويساعد المزيد من عمليات الربط فقط إن زوّدها المزوّد. راقِب إشغال النافذة وزمن الإرسال/الاستجابة ومعدّل أخطاء الخنق، وعامِل ارتفاع معدّل ESME_RTHROTTLED كإشارة لخفض معدّل الإرسال لا لدفعه أكثر.

## الأسئلة الشائعة

### كم مرة ينبغي أن أرسل enquire_link؟

كل 30–60 ثانية شائعًا على مؤقّت خمول. أرسلها حين تهدأ الجلسة، وعامِل غياب enquire_link_resp ضمن مهلتك كجلسة ميتة يجب إعادة الاتصال بها.

### ما هو حجم نافذة SMPP؟

النافذة هي أقصى عدد لوحدات PDU التي يمكن أن تكون معلَّقة (مُرسَلة لكن لم تُقرّ بعد) في آن واحد. وتُتفاوَض مع مزوّدك لا يحدّدها البروتوكول؛ أوقِف الإرسال حين تمتلئ النافذة.

### كيف أعالج ESME_RTHROTTLED؟

اخفض معدّل إرسالك. أوقِف، وأبطئ تدريجيًا (backoff) مع تشويش زمني، واستأنف دون سقف TPS لدى المزوّد. لا تعِد المحاولة فورًا ولا تفتح عمليات ربط إضافية للالتفاف على الحدّ — كلاهما قد يزيد الخنق أو يعلّق الحساب.

### هل تزيد النافذة الأكبر من TPS لديّ؟

إلى حدّ ما. معدل النقل تقريبًا حجم النافذة مقسومًا على زمن الذهاب والإياب، لكنها تبقى مقيَّدة بسقف TPS لدى المزوّد. وتساعد النافذة الأكبر أساسًا على إخفاء زمن الاستجابة على الروابط عالية RTT.

### ما هو congestion_state في SMPP v5.0؟

يضيف v5.0 معامل congestion_state يتيح لـ SMSC الإعلان عن مقدار تحميله (0–100). ويقرؤه ESME المتعاون فيبطئ استباقيًا قبل بلوغ الخنق الصارم، ما يُنعّم معدل النقل تحت الحمل.

## المصادر

- [SMPP v3.4 specification — §4.11 enquire_link](https://smpp.org/SMPP_v3_4_Issue1_2.pdf)
- [SMPP v5.0 specification — congestion state](https://smpp.org/SMPP_v5.pdf)

## ذو صلة

- [رموز أخطاء SMPP command_status](https://www.broadnet.me/ar/reference/smpp-command-status-errors)
- [عمليات الربط في SMPP](https://www.broadnet.me/ar/reference/smpp-bind-operations)
- [أفضل ممارسات تكامل SMPP](https://www.broadnet.me/ar/reference/smpp-integration-best-practices)
- [بحث رموز أخطاء SMPP (أداة مجانية)](https://www.broadnet.me/ar/tools/smpp-error-codes)
- [قائمة تدقيق تكامل SMPP (دليل)](https://www.broadnet.me/ar/guides/smpp-integration-checklist)
