إعداد اتصال TCP
عندما نتصفح الويب أو إرسال بريد إلكتروني أو تشغيل لعبة عبر الإنترنت ، فإننا لا نفكر غالبًا في اتصال الشبكة المعقدة وراءه. ومع ذلك ، فإن هذه الخطوات التي تبدو صغيرة على ما يبدو أنها تضمن التواصل المستقر بيننا وبين الخادم. واحدة من أهم الخطوات هي إعداد اتصال TCP ، وخطير هذا هو المصافحة ثلاثية الاتجاه.
ستناقش هذه المقالة مبدأ ومعالجة وأهمية المصافحة الثلاثية بالتفصيل. خطوة بخطوة ، سنشرح سبب الحاجة إلى المصافحة ثلاثية الاتجاه ، وكيف يضمن استقرار الاتصال وموثوقيته ، ومدى أهمية نقل البيانات. مع فهم أعمق للمصافحة ثلاثية الاتجاه ، سوف نكتسب فهمًا أفضل للآليات الأساسية لاتصالات الشبكة ورؤية أوضح لموثونة اتصالات TCP.
عملية مصافحة ثلاثية الاتجاه TCP وانتقالات الدولة
TCP هو بروتوكول نقل موجه نحو الاتصال ، والذي يتطلب إنشاء اتصال قبل نقل البيانات. تتم عملية إنشاء الاتصال هذه عن طريق مصافحة ثلاثية.
دعنا نلقي نظرة فاحصة على حزم TCP التي يتم إرسالها في كل اتصال.
في البداية ، يتم إغلاق كل من العميل والخادم. أولاً ، يستمع الخادم بنشاط على منفذ وهو في حالة الاستماع ، مما يعني أنه يجب بدء الخادم. بعد ذلك ، يكون العميل جاهزًا للبدء في الوصول إلى صفحة الويب. يحتاج إلى إنشاء اتصال مع الخادم. تنسيق حزمة الاتصال الأولى كما يلي:
عندما يبدأ العميل في اتصال ، فإنه ينشئ رقم تسلسل أولي عشوائي (Client_isn) ويضعه في حقل "رقم التسلسل" لرأس TCP. في الوقت نفسه ، يقوم العميل بتعيين موضع علامة SYN إلى 1 للإشارة إلى أن الحزمة الصادرة هي حزمة SYN. يشير العميل إلى أنه يرغب في إنشاء اتصال مع الخادم عن طريق إرسال حزمة SYN الأولى إلى الخادم. لا تحتوي هذه الحزمة على بيانات طبقة التطبيق (أي البيانات المرسلة). في هذه المرحلة ، يتم وضع علامة على حالة العميل على أنها syn-sent.
عندما يتلقى الخادم حزمة SYN من عميل ، يقوم بتهيئة الرقم التسلسلي الخاص به بشكل عشوائي (Server_isn) ثم يضع هذا الرقم في حقل "الرقم التسلسلي" لرأس TCP. بعد ذلك ، يقوم الخادم بإدخال Client_isn + 1 في حقل "رقم الإقرار" ويقوم بتعيين بتات SYN و ACK على 1. أخيرًا ، يرسل الخادم الحزمة إلى العميل ، والذي لا يحتوي على بيانات طبقة التطبيق (ولا توجد بيانات للخادم لإرسالها). في هذا الوقت ، يكون الخادم في حالة SYN-RCVD.
بمجرد أن يستقبل العميل الحزمة من الخادم ، يحتاج إلى تنفيذ التحسينات التالية للرد على حزمة الرد النهائي: أولاً ، يقوم العميل بتعيين بت ACK من رأس TCP لحزمة الرد على 1 ؛ ثانياً ، يقوم العميل بإدخال Value Server_isn + 1 في حقل "تأكيد الإجابة رقم" ؛ أخيرًا ، يرسل العميل الحزمة إلى الخادم. يمكن لهذه الحزمة حمل بيانات من العميل إلى الخادم. عند الانتهاء من هذه العمليات ، سيدخل العميل الحالة المعمول بها.
بمجرد أن يستقبل الخادم حزمة الرد من العميل ، فإنه ينتقل أيضًا إلى الحالة المحددة.
كما ترون من العملية أعلاه ، عند إجراء مصافحة ثلاثية ، يُسمح للمصافحة الثالثة بحمل البيانات ، لكن المصافحة الأولين ليست كذلك. هذا سؤال غالبًا ما يتم طرحه في المقابلات. بمجرد اكتمال المصافحة الثلاثية ، يدخل كلا الطرفين الحالة المعمول بها ، مما يشير إلى أن الاتصال قد تم تأسيسه بنجاح ، وعندها يمكن للعميل والخادم البدء في إرسال البيانات إلى بعضهما البعض.
لماذا ثلاثة مصافحة؟ ليس مرتين ، أربع مرات؟
الجواب الشائع هو ، "لأن المصافحة الثلاثية تضمن القدرة على تلقي وإرسال". هذه الإجابة صحيحة ، لكنها مجرد سبب السطح ، لا يطرح السبب الرئيسي. في ما يلي ، سأقوم بتحليل أسباب المصافحة الثلاثية من ثلاثة جوانب لتعميق فهمنا لهذه القضية.
يمكن للمصافحة ثلاثية الاتجاه تجنب تهيئة الروابط المتكررة تاريخيًا بشكل فعال (السبب الرئيسي)
يضمن المصافحة ثلاثية الاتجاه أن تلقى كلا الطرفين رقم تسلسل أولي موثوق به.
المصافحة ثلاثية الاتجاه يتجنب إهدار الموارد.
السبب 1: تجنب الوصلات التكرارية التاريخية
باختصار ، السبب الرئيسي لمصافحة ثلاثية هو تجنب الالتباس الناجم عن تهيئة الاتصال المكررة القديم. في بيئة الشبكة المعقدة ، لا يتم إرسال نقل حزم البيانات دائمًا إلى المضيف الوجهة وفقًا للوقت المحدد ، وقد تصل حزم البيانات القديمة إلى مضيف الوجهة أولاً بسبب احتقان الشبكة وأسباب أخرى. لتجنب ذلك ، يستخدم TCP مصافحة ثلاثية لإنشاء الاتصال.
عندما يرسل العميل حزم إنشاء اتصالات SYN متعددة على التوالي ، في مواقف مثل احتقان الشبكة ، قد يحدث ما يلي:
1- تصل حزم SYN القديمة إلى الخادم قبل أحدث حزم SYN.
2- سيقوم الخادم بالرد على حزمة SYN + ACK للعميل بعد تلقي حزمة SYN القديمة.
3- عندما يتلقى العميل حزمة SYN + ACK ، فإنه يحدد أن الاتصال هو اتصال تاريخي (انتهت صلاحية رقم التسلسل أو المهلة) وفقًا لسياقه الخاص ، ثم يرسل حزمة RST إلى الخادم لإحباط الاتصال.
من خلال اتصال ثنائي الفصلين ، لا توجد طريقة لتحديد ما إذا كان الاتصال الحالي هو اتصال تاريخي. تتيح المصافحة ثلاثية الاتجاه للعميل تحديد ما إذا كان الاتصال الحالي عبارة عن اتصال تاريخي يعتمد على السياق عندما يكون جاهزًا لإرسال الحزمة الثالثة:
1- إذا كان اتصالًا تاريخيًا (انتهت صلاحية رقم التسلسل أو المهلة) ، فإن الحزمة المرسلة من المصافحة الثالثة هي حزمة عرضية لإحباط الاتصال التاريخي.
2- إذا لم يكن اتصالًا تاريخيًا ، فإن الحزمة المرسلة للمرة الثالثة هي حزمة ACK ، ونجاح الطرفين التواصل في إنشاء الاتصال.
لذلك ، فإن السبب الرئيسي في أن TCP يستخدم المصافحة ثلاثية الاتجاه هو أنه يهيئة الاتصال لمنع الاتصالات التاريخية.
السبب 2: لمزامنة أرقام التسلسل الأولية لكلا الطرفين
يجب أن يحافظ كلا جانبي بروتوكول TCP على رقم تسلسل ، وهو عامل رئيسي لضمان انتقال موثوق به. تلعب أرقام التسلسل دورًا مهمًا في اتصالات TCP. إنها تفعل ما يلي:
يمكن للمستقبل التخلص من البيانات المكررة وضمان دقة البيانات.
يمكن للمستقبل تلقي الحزم بترتيب رقم التسلسل لضمان سلامة البيانات.
● يمكن أن يحدد رقم التسلسل حزمة البيانات التي تم استلامها من قبل الطرف الآخر ، مما يتيح نقل البيانات الموثوق به.
لذلك ، عند إنشاء اتصال TCP ، يرسل العميل حزم SYN برقم التسلسل الأولي ويتطلب من الخادم الرد بحزمة ACK تشير إلى استقبال ناجح لحزمة SYN الخاصة بالعميل. بعد ذلك ، يرسل الخادم حزمة SYN مع رقم التسلسل الأولي للعميل وينتظر الرد ، مرة واحدة وإلى الأبد ، لضمان مزامنة أرقام التسلسل الأولية بشكل موثوق.
على الرغم من أنه من الممكن أيضًا مزامنة المصافحة ذات الاتجاه الرباعي بشكل موثوق أرقام التسلسل الأولية لكلا الطرفين ، إلا أنه يمكن دمج الخطوتين الثانية والثالثة في خطوة واحدة ، مما يؤدي إلى مصافحة ثلاثية. ومع ذلك ، يمكن أن تضمن المصافحة فقط أن يتم استلام عدد التسلسل الأولي للطرف واحد بنجاح من قبل الطرف الآخر ، ولكن لا يوجد أي ضمان بإمكانية تأكيد عدد التسلسل الأولي لكلا الطرفين. لذلك ، فإن المصافحة الثلاثية هي الخيار الأفضل لضمان استقرار وموثوقية اتصالات TCP.
السبب 3: تجنب إهدار الموارد
إذا لم يكن هناك سوى "اثنين من المسامين" ، عندما يتم حظر طلب SYN العميل في الشبكة ، لا يمكن للعميل تلقي حزمة ACK المرسلة من الخادم ، لذلك سيتم استياء SYN. ومع ذلك ، نظرًا لعدم وجود مصافحة ثالثة ، لا يمكن للخادم تحديد ما إذا كان العميل تلقى إقرارًا ACK لإنشاء الاتصال. لذلك ، لا يمكن للخادم فقط إنشاء اتصال بشكل استباقي بعد تلقي كل طلب SYN. هذا يؤدي إلى ما يلي:
مضيعة للموارد: إذا تم حظر طلب SYN الخاص بالعميل ، مما أدى إلى نقل متكرر لحزم SYN المتعددة ، فسيقوم الخادم بإنشاء اتصالات غير صالحة متعددة بعد تلقي الطلب. هذا يؤدي إلى مضيعة غير ضرورية لموارد الخادم.
الاحتفاظ بالرسائل: نظرًا لعدم وجود مصافحة ثالثة ، ليس لدى الخادم أي طريقة لمعرفة ما إذا كان العميل قد تلقى بشكل صحيح إقرار ACK لإنشاء الاتصال. نتيجة لذلك ، إذا تعثرت الرسائل في الشبكة ، فسيستمر العميل في إرسال طلبات SYN مرارًا وتكرارًا ، مما يتسبب في إنشاء خادم اتصالات جديدة باستمرار. سيؤدي ذلك إلى زيادة احتقان الشبكة والتأخير ويؤثر سلبًا على أداء الشبكة الكلي.
لذلك ، من أجل ضمان استقرار وموثوقية اتصال الشبكة ، يستخدم TCP المصافحة ثلاثية الاتجاه لإنشاء الاتصال لتجنب حدوث هذه المشكلات.
ملخص
الوسيط حزمة الشبكةيتم إنشاء TCP Connection مع مصافحة ثلاثية. أثناء المصافحة الثلاثية ، يرسل العميل أولاً حزمة مع علامة SYN إلى الخادم ، مما يشير إلى أنه يريد إنشاء اتصال. بعد استلام الطلب من العميل ، يرد الخادم حزمة مع أعلام SYN و ACK إلى العميل ، مما يشير إلى أن طلب الاتصال مقبول ، ويرسل رقم التسلسل الأولي الخاص به. أخيرًا ، يرد العميل باستخدام علامة ACK على الخادم للإشارة إلى أن الاتصال قد تم تأسيسه بنجاح. وبالتالي ، فإن الطرفين موجودان في الحالة المحددة ويمكنهما البدء في إرسال البيانات إلى بعضهما البعض.
بشكل عام ، تم تصميم عملية المصافحة ثلاثية الاتجاهات لتأسيس اتصال TCP لضمان استقرار وموثوقيته وتجنب الالتباس وإهدار الموارد على الاتصالات التاريخية ، والتأكد من أن كلا الطرفين قادرين على تلقي البيانات وإرسالها.
وقت النشر: يناير -08-2025