بروتوكول النافذة المنزلقة

بروتوكول النافذة المنزلقة هو إحدى خصائص بروتوكولات نقل البيانات القائمة على الحزم . تُستخدم هذه البروتوكولات عندما يكون تسليم الحزم بالترتيب الصحيح أمراً ضرورياً، كما هو الحال في طبقة ربط البيانات ( الطبقة الثانية من نموذج OSI ) وكذلك في بروتوكول التحكم بالنقل (أي، تجزئة TCP ). كما تُستخدم أيضاً لتحسين الكفاءة عندما يكون زمن الاستجابة في القناة مرتفعاً .

تعتمد الأنظمة القائمة على الحزم على فكرة إرسال مجموعة من البيانات، تُسمى الحزمة ، بالإضافة إلى بيانات إضافية تُمكّن المُستقبِل من التأكد من استلامها بشكل صحيح، مثل مجموع التحقق . يُشبه هذا النموذج نافذةً تنزلق جانبيًا للسماح بدخول حزم جديدة ورفض الحزم التي تم تأكيد استلامها مسبقًا. عندما يتحقق المُستقبِل من البيانات، يُرسل إشارة تأكيد (ACK) إلى المُرسِل للإشارة إلى إمكانية إرسال الحزمة التالية. في بروتوكول طلب إعادة الإرسال التلقائي البسيط (ARQ)، يتوقف المُرسِل بعد كل حزمة وينتظر تأكيد المُستقبِل. يضمن هذا وصول الحزم بالترتيب الصحيح، حيث لا يُمكن إرسال سوى حزمة واحدة في كل مرة.

قد يُمثل الوقت اللازم لاستلام إشارة التأكيد (ACK) فترةً زمنيةً كبيرةً مقارنةً بالوقت اللازم لإرسال الحزمة. في هذه الحالة، قد يكون معدل النقل الإجمالي أقل بكثير من المُمكن نظريًا. ولمعالجة هذه المشكلة، تسمح بروتوكولات النافذة المنزلقة بإرسال عدد مُحدد من الحزم، يُسمى النافذة ، دون الحاجة إلى انتظار إشارة التأكيد. تتلقى كل حزمة رقم تسلسلي، وتُرسل إشارات التأكيد هذا الرقم. يتتبع البروتوكول الحزم التي تم تأكيدها، وعند استلامها، يُرسل المزيد من الحزم. وبهذه الطريقة، تنزلق النافذة على طول مسار الحزم المُكوّنة لعملية النقل.

تُعدّ النوافذ المنزلقة جزءًا أساسيًا من العديد من البروتوكولات. فهي عنصرٌ أساسي في بروتوكول TCP، الذي يسمح بطبيعته بوصول الحزم بترتيبٍ غير مُحدد، كما أنها موجودة في العديد من بروتوكولات نقل الملفات مثل UUCP-g و ZMODEM كوسيلة لتحسين الكفاءة مقارنةً بالبروتوكولات التي لا تعتمد على النوافذ مثل XMODEM . انظر أيضًا SEAlink .

المفهوم الأساسي

من الناحية النظرية، يُخصص لكل جزء من الإرسال (حزم البيانات في معظم طبقات ربط البيانات، والبايتات في بروتوكول TCP) رقم تسلسلي فريد، ويستخدم المُستقبِل هذه الأرقام لوضع الحزم المُستلمة بالترتيب الصحيح، مع تجاهل الحزم المُكررة وتحديد الحزم المفقودة. تكمن المشكلة في عدم وجود حد أقصى لحجم الرقم التسلسلي المطلوب.

من خلال وضع حدود لعدد الحزم التي يمكن إرسالها أو استقبالها في أي وقت، يسمح بروتوكول النافذة المنزلقة بتبادل عدد غير محدود من الحزم باستخدام أرقام تسلسلية ثابتة الحجم. يُمثل مصطلح " النافذة" في جانب المُرسِل الحد المنطقي لإجمالي عدد الحزم التي لم يتم تأكيد استلامها من قِبل المُستقبِل. يُبلغ المُستقبِل المُرسِل في كل حزمة تأكيد بحجم مخزن المُستقبِل الأقصى الحالي (حدود النافذة). يستخدم رأس بروتوكول TCP حقلًا من 16 بت لإبلاغ المُرسِل بحجم نافذة المُستقبِل. وبالتالي، فإن أكبر نافذة يُمكن استخدامها هي 2^ 16 = 64 كيلوبايت.

في وضع البدء البطيء، يبدأ المرسل بعدد قليل من الحزم، ثم يزيد عدد الحزم في كل عملية إرسال بعد استلام حزم تأكيد الاستلام من المُستقبِل. لكل حزمة تأكيد استلام، تتحرك نافذة الإرسال بمقدار حزمة واحدة (منطقيًا) لإرسال حزمة جديدة. عند الوصول إلى عتبة نافذة الإرسال، يرسل المرسل حزمة واحدة لكل حزمة تأكيد استلام.

إذا كان الحد الأقصى لعدد الحزم في نافذة الإرسال 10 حزم، ففي وضع البدء البطيء، قد يبدأ المرسل بإرسال حزمة واحدة، ثم حزمتين (بعد استلام حزمة تأكيد استلام قبل إرسال أي حزمتين)، ثم ثلاث حزم، وهكذا حتى يصل إلى 10 حزم. ولكن بعد الوصول إلى 10 حزم، يقتصر الإرسال على حزمة واحدة لكل حزمة تأكيد استلام مستلمة. في المحاكاة، يبدو الأمر كما لو أن نافذة الإرسال تتحرك بمقدار حزمة واحدة لكل حزمة تأكيد استلام مستلمة. أما في جانب المُستقبِل، فتتحرك نافذة الإرسال بمقدار حزمة واحدة لكل حزمة مستلمة.

تضمن طريقة النافذة المنزلقة تجنب ازدحام الشبكة. سيستمر مستوى التطبيق في توفير البيانات للإرسال إلى بروتوكول TCP دون القلق بشأن مشكلات ازدحام الشبكة، حيث يستخدم بروتوكول TCP على جانبي المرسل والمستقبل نوافذ منزلقة لتخزين الحزم. قد يتغير حجم النافذة ديناميكيًا تبعًا لحركة مرور الشبكة.

لتحقيق أعلى معدل نقل بيانات ممكن ، من المهم ألا يُجبر بروتوكول النافذة المنزلقة جهاز الإرسال على التوقف عن الإرسال قبل زمن تأخير ذهاب وإياب كامل (RTT). يجب أن يكون الحد الأقصى لكمية البيانات التي يمكن إرسالها قبل التوقف لانتظار تأكيد الاستلام أكبر من حاصل ضرب عرض النطاق الترددي في زمن التأخير لوصلة الاتصال. إذا لم يكن كذلك، سيحد البروتوكول من عرض النطاق الترددي الفعال للوصلة.

تحفيز

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

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

تشغيل البروتوكول

يمتلك كل من المرسل والمستقبل رقم تسلسل حالي n<sub> t</sub> و n<sub> r</sub> على التوالي. كما يمتلك كل منهما حجم نافذة w<sub> t</sub> و w<sub> r</sub> . قد تختلف أحجام النوافذ، ولكنها ثابتة في التطبيقات الأبسط. يجب أن يكون حجم النافذة أكبر من الصفر لإحراز أي تقدم.

كما هو معتاد، يُمثل n t الحزمة التالية المراد إرسالها، أي رقم تسلسل أول حزمة لم تُرسل بعد. وبالمثل، يُمثل n r أول حزمة لم تُستلم بعد. كلا الرقمين يتزايدان باستمرار مع مرور الوقت؛ فهما دائمًا في ازدياد.

قد يحتفظ جهاز الاستقبال أيضًا بسجل لأكبر رقم تسلسلي تم استلامه حتى الآن؛ المتغير n<sub> s</sub> هو رقم يزيد بمقدار واحد عن أكبر رقم تسلسلي في أي حزمة مقبولة. يمكن أن يتجاوز هذا الرقم n<sub> s</sub> بما يصل إلى w <sub> r </sub> - 1، لذا بالنسبة لأجهزة الاستقبال البسيطة التي تقبل الحزم بالترتيب فقط ( w<sub> r</sub> = 1)، فإن هذا الرقم هو نفسه n <sub> r</sub> . لاحظ الفرق: جميع الحزم قبل n <sub>r</sub> قد تم استلامها، ولم يتم استلام أي حزم بعد n<sub> s</sub> ، وبين n <sub>r</sub> و n<sub> s </sub>، تم استلام بعض الحزم. وبالتالي، n <sub>r</sub>n<sub> s</sub>n<sub> t</sub> .

عندما يستقبل المُستقبِل حزمة بيانات، يُحدِّث متغيراته وفقًا لذلك، ويرسل إشعارًا بالاستلام مع قيمة n r الجديدة . ويحتفظ المُرسِل بسجل لأكبر إشعار استلام تلقاه، وهو n a . ويعلم المُرسِل أنه قد استلم جميع حزم البيانات حتى n a ، باستثناء n a ، ولكنه غير متأكد من حزم البيانات التي تقع بين n a و nt ؛ أي أن n an rnt .

تخضع أرقام التسلسل دائمًا للقاعدة التالية: n an rn sn tn a + w t . أي:

  • n an r : لا يمكن أن تتجاوز الإشعارات التي يتلقاها المرسل تلك التي يرسلها المتلقي.
  • n rn s : لا يمكن أن يمتد نطاق الحزم المستلمة بالكامل إلى نطاق الحزم التي لم يتم استلامها مطلقًا.
  • n sn t : لا يمكن أن يتجاوز عدد الحزم المستلمة عدد الحزم المرسلة.
  • n tn a + w t : يتم تحديد أكبر عدد من الحزم المرسلة بواسطة أكبر إقرار تم استلامه بالإضافة إلى حجم نافذة الإرسال.

تشغيل جهاز الإرسال

عندما يكون لدى جهاز الإرسال بيانات لإرسالها، فإنه قد يرسل ما يصل إلى w t حزمة قبل آخر إشعار استلام n a . أي أنه قد يرسل الحزمة رقم n t طالما أن n t < n a + w t . يتم زيادة n t ليعكس عملية الإرسال.

في حال عدم وجود خطأ في الاتصال، يتلقى المرسل إشعارًا باستلام جميع الحزم التي أرسلها، مما يجعل قيمة n a مساوية لـ n t . إذا لم يحدث ذلك بعد فترة تأخير معقولة، يجب على المرسل إعادة إرسال الحزمة المرقمة n a .

قد تكون تقنيات تحديد "التأخير المعقول" معقدة للغاية، لكنها لا تؤثر إلا على الكفاءة؛ فالموثوقية الأساسية لبروتوكول النافذة المنزلقة لا تعتمد على التفاصيل. وبالمثل، قد يختار المرسل إعادة إرسال حزم إضافية بين n a و n t ، لكن هذا القرار لا يؤثر على صحة البروتوكول.

تشغيل جهاز الاستقبال

في كل مرة يتم فيها استلام حزمة بيانات مرقمة x ، يتحقق جهاز الاستقبال مما إذا كانت تقع ضمن نطاق الاستقبال، n <sub>r</sub>x < n <sub> r</sub> + w<sub> r</sub> . (أبسط أجهزة الاستقبال يكون فيها w <sub>r</sub> = 1، ولا يقبل إلا احتمالًا واحدًا). ​​إذا كانت الحزمة تقع ضمن النطاق، يقبلها جهاز الاستقبال. إذا كان رقمها n<sub> r</sub> ، يتم زيادة رقم تسلسل الاستقبال بمقدار 1، وربما أكثر إذا تم استلام حزم بيانات متتالية أخرى وتخزينها مسبقًا. إذا كان x > n<sub> r</sub> ، يتم تخزين الحزمة حتى يتم استلام جميع الحزم السابقة. [ 1 ] إذا كان xn<sub> s</sub> ، يتم تحديث الأخير إلى n <sub>s</sub> = x + 1.

إذا لم يكن رقم الحزمة ضمن نافذة الاستقبال، فإن جهاز الاستقبال يتجاهلها ولا يقوم بتعديل n r أو n s .

سواء تم قبول الحزمة أم لا، يقوم جهاز الاستقبال بإرسال إشعار استلام يحتوي على رقم الحزمة الحالي n r . (قد يتضمن إشعار الاستلام أيضًا معلومات حول الحزم الإضافية التي تم استلامها بين n r و n s ، ولكن هذا يساعد فقط على تحسين الكفاءة.)

لاحظ أنه لا جدوى من أن تكون نافذة الاستقبال w r أكبر من نافذة الإرسال w t ، لأنه لا داعي للقلق بشأن استقبال حزمة لن يتم إرسالها أبدًا؛ النطاق المفيد هو 1 ≤ w rw t .

نطاق أرقام التسلسل المطلوب

أعداد متسلسلة بتردد 4، حيث w r = 1. في البداية، n t = n r = 0

حتى الآن، تم وصف البروتوكول كما لو أن أرقام التسلسل ذات حجم غير محدود، وتتزايد باستمرار. ومع ذلك، فبدلاً من إرسال رقم التسلسل الكامل x في الرسائل، من الممكن إرسال x  mod N فقط ، حيث N قيمة محدودة . ( عادةً ما تكون N قوة للعدد 2 ). 

على سبيل المثال، لن يستقبل المرسل سوى إشعارات الاستلام ضمن النطاق من n <sub>a</sub> إلى n<sub> t</sub> ، شاملةً الحدين. وبما أن هذا يضمن أن n <sub>t</sub> - n<sub> a</sub> w <sub> t</sub> ، فإن عدد أرقام التسلسل الممكنة التي يمكن أن تصل في أي وقت محدد هو على الأكثر w <sub> t </sub> + 1. وبالتالي، يستطيع المرسل فك تشفير رقم تسلسل إشعار الاستلام بشكل لا لبس فيه طالما أن N > w<sub> t</sub> .   

يفرض المُستقبِل قيدًا أقوى. يعتمد عمل البروتوكول على قدرة المُستقبِل على التمييز بدقة بين الحزم الجديدة (التي يجب قبولها ومعالجتها) وإعادة إرسال الحزم القديمة (التي يجب تجاهلها، وإعادة إرسال آخر إشعار استلام). يمكن تحقيق ذلك بمعرفة حجم نافذة المُرسِل لاستنتاج قيمة n <sub>a</sub> الخاصة به. بعد استلام حزمة مرقمة x ، يعلم المُستقبِل أن x < n<sub> t</sub>n <sub> a </sub> + w<sub> t</sub> ، وبالتالي n <sub>a </sub> > xw<sub> t</sub> . وعليه، لن تُعاد إرسال الحزم المرقمة xw<sub> t</sub> أو أقل.      

أصغر رقم تسلسلي سنحصل عليه في المستقبل هو n sw t

يعلم المُستقبِل أيضًا أن قيمة n a للمُرسِل لا يمكن أن تكون أكبر من أكبر قيمة تأكيد تم إرسالها على الإطلاق، وهي n r . لذلك لن نرى أبدًا رقم تسلسل n a + w t n r + w t أو أكبر منه. 

وبالتالي، يوجد 2wt رقم تسلسلي مختلف يمكن أن يستقبله جهاز الاستقبال في أي وقت. قد يبدو إذن أنه يجب أن يكون N  2wt . مع ذلك، فإن الحد الفعلي أقل من ذلك .

تكمن الفكرة الإضافية في أن المُستقبِل لا يحتاج إلى التمييز بين أرقام التسلسل المنخفضة جدًا (أقل من n<sub> r</sub> ) أو المرتفعة جدًا (أكبر من أو تساوي n <sub>s</sub> + w<sub> r</sub> ). في كلتا الحالتين، يتجاهل المُستقبِل الحزمة باستثناء إعادة إرسال إشعار الاستلام. وبالتالي، يكفي أن يكون N w<sub> t</sub> + w<sub> r </sub>. ولأن w <sub> r</sub> < w<sub> t</sub> شائع (انظر على سبيل المثال Go-Back-N أدناه)، فإن هذا يسمح بقيمة w <sub> t </sub> أكبر ضمن قيمة N ثابتة . 

أمثلة

أبسط أنواع النوافذ المنزلقة: التوقف والانتظار

على الرغم من التمييز الشائع بين بروتوكول ARQ ذي النافذة المنزلقة وبروتوكول ARQ ذي النافذة المنزلقة، إلا أن بروتوكول ARQ ذي التوقف والانتظار هو في الواقع أبسط تطبيق ممكن له. نافذة الإرسال هي حزمة واحدة، ونافذة الاستقبال هي حزمة واحدة أيضًا. وبالتالي، يلزم وجود N = 2 من أرقام التسلسل الممكنة (والتي يمكن تمثيلها بسهولة ببت واحد).

مثال على الغموض

يرسل المرسل بالتناوب حزم بيانات تحمل علامات فردية وزوجية . وتُشير إشعارات الاستلام أيضًا إلى أنها فردية وزوجية . لنفترض أن المرسل، بعد إرساله حزمة بيانات فردية، لم ينتظر إشعار استلام فردي، بل أرسل مباشرةً حزمة البيانات الزوجية التالية. قد يتلقى حينها إشعار استلام يقول "نتوقع حزمة بيانات فردية تاليًا". سيضع هذا المرسل في حيرة: هل استلم المُستقبِل كلا الحزمتين، أم لم يستلم أيًا منهما؟

العودة إلى الشمال

بروتوكول Go-Back-N ARQ هو بروتوكول نافذة منزلقة حيث w<sub> t</sub> > 1، ولكن w <sub>r </sub> ثابت يساوي 1. يرفض المُستقبِل قبول أي حزمة بيانات باستثناء الحزمة التالية في التسلسل. إذا فُقدت حزمة بيانات أثناء النقل، يتم تجاهل الحزم اللاحقة حتى إعادة إرسال الحزمة المفقودة، مع حد أدنى للفقد يعادل زمن رحلة ذهاب وإياب واحدة . لهذا السبب، يُعد هذا البروتوكول غير فعال على الروابط التي تعاني من فقدان متكرر للحزم .

مثال على الغموض

لنفترض أننا نستخدم رقم تسلسلي مكون من 3 بتات، كما هو شائع في بروتوكول HDLC . هذا يعطينا N = 2 ^ 3 = 8. بما أن w_r = 1، يجب أن نحدد w_t 7. وذلك لأنه بعد إرسال 7 حزم، توجد 8 نتائج محتملة: أي عدد من الحزم التي تم استلامها بنجاح يتراوح بين 0 و7. هذه 8 احتمالات، ويحتاج المرسل إلى معلومات كافية في إشعار الاستلام لتمييزها جميعًا.

إذا أرسل المرسل 8 حزم بيانات دون انتظار تأكيد الاستلام، فقد يجد نفسه في مأزق مشابه لحالة التوقف والانتظار: هل يعني تأكيد الاستلام أنه تم استلام جميع الحزم الثمانية بنجاح، أم لم يتم استلام أي منها؟

التكرار الانتقائي

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

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

يكفي أن يكون حجم النافذة w<sub> r</sub> أكبر من عدد الحزم المفقودة المتتالية التي يمكن تحملها. لذا، فإن القيم الصغيرة شائعة؛ فقيمة w<sub> r</sub> = 2 شائعة.

مثال على الغموض

يستخدم بروتوكول HDLC، ذو الشعبية الواسعة ، رقم تسلسلي مكون من 3 بتات، ويتضمن خيارًا للتكرار الانتقائي. مع ذلك، في حال استخدام التكرار الانتقائي، يجب الالتزام بالشرط التالي: w t + w r  ≤ 8؛ فإذا زادت قيمة w r إلى 2، يجب خفض قيمة w t إلى 6. 

لنفترض أن w<sub> r</sub> = 2، ولكن يتم استخدام جهاز إرسال غير معدل مع w<sub> t</sub> = 7، كما هو شائع في نسخة HDLC ذات خاصية go-back-N. ولنفترض كذلك أن جهاز الاستقبال يبدأ بـ n <sub>r</sub> = n<sub> s</sub> = 0.

لنفترض الآن أن جهاز الاستقبال يرى سلسلة الحزم التالية (جميعها بتردد 8):

٠ ١ ٢ ٣ ٤ ٥ ٦ (توقف مؤقت) ٠

بما أن w r = 2، سيستقبل جهاز الاستقبال الحزمة الأخيرة 0 ويخزنها (ظنًا منه أنها الحزمة 8 في السلسلة)، بينما يطلب إعادة إرسال الحزمة 7. مع ذلك، من المحتمل أيضًا أن يكون جهاز الإرسال قد فشل في تلقي أي إشعارات استلام وأعاد إرسال الحزمة 0. في هذه الحالة الأخيرة، سيستقبل جهاز الاستقبال الحزمة الخاطئة باعتبارها الحزمة 8.

يكمن الحل في أن يقيّد المرسل قيمة w t بحيث تكون ≤ 6. وبهذا التقييد، يعلم المستقبل أنه في حال فقدان جميع الإشعارات، سيتوقف المرسل بعد الحزمة رقم 5. وعندما يستلم الحزمة رقم 6، يستنتج المستقبل أن المرسل قد استلم إشعار استلام الحزمة رقم 0 (حيث n a ≥ 1)، وبالتالي فإن الحزمة التالية المرقمة 0 هي الحزمة رقم 8.

الإضافات

هناك العديد من الطرق التي يمكن من خلالها توسيع نطاق البروتوكول:

  • تفترض الأمثلة السابقة عدم إعادة ترتيب الحزم أثناء الإرسال؛ قد تُفقد أثناء النقل ( يُعادل اكتشاف الأخطاء التلفَ الفقدَ)، لكنها لن تظهر أبدًا خارج الترتيب. يمكن توسيع البروتوكول لدعم إعادة ترتيب الحزم، طالما أمكن تحديد المسافة؛ يجب توسيع معامل رقم التسلسل N بمقدار أقصى مسافة للخطأ في الترتيب.
  • من الممكن عدم تأكيد استلام كل حزمة بيانات، طالما يتم إرسال تأكيد الاستلام في النهاية عند وجود فترة توقف. على سبيل المثال، عادةً ما يؤكد بروتوكول TCP استلام كل حزمة ثانية.
    • من الشائع إبلاغ المرسل فورًا في حال اكتشاف فجوة في تسلسل الحزم. ويحتوي بروتوكول HDLC على حزمة رفض خاصة لهذا الغرض.
  • يمكن تغيير أحجام نوافذ الإرسال والاستقبال أثناء الاتصال، طالما بقي مجموعها ضمن الحد الأقصى N. عادةً، تُخصص لكل منهما قيم قصوى تحترم هذا الحد، ولكن قد تكون القيمة الفعلية في أي وقت أقل من القيمة القصوى. على وجه الخصوص:
    • من الشائع تقليل حجم نافذة الإرسال لإبطاء الإرسال بما يتناسب مع سرعة الرابط، وتجنب التشبع أو الازدحام .
    • أحد التبسيطات الشائعة لبروتوكول التكرار الانتقائي هو ما يُعرف ببروتوكول SREJ-REJ ARQ. يعمل هذا البروتوكول بقيمة w <sub>r</sub> = 2، حيث يقوم بتخزين الحزم مؤقتًا بعد انقطاع الاتصال، ولكنه يسمح بفقدان حزمة واحدة فقط؛ أثناء انتظار تلك الحزمة، تكون قيمة w<sub> r</sub> = 1، وإذا فُقدت حزمة ثانية، فلن يتم تخزين أي حزم أخرى مؤقتًا. يوفر هذا معظم مزايا الأداء لبروتوكول التكرار الانتقائي الكامل مع تنفيذ أبسط.

انظر أيضاً

مراجع

  • كومر، دوغلاس إي. "الربط الشبكي باستخدام بروتوكول TCP/IP، المجلد 1: المبادئ والبروتوكولات والبنية"، برنتيس هول، 1995. ISBN 0-13-216987-8