السلام عليكم ورحمة الله وبركاته
الاخوة الكرام حياكم الله
كنت بدور مرة على حاجه تبسط مفهوم Three-Way Handshake
فلقيت ما يلي على الرابط التالي ، ربما يفيد بعض الاخوة..
https://nettales.wordpress.com/2009/...way_handshake/


هي طريقة يختصّ بها بروتوكول TCP في إنشاء الإتصال بين أي جهازين. وهي تتميزّ بالدرجة الأولى في أنها تضمن الموثوقية Reliable في عملية الإتصال… أي التأكد من وصول كامل حزم البيانات فيما بين الجهازين وعدم فقدان أي منها في الطريق لأي سبب من الأسباب. وهذه إحدى مزايا TCP مقارنة ببروتوكول UDP وإن كان هذا على حساب السرعة. (تحديث… كمثال على ذلك، تنزيل ملف من سيرفر FTP يتم ببروتوكول TCP من خلال هذه الطريقة لذلك يصلك كاملاً غير معطوب، بينما لا تضمن جودة الإتصال مع مواقع البث الحي لأنها تعمل على UDP).
نستطيع ترجمتها إلى المصطلح “المصافحة الثلاثية”، وهي أشبه ما تكون بعملية الإتصال الهاتفي بين البشر، من حيث أنك تحتاج للقيام بخطوات متسلسلة لإنشائها: ستقوم برفع السماعة، ثم طلب الرقم، وانتظار الرد، ثم سماع الرنين لدى الطرف الآخر، ثم قيامه برفع السماعة والرد، ثم التعارف، …. إلخ.
هذه الطريقة تمكّن الجهازين من التفاوض والإتفاق على بعض القيم المبدئية Parameters التي ستستخدم أثناء عملية الإتصال وإرسال البيانات فيما بينهما، وهي كما يلي:
SPORT: Source Port رقم المنفذ الذي سيستخدمه الجهاز المرسِل

DPORT: Destination Port رقم المنفذ الذي سيستخدمه الجهاز المستقبل
ISN: Initial Sequence Number الرقم التسلسلي المبدئي الذي ستبدأ به عملية ترقيم الحزم المرسلة. وهو يلزم لأجل التحكم في تدفق البيانات والتأكد من وصول الحزم إلى هدفها، ومن ثمّ إعادة ترتيبها بالشكل الصحيح.
ACK: Acknowledge رقم آخر يمثل “وصل الإستلام”، ويرسله الجهاز الهدف إلى الجهاز المصدر لإعلامه بوصول الحزم وإستلامها بنجاح.
سميت هذه العملية three-way لأن تجري على ثلاث مراحل:
يقوم الجهاز A بإرسال حزمة تتضمن إشارة تدعى SYN (إختصار SYNchronize) إلى الجهاز B.
تصل الحزمة إلى الجهاز B فيرد عليها بإرسال حزمة تتضمن SYN-ACK (إختصار SYNchronize-ACKnowledge) إلى الجهاز A.
عندما يصل الرد إلى الجهاز A، يعيد إرسال حزمة أخرى مع إشارة ACK إلى الجهاز B، إيذاناً بإتمام التفاوض وعندها فقط يتم البدء بالإتصال الفعلي، ويصبح الإتصال في هذه المرحلة في حالة ESTABLISHED STATE.

(ما بدأ بالمعروف ينتهي بالمعروف)، ذلك لأن إنهاء الإتصال لا يتم إعتباطياً، بل أيضاً من خلال عملية توافق بين الجهازين وبنفس التسلسل تقريباً ما عدا أن إشارة SYN تستبدل بإشارة FIN (إختصاراً لـِ FINished).

من مزايا طريقة three-way handshake كذلك أنها تمكّن الجهازين من إنشاء عدة قنوات إتصال فيما بينهما في نفس الوقت، وكل واحدة منها مستقلة في حالتها state ومختلفة في القيم parametes التي يتم الإتفاق عليها. على سبيل المثال يمكنك إنشاء إتصال مع جهاز سيرفر لفتح صفحة إنترنت مستضافة عليه (من خلال بروتوكول HTTP) وفي نفس الوقت تقوم بتنزيل ملف منه (من خلال بروتوكول FTP). لكل جلسة من هاتيين الجلستين يتم عمل three-way handshake والتفاوض على طبيعة الإتصال بشكل مستقل ومختلف عن الأخرى. وقد تنتهى إحدى الجلسات بينما الأخرى لا زالت فاعلة.