الخلاصة

  • يثبت ACK التراكمي أن جبهة البايتات المستلمة تقدمت، لكنه لا يحدد نسخة الإرسال التي وصلت عندما أُعيد إرسال أرقام التسلسل نفسها.
  • تمنع خوارزمية Karn أخذ عينة RTT من الحلقة الملتبسة، ويحمل التراجع الأسي قيمة RTO المحافظة إلى أن تظهر معاملة جديدة بلا إعادة إرسال.
  • تستطيع طوابع TCP الزمنية تمييز النسخ ضمن شروط محددة، لكنها لا تجعل كل إقرار عينة صالحة ولا تمنح النقل سلطة إثبات اكتمال التطبيق.

نهاية واحدة وبدايتان محتملتان

يرسل الطرف الأول البايتات من 30000 إلى 30999 ويبدأ المؤقت. لا يصل إقرار قبل انقضاء RTO، فيرسل الأرقام نفسها مرة أخرى. بعد قليل يصل ACK يقول إن البايت التالي المتوقع يقع بعد 30999.

قد تكون النسخة الأصلية قد تأخرت فقط. عندئذ يجعل القياس من وقت الإعادة الرحلة أقصر من حقيقتها. وقد تكون الأصلية قد ضاعت ووصلت الإعادة وحدها. عندئذ يضم القياس من الإرسال الأول زمن انتهاء المهلة ويجعل الرحلة أطول من حقيقتها.

كل الأوقات المسجلة صحيحة، لكن الزوج السببي غير معروف. لا يحمل ACK التراكمي هوية الداتاغرام الذي حرّك الحالة؛ يحمل حدوداً في تيار البايتات. زيادة دقة الساعة لا تخلق المعلومة المفقودة.

مع ذلك يبقى ACK مفيداً. يستطيع المرسل رفع SND.UNA، وإخراج البيانات المؤكدة من الطابور، ومواصلة الإرسال وفق النوافذ. الدليل نفسه صالح لاتخاذ قرار التقدم وغير صالح لتحديث تقدير التأخير. هذه ليست مفارقة، بل فصل بين سلطتين.

احتاج المؤقت المتكيف إلى بوابة للأدلة

كان RFC 793 يطلب أصلاً مهلة إعادة إرسال ديناميكية. تختلف مسارات شبكة الشبكات في التأخير، لذلك لا يصلح انتظار ثابت للجميع. اقترح النص قياس زمن الذهاب والعودة وتنعيمه ثم اشتقاق RTO منه.

لكن حلقة التكيف تعتمد على صلاحية المدخلات. الإرسال ثم رؤية ACK ثم تحديث المتوسط يبدو ترتيباً واضحاً إلى أن يحدث الإرسال مرتين. بعد الإعادة لا يعود وقت الرد وحده كافياً لتعريف الفاصل.

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

ذكر RFC 1122 أن حساب RFC 793 لم يعد كافياً، وأوجب خوارزميتي Jacobson وKarn. تدخل الأولى تباين RTT في الحساب. وتقرر الثانية هل يحق للعينة دخول الحساب أصلاً. جودة الصيغة لا تعوّض فساد أصل البيانات.

جعل Karn الجهل حالة قابلة للتنفيذ

القاعدة محددة: لا تؤخذ عينة RTT من مقطع أعيد إرساله. عندما تغطي أكثر من نسخة مساحة التسلسل نفسها لا يختار ACK العادي بينها. لا يستطيع البرنامج استرجاع الهوية باختيار الطابع الذي يعطي رقماً مريحاً.

لا يعني ذلك رفض الإقرار نفسه. تتقدم حالة الاتصال، وتتحرر البايتات، ويمكن إرسال المزيد. يتوقف استخدام واحد فقط: لا يغيّر هذا الحدث SRTT وRTTVAR كما لو كان تاريخه السببي معلوماً.

هنا تظهر قيمة الحدود. قد يثبت سجل ما القيمة الحالية من دون أن يثبت كيف نشأت. وقد يثبت إعلان مسار قابلية الوصول من دون أن يثبت التفويض. وبالمثل يثبت ACK الاستقبال التراكمي من دون أن يثبت رحلة نسخة بعينها.

يفقد المرسل قياسات حديثة خلال فترة ربما يتغير فيها المسار. إلا أن ملء الفراغ بقيمة ملوثة لا يقلل عدم اليقين؛ يخفيه داخل المتوسط وينقله إلى القرارات اللاحقة.

حفظ التراجع عدم اليقين في السلوك

أوجب RFC 1122 أيضاً التراجع الأسي لمهل RTO المتعاقبة. صاغ RFC 2988، ثم RFC 6298 الذي حل محله، علاقة SRTT وRTTVAR وRTO. عند انتهاء المؤقت يعاد أول مقطع غير مؤكد وتتضاعف المهلة.

يقلل التراجع من ضغط المرسل على مسار لا يعيد التغذية في الوقت المتوقع. ومع Karn يؤدي وظيفة أضيق: يبقي الفرضية الحذرة قائمة عندما لا يستطيع آخر ACK تجديد الساعة. لا يجوز لرد ملتبس أن يمحو فوراً أثر انتهاء المهلة.

يمكن أن تهبط RTO حين تتوافر عينة جديدة صالحة. بعد الإعادة يتطلب ذلك عادة بيانات جديدة تُرسل وتُؤكد بلا إعادة إرسال. ليس مرور الزمن هو الذي ينظف القياس؛ معاملة جديدة ذات بداية معروفة هي التي تفعل.

يسمح RFC 6298 بتنفيذ أكثر تحفظاً ولا يسمح بآخر أشد عدوانية. مهلة طويلة تكلف اتصالاً تأخيراً. أما مهلة قصيرة جداً فتضيف نسخاً إلى مورد مشترك في اللحظة التي قد يعني فيها غياب الرد ازدحاماً أو تحولاً في المسار.

خفضت وثيقة 2011 أيضاً RTO الابتدائية العامة من ثلاث ثوان إلى ثانية، مع معالجة خاصة لضياع SYN أو إقراره. يمكن للأرقام أن تتغير مع الدليل؛ لا تتغير ضرورة رفض فاصل لا تُعرف بدايته.

يصف ACK التيار ولا يكتب سيرة الحزمة

ينبع الالتباس من تجريد TCP. تخص أرقام التسلسل مواضع البايتات. قد تعيد نسخة جديدة تجميع المجال بحدود مقاطع مختلفة. يستطيع المستقبل تأخير الإقرار، وضم وصول عدة مقاطع في ACK واحد، وحذف النسخ المكررة قبل التطبيق.

يعلن الإقرار التراكمي البايت التالي المتوقع. لا يعيد معرفاً ثابتاً لكل داتاغرام. لو وجب على المستقبل حفظ دفتر سببي لكل نسخة لازدادت الحالة وتغير العقد المشترك.

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

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

ولا يثبت ACK أن العملية البعيدة قرأت البيانات أو أن الكتابة صارت دائمة أو أن معاملة اكتملت. يملك النقل حدود تسلسله؛ ويحتاج أثر التطبيق إلى إيصال من المكوّن الذي يملك ذلك الأثر.

أعاد Timestamp علامة سببية محدودة

يسمح RFC 6298 باستثناء حين تزيل خاصية TCP Timestamp غموض النسخة. يصف RFC 7323 TSval في المقاطع وTSecr في الاتجاه العائد. يربط الصدى الرد بالقيمة التي حملتها النسخة المستلمة.

عندئذ يستطيع المرسل التمييز زمنياً بين الأصلية والإعادة. لم تأت الهوية من رقم ACK؛ أتت من خيار صُمم لحمل قيمة النسخة وإعادتها داخل الاتصال.

لكن وجود الطابع لا يبيح كل طرح حسابي. يفصل RFC 7323 بين نقل الوقت وتحديث RTO. ينبغي للعينة المستخدمة أن تقدم الحافة اليسرى لنافذة الإرسال. تؤثر ACK المتأخرة، وفجوات التسلسل، وإعادة الترتيب، وقاعدة اختيار TSval الذي يعاد صداه في صلاحية القياس.

كثرة العينات تخلق قراراً آخر. صممت أوزان RFC 6298 على تاريخ يقارب عينة واحدة لكل RTT. إذا حُدث المتوسط مع كل مقطع بالأوزان نفسها فقد ينسى تاريخ المسار بسرعة ويزيد الإعادات الزائفة عندما تتغير الخصائص عبر عدة جولات.

ولا يمثل TSval ساعة عالمية موثوقة. يكفي أن ينمو تقريباً مع الزمن ليقاس الفرق بعد الصدى. لا يصادق هوية الطرف ولا تزامن الوقت المدني ولا نجاح التطبيق.

أبقى TCP الحديث قاعدة الرفض

ما زال RFC 9293، وهو مواصفة TCP الأساسية الحالية، يوجب حساب RFC 6298 بما فيه Karn. ويبقي التراجع الأسي ضمن آليات الاستقرار الأساسية.

استمرت القاعدة لأنها لا تعتمد على سرعة الوصلة أو حجم النافذة. إرسالان لمساحة تسلسل واحدة وACK تراكمي واحد لا يصنعان فاصلاً زمنياً وحيداً. هذه حقيقة دلالية وليست قيمة ضبط قديمة.

قد تضيف آليات حديثة إشارات أخرى وتقلل فترة غياب القياس. لكنها لا تحول فترة مجهولة البداية إلى RTT حقيقي. حاجة الواجهة إلى رقم حديث ليست دليلاً على وجوده.

يحافظ تقسيم المواصفات على السلطة أيضاً. يحيل TCP الأساسي حساب المؤقت إلى وثيقة متخصصة. ينسق RTO مع التحكم في الازدحام من دون أن يصبح نافذة الازدحام. ويضيف Timestamp دليلاً من دون أن يستولي على حكم التطبيق.

قد يكون الفراغ أكثر القياسات صدقاً

تحب لوحات المتابعة خطوطاً بلا انقطاع. ومن السهل تكرار آخر قيمة أو اختيار أقرب إرسال حين لا توجد عينة مؤهلة. غير أن ذلك يحذف حقيقة أن للحادث بدايتين محتملتين.

يقدم Karn حالة أدق: لا يمكن قياس RTT العادي في هذه الحلقة. الفراغ معلومة عن جودة الدليل، لا فشل في الجمع. تحويله إلى رقم يمنع المحقق اللاحق من رؤية الغموض الأصلي.

ينبغي للتليمترية القابلة للتدقيق أن تحفظ وقت الأصلية، وعدد الإعادة، وRTO قبل التراجع وبعده، وتقدم ACK، والتفاوض على Timestamp، وTSecr المستخدم، وأول عينة سليمة لاحقة. المتوسط وحده لا يميز تغير المسار من نسبة سببية مختلقة.

يجمع التصميم ثلاث خطوات: قبول التقدم الذي يثبته ACK، ورفض RTT الذي لا يثبته، وحمل عدم اليقين في التراجع إلى أن تصل معاملة واضحة. قوة البروتوكول لا تكون دائماً في استنتاج المزيد من إشارة صغيرة؛ قد تكون في الاحتفاظ بالسؤال الذي لم تجب عنه الإشارة.

المصادر وحدود الدليل

يوفر RFC 793 سياق المؤقت المتكيف الأول. يسجل RFC 1122 نقص الحساب ويطلب Karn وJacobson والتراجع. يقنن RFC 2988 وRFC 6298 حساب RTO واستبعاد العينات. يحدد RFC 7323 إزالة الغموض بالطوابع. ويحفظ RFC 9293 الشرط في TCP الحديث.

هذه مواصفات وليست مسوحاً للانتشار أو معدل الإعادات أو استخدام Timestamp اليوم. لا تنسب كل مهلة إلى ازدحام أو هجوم، ولا تساوي RTO بنافذة الازدحام، ولا تجعل RTT النقل دليلاً على نتيجة التطبيق.