عملية مصافحة TCP ثلاثية الاتجاهات

عملية مصافحة TCP

يمكن أيضًا اعتبار هذا كطريقة لكيفية إنشاء اتصال TCP. قبل الدخول في التفاصيل، دعونا نلقي نظرة على بعض الأساسيات. يشير TCP إلى بروتوكول التحكم في الإرسال (transfer control protocol) الذي يشير إلى أنه يفعل شيئًا للتحكم في نقل البيانات بطريقة موثوقة.

عملية مصافحة TCP ثلاثية الاتجاهات

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

عملية مصافحة TCP ثلاثية الاتجاهات

کیفیة عمل TCP

يوفر بروتوكول TCP اتصالاً موثوقًا به مع شيء يسمى الإقرار الإيجابي بإعادة الإرسال (PAR). تسمى وحدة بيانات البروتوكول  (PDU) لطبقة النقل بالقطعة. الآن يقوم جهاز يستخدم PAR بإعادة إرسال وحدة البيانات حتى يتلقى إقرارًا. في حالة تلف وحدة البيانات المستلمة في نهاية جهاز الاستقبال (يتحقق ذلك من البيانات بوظيفة المجموع الاختباري لطبقة النقل المستخدمة لاكتشاف الخطأ)، ثم يتجاهل جهاز الاستقبال المقطع. لذلك يتعين على المرسل إعادة إرسال وحدة البيانات التي لم يتم استلام إقرار إيجابي بشأنها. يمكنك أن تدرك من الآلية أعلاه أنه يتم تبادل ثلاثة أجزاء بين المرسل (العميل) والمستقبل (الخادم) من أجل إنشاء اتصال TCP موثوق. دعونا نتعمق في كيفية عمل هذه الآلية:

کیفیة عمل TCP
  • الخطوة 1  (SYN): في الخطوة الأولى، يريد العميل إنشاء اتصال بالخادم، لذلك يرسل مقطعًا باستخدام SYN (مزامنة رقم التسلسل(synchroniz e sequence number)) الذي يُعلم الخادم أنه من المحتمل أن يبدأ العميل في الاتصال وما هو رقم التسلسل الذي يبدأ به المقاطع مع
  • الخطوة 2 (SYN + ACK): يستجيب الخادم لطلب العميل مع مجموعة بتات إشارة SYN-ACK. يشير الإقرار  (ACK) إلى استجابة القطعة التي تلقاها ويشير SYN إلى رقم التسلسل الذي من المحتمل أن تبدأ المقاطع به
  • الخطوة 3 (ACK): في الجزء الأخير، يقر العميل باستجابة الخادم ويقوم كلاهما بإنشاء اتصال موثوق به سيبدأان من خلاله نقل البيانات الفعلي

تحدد الخطوتان 1 و 2 معلمة الاتصال (رقم التسلسل) لاتجاه واحد ويتم الاعتراف بها. تحدد الخطوتان 2 و 3 معلمة الاتصال (رقم التسلسل) للاتجاه الآخر ويتم الاعتراف بها. مع هذه، يتم إنشاء اتصال مزدوج الاتجاه.

ملاحظة: يتم تحديد أرقام التسلسل الأولي بشكل عشوائي أثناء إنشاء اتصالات بين العميل والخادم.

کیفیة عمل TCP

مؤقتات TCP أو TCP timers

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

أربعة مؤقتات المستخدمة في تنفيذ TCP

1. موقت إعادة الإرسال

لإعادة إرسال المقاطع المفقودة، يستخدم TCP مهلة إعادة الإرسال (RTO) عندما يرسل TCP مقطعًا، يبدأ المؤقت ويتوقف عند استلام الإقرار. في حالة انتهاء صلاحية المؤقت، يتم إعادة إرسال المقطع. RTO  (مهلة إعادة الإرسال لـ 1 RTT) لحساب مهلة إعادة الإرسال، نحتاج أولاً إلى حساب RTT  (وقت الرحلة ذهابًا وإيابًا).

ثلاثة أنواع RTT:

  •  قياس الوقت (measured RTT) – وقت الرحلة ذهابًا وإيابًا المقاس لقطاع ما هو الوقت المطلوب حتى يصل المقطع إلى الوجهة ويتم الاعتراف به، على الرغم من أن الإقرار قد يتضمن مقاطع أخرى.
  • RTT ناعم (RTTs)– هو المتوسط ​​المرجح لـ RTTm. من المرجح أن يتغير RTTm وتذبذبها مرتفع للغاية بحيث لا يمكن استخدام قياس واحد لحساب RTO.

Initially -> No value

After the first measurement -> RTTs=RTTm

After each measurement -> RTTs= (1-t)*RTTs + t*RTTm

Note: t=1/8 (default if not given)

  • RTT منحرف (RTTd)-  لا تستخدم معظم عمليات التنفيذ RTT وحدها، لذلك يتم حساب انحراف RTT أيضًا لاكتشاف RTO.

Initially -> No value

After the first measurement -> RTTd=RTTm/2

After each measurement -> RTTd= (1-k)*RTTd + k*(RTTm-RTTs)

Note: k=1/4 (default if not given)

مهلة إعادة الإرسال: حساب – RTO  تعتمد قيمة RTO على وقت الرحلة ذهابًا وإيابًا السلس وانحرافه. تستخدم معظم التطبيقات الصيغة التالية لحساب RTO:

Initial value -> Original (given in question)

After any measurement -> RTO=RTTs + 4*RTTd

2. المؤقت المستمر (persistent timer)

للتعامل مع حالة طريق مسدود بحجم إطار صفري، يستخدم TCP مؤقت استمرار. عندما يتلقى TCP للإرسال إقرارًا بحجم نافذة صفري، فإنه يبدأ مؤقت استمرار. عندما ينطلق مؤقت الاستمرارية، يرسل TCP للإرسال مقطعًا خاصًا يسمى مسبارًا. يحتوي هذا المقطع على 1 بايت فقط من البيانات الجديدة. لها رقم تسلسلي، ولكن لا يتم التعرف على رقمها التسلسلي؛ بل يتم تجاهله في حساب الرقم التسلسلي لبقية البيانات. يتسبب المسبار في قيام TCP المستلم بإعادة إرسال الإقرار المفقود.

3. موقت البقاء (keep alive timer)

يتم استخدام مؤقت البقاء على قيد الحياة لمنع اتصال خامل طويل بين اثنين من TCP. إذا فتح العميل اتصال TCP إلى خادم ينقل بعض البيانات ويصبح صامتًا، فسوف يتعطل العميل. في هذه الحالة، يظل الاتصال مفتوحًا إلى الأبد. لذلك يتم استخدام جهاز ضبط الوقت Keepalive. في كل مرة يسمع فيها الخادم من العميل، فإنه يعيد ضبط هذا المؤقت. المهلة عادة ما تكون ساعتين. إذا لم يسمع الخادم من العميل بعد ساعتين، فإنه يرسل مقطع فحص. إذا لم تكن هناك استجابة بعد 10 تحقيقات، كل منها 75 ثانية على حدة، فإنها تفترض أن العميل معطل وينهي الاتصال.

4. موقت انتظار الوقت (time wait timer)

يُستخدم هذا المؤقت أثناء إنهاء اتصال tcp. يبدأ الموقت بعد إرسال آخر Ack لـ 2 FIN وإغلاق الاتصال.

بعد إغلاق اتصال TCP، من الممكن لمخططات البيانات التي لا تزال تشق طريقها عبر الشبكة لمحاولة الوصول إلى المنفذ المغلق. يهدف المؤقت الهادئ إلى منع المنفذ الذي تم إغلاقه للتو من إعادة الفتح مرة أخرى بسرعة واستقبال مخططات البيانات الأخيرة هذه.

عادةً ما يتم ضبط المؤقت الهادئ على ضعف الحد الأقصى لعمر المقطع (نفس القيمة مثل حقل Time-To-Live في رأس IP) ، مما يضمن تجاهل جميع المقاطع التي لا تزال متجهة إلى المنفذ.

أعلام TCP أو TCP flags

في اتصال TCP، تُستخدم العلامات للإشارة إلى حالة اتصال معينة أو لتوفير بعض المعلومات المفيدة الإضافية مثل أغراض استكشاف الأخطاء وإصلاحها أو للتعامل مع التحكم في اتصال معين. العلامات الأكثر استخدامًا هي  SYN و  ACK و FIN. كل علم يتوافق مع 1 بت المعلومات.

أنواع الأعلام

  • التزامن synchronization (SYN)- يتم استخدامه في الخطوة الأولى من مرحلة إنشاء الاتصال أو عملية المصافحة ثلاثية الاتجاهات بين المضيفين. يجب أن تحتوي الحزمة الأولى فقط من المرسل والمستقبل على مجموعة العلامات هذه. يستخدم هذا لمزامنة رقم التسلسل، أي لإخبار الطرف الآخر برقم التسلسل الذي يجب أن يقبله.
  • اقرار Acknowledgement (ACK)-  يتم استخدامه لتأكيد الحزم التي تم استلامها بنجاح بواسطة المضيف. يتم تعيين العلم إذا كان حقل رقم الإقرار يحتوي على رقم إقرار صالح.

    في الرسم البياني أدناه، يرسل جهاز الاستقبال ACK = 1 بالإضافة إلى SYN = 1 في الخطوة الثانية من إنشاء الاتصال لإخبار المرسل أنه تلقى الحزمة الأولية.

  • إنهاء FINISH  (FIN)- يتم استخدامه لطلب إنهاء الاتصال، أي عندما لا يكون هناك المزيد من البيانات من المرسل، فإنه يطلب إنهاء الاتصال. هذه هي آخر حزمة أرسلها المرسل. يحرر الموارد المحجوزة وينهي الاتصال بأمان.
  • إعادة تعيين RST) RESET)- تُستخدم لإنهاء الاتصال إذا شعر مرسل RST بوجود خطأ في اتصال TCP أو أن المحادثة يجب ألا تكون موجودة. يمكن إرساله من جانب المتلقي عندما يتم إرسال الحزمة إلى مضيف معين لم يكن يتوقعها.

FIN VS RST
FIN VS RST
  • ضغط push (PSH) – تنتظر طبقة النقل افتراضيًا لبعض الوقت حتى تقوم طبقة التطبيق بإرسال بيانات كافية تساوي الحد الأقصى لحجم المقطع بحيث يتم تقليل عدد الحزم المرسلة على الشبكة وهو أمر غير مرغوب فيه من قبل بعض التطبيقات مثل التطبيقات التفاعلية (الدردشة). وبالمثل، فإن طبقة النقل في رزم المخازن المؤقتة لطرف المستقبل وترسلها إلى طبقة التطبيق إذا كانت تستوفي معايير معينة.

    تم حل هذه المشكلة باستخدام PSH. تحدد طبقة النقل PSH = 1 وترسل المقطع على الفور إلى طبقة الشبكة بمجرد أن تستقبل إشارة من طبقة التطبيق. طبقة نقل جهاز الاستقبال، عند رؤية PSH = 1، تقوم على الفور بإعادة توجيه البيانات إلى طبقة التطبيق.

    بشكل عام، يخبر المتلقي بمعالجة هذه الحزم عند استلامها بدلاً من تخزينها مؤقتًا.

  • عاجل (URG) urgent– يتم إعادة توجيه البيانات الموجودة داخل مقطع مع URG = 1 علامة إلى طبقة التطبيق على الفور حتى إذا كان هناك المزيد من البيانات التي يجب إعطاؤها لطبقة التطبيق. يتم استخدامه لإخطار المستلم بمعالجة الحزم العاجلة قبل معالجة جميع الحزم الأخرى. سيتم إخطار المستلم عند استلام جميع البيانات العاجلة المعروفة.

PSH VS URG
PSH VS URG
منشور ذات صلة
الخوارزمية 6 Minutes

مقدمة في الخوارزمية

جاسم ناظري

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

أفضل لغات البرمجة 13 Minutes

أفضل لغات البرمجة في عام 2021

آيات عامر

كلنا متحمسون لمعرفة ما هي التقنيات وأي لغة برمجة التي ستكون في المقدمة؟ أي منهم سيصبح شيئًا من الماضي؟ ما هو الخيار الأفضل لبناء مشروع ويب في عام 2021؟

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

السلة