وليد الشهري
وليد الشهري

@Waleed_S_7

14 تغريدة 210 قراءة Oct 17, 2021
نسمع عن بروتوكولات "TCP" و "UDP"، فما هما؟ وما الفرق بينهما؟
قبل أن نخوض في الإجابة عن هذه الأسئلة، لنلقِ نظرةً سريعة على مفهوم البروتوكول (protocol) نفسه..
البروتوكول يشير إلى مجموعة القواعد أو القوانين المتّبعة من أجل تنظيم طريقة العمل أو السلوك في مجال محدد،فوزارة التعليم -مثلًا- لديها بروتوكولات معينة لضبط وتنظيم سير العملية التعليمية،واستقبال رؤساء الدول لبعضهم البعض محكوم ببروتوكولات معينة (السجاد الأحمر والنشيد الوطني وغيرها).
وقد تكون لديك طريقة خاصّة لتنظيم أعمالك الشخصيّة، أو ترتيب ملفاتك، أو تصنيف كتبك، وكل هذا يصح أن نطلق عليه اسم "بروتوكول" (protocol).. ولهذا السبب أطلقنا على القوانين التي تنظّم طريقة التواصل بين مختلف الأجهزة على الشبكة مسمّى "بروتوكولات".
وهناك العديد من أنواع بروتوكولات الشبكة، التي تختلف باختلاف خصائصها وأهدافها، والتي تسمى في مجموعها "the internet protocol suite".وعند الحديث عن بروتوكولات الاتصال بين الأجهزة عن طريق الإنترنت، فنحن نتحدث عن نوعين رئيسين من الاتصال، هما:
1- TCP
2- UDP
بالنسبة لبروتوكول "TCP" فهو اختصار (Transmission Control Protocol)، ويمكن ترجمتها ب "بروتوكول التحكم في النقل"، وكما نعلم فإنّ البيانات المرسلة عبر الشبكة تكون في صورة حِزَم (packets)، وكل حزمة تسلك طريقًا مختلفًا للوصول إلى الوجهة (destination) نفسها، ثم يعاد تجميعها عند الوصول.
مهمّة TCP هي إنشاء اتصال بين الجهازين (المرسل والمستقبل) قبل إجراء عملية نقل البيانات، ثم التحقق من وصول جميع الحِزَم إلى وجهتها، والحرص على عدم فقدان أيّ حزمة، وإلَّا طلبها مرة أخرى من الجهاز المرسل.
وهذا البروتوكول هو الأكثر شيوعًا ووثوقيّة بالمقارنة مع UDP، وهو المستخدَم في عملية تصفح الويب وإرسال واستقبال البريد الإلكتروني، وكذلك في معظم التطبيقات التي نستخدمها مثل:
Twitter
Youtube
Whatsapp
Snapchat
... إلخ
أما بالنسبة إلى بروتوكول "UDP"، فهو اختصار (User Datagram Protocol) ويمكن ترجمتها - إذا صحت الترجمة - ب "بروتوكول إرسال بيانات المستخدم"، وهذا البروتوكول على عكس سابقه من حيث التعامل مع حزم البيانات (packets)، فهو لا يهتم بوصول جميع الحزم، ولا يسترجع الحزم المفقودة..
ولا يهتم في المقام الأول بإنشاء اتصال بين الجهازين على الشبكة أصلًا، هو فقط يرسل البيانات (packets)، أما ما يتعلّق بضمانات وصولها بشكل كامل إلى وجهتها، فإنّ UDP لا يضمن ذلك (على عكس TCP).
ما يتفوّق به UDP على TCP هو أنّه أسهل في نقل البيانات وأسرع..
فإذا كنت مستعدًا للتضحية ببعض البيانات في سبيل الحصول على سرعة نقل أعلى، فخيارك الأمثل هو UDP، وهذا البروتوكول يُستخدَم في تطبيقات الاجتماعات (مثل zoom)، وفي البثوث الحيّة (live)، وكذلك في الألعاب التي تكون عبر الإنترنت (online)، وفشل النقل الكامل يتمثّل في التأخر والتقطّع (lag).
ضرب أحدهم مثلًا طريفًا يوضّح النوعين كالآتي (بتصرف):
لو أردت أن تروي ظمأك بالشرب من قارورة ماء بسعة 300 مل، فإنك ستضمن أنّ كلّ قطرة خرجت من القارورة ستنتقل إلى معدتك بنجاح.. هذا هو مبدأ عمل بروتوكول "TCP".
ولك أن تتخيل لو قرّرت المجازفة بالشرب من علبة مياه بسعة 5 لتر.. سيكون من الصعب أن تضمن وصول كل قطرة من العلبة إلى جوفك، أو بعبارة أخرى: لا يمكن ضمان الحفاظ على كل قطرة خارجة من هذه العلبة من الهدر بحيث لا تصل إلى وجهتها (المعدة)، قد لا يحدث الهدر، لكن لا ضمانات على ذلك.
ومن باب التوضيح بالمفارقات:
ماذا لو كانت شركات الشحن -مثلًا- تعمل وفق بروتوكول "UDP"؟ وعندما يتصل بهم أحد العملاء للاستعلام عن شحنته المتأخرة، يكون الرد من قبيل: "لا توجد شحنة باسمك، لعلّها كانت ضمن الشحنات التي ضاعت أثناء نقلها، وعلى كل حال، فنحن لا نبالي بذلك على الإطلاق!".
أو ماذا لو طلبت كوبًا من العصير في أحد المطاعم، وعندما جاءك النادل بما طلبت، أحضر معه فاتورة بمبلغ إضافي يتعين عليك دفعه، بسبب زيادة كمية العصير بمقدار 10 قطرات عن المعتاد!
في مثال شركة الشحن،يكون البروتوكول الأنسب هو "TCP"،في حين أن "UDP" هو الأنسب للمثال الثاني.
انتهى

جاري تحميل الاقتراحات...