الخلاصة

  • يبقى حقل رقم الإقرار موجوداً في الرأس، لكنه لا يكون ذا دلالة إلا عند تفعيل ACK.
  • يشير الرقم إلى رقم التسلسل التالي المتوقع ويقر تراكمياً بكل المواضع السابقة.
  • تكشف المصافحة الثلاثية الانتقال: لا يحمل SYN الأول إقراراً صالحاً، بينما يجعل SYN,ACK الرقم ذا دلالة.

وجود الحقل ليس إعلاناً

تحافظ RFC 793 وRFC 9293 على رأس TCP ثابت البنية. فحقل الإقرار ذو 32 بت موجود في SYN الأول، وفي مقطع البيانات، وفي مراحل الإغلاق. لكن المواصفة لا تطلب تفسيره دائماً. عند ضبط ACK، يحتوي الحقل على رقم التسلسل التالي الذي يتوقع المرسل استقباله. وتعرّف RFC 9293 ACK بأنه يعني أن حقل الإقرار ذو دلالة.

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

تجعل المصافحة التحول مرئياً

في المثال الأساسي من RFC 9293، يحمل المقطع الأول SEQ=100 وSYN بلا ACK. ويرد الطرف الآخر بـ SEQ=300 وACK=101 وSYN,ACK. أما المقطع الأخير فيحمل SEQ=101 وACK=301 وACK. وبما أن SYN يستهلك موضعاً واحداً، فإن إقرار 100 يعني توقع 101.

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

حد تراكمي لا إيصال للتطبيق

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

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

استمرارية من 1981 إلى المعيار الحالي

تحافظ RFC 793 وRFC 9293 على التصميم نفسه: حقل ثابت من 32 بت، دلالة مشروطة بـ ACK، وإقرار تراكمي من دون تخصيص رقم تسلسل لـ ACK. هذه نتيجة تخص بنية البروتوكول، وليست حكماً على التطبيقات الحديثة.

المصادر