سؤال

أنا أقرأ عن تطبيقات UDP الموثوقة (أي إرسال حزم ACK وإعادة بيع الحزم غير المكتسبة مرة أخرى).

من بين النموذجين الرئيسيين ، يبدو أنني أجد أن الشبكة مرتفعة:

  1. يرسل العميل ACK لكل حزمة مستلمة مع تسلسل تلك الحزمة. يفترض الخادم أن الحزمة غير مفيدة إلا إذا استقبلت ACK.

  2. يرسل العميل حزمة ACK مع تسلسل الحزم التي تعتقد أنها مفقودة. يفترض Server أن الحزمة يتم تسليمها ما لم يتلقت ACK من العميل قائلاً إنها تفتقد تسلسلًا ، ثم تُعيد إعادة الحزم (المفقودة) المطلوبة مرة أخرى.

باختصار ، في 1. يرسل العملاء تسلسل الحزم المستلمة ، بينما في 2. يرسل العميل تسلسل الحزم المفقودة.

فقط أتساءل ما هي إيجابيات/سلبيات كل طريقة ، وأي طريقة أكثر سائدة (أفترض 1 ، ولكن يبدو أن 2 طريقة ذكية للغاية لأن معظم الحزم تصل وعادة ما تضيع عدد قليل منها).

تحرير: مثال قصير على كلتا الطريقتين:

Method 1: Server sends: 1,2,3,4,5 
Client received: 1,3,5,4 
Client sends back: ACK 1, ACK 3, ACK 5, ACK 4  
Server resends: 2.. maybe more if ACK packets were lost


Method 2:
Server sends 1,2,3,4,5,6,7,8
Client receives: 1,3,2,5,7
Client Sends :ACK (lowest continuous 3,highest received 7,  seem to be missing 4,6)
Server resends: 4,6,8
هل كانت مفيدة؟

المحلول

#2 يُعرف أيضًا باسم ACK السلبي ، ويعرف أيضًا باسم NAK ، وهو وجهة نظر متفائلة للنقل. هذا يعني أن المقاييس أفضل عندما تعمل النقل بشكل صحيح.

#1 هي وجهة نظر متشائمة ويفترض أن النقل سيفشل في كثير من الأحيان.

يستخدم TCP ACKs لأن هناك تبعية أساسية على التحكم في الازدحام لإسقاط الحزم لإجراء تشكيل حركة المرور لإنشاء شبكة عادلة. عادةً ما تستخدم قنوات UDP الموثوقة NAKS لأنك تستخدم دفقًا متوسطًا للسرعة العالية أو المنخفضة الموثوقة مع متطلبات انخفاض الكمون على خطوة القفل النموذجية لتنفيذ ACK الأساسي.

لاحظ أنه إذا صعدت خطوة أعلى ونظرت في إدارة الإدارة الاشتراك فوق قناة UDP موثوقة ، فلا يوجد فائز واضح لاستخدام ACK أو NAK. أثبت عالم بيانات السوق استخدامه لكلا التقنيين بسرعة عالية على الشبكات عالية السعة. تتمتع ACKS بالفائدة ، مع الاشتراكات ، بأنك لا تحتاج إلى إعادة تزامن معقد بعد خطأ في الشبكة ، ومع ذلك سترى ذروة ثابتة من استخدام الشبكة ووحدة المعالجة المركزية عندما يصدر كل مضيف إعادة التوصية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top