
متوسطمبتدئDevOps
ما الفرق الرئيسي بين بروتوكولي TCP وUDP؟
إجابة مختصرة
TCP بروتوكول موثوق قائم على الاتصال يضمن التسليم والترتيب
وفحص الأخطاء، لكن ذلك يأتي على حساب زيادة الحمل. UDP بروتوكول بسيط غير قائم على الاتصال
لا يقدّم ضمانات للتسليم أو الترتيب، لكنه أسرع وأخف.
TCP وUDP هما بروتوكولا طبقة النقل الرئيسيان اللذان يعملان فوق IP. الفرق الأساسي: TCP قائم على الاتصال وموثوق، بينما UDP غير قائم على الاتصال ويعمل على أساس "أرسل وانسَ".
TCP (RFC 9293)
- قائم على الاتصال. قبل إرسال البيانات، يجري الطرفان مصافحة ثلاثية الخطوات (3WHS): SYN → SYN-ACK → ACK، لمزامنة أرقام التسلسل الأولية.
- موثوق ومرتّب. يحصل كل بايت على رقم تسلسلي؛ يرسل المتلقي إشعارات إقرار (ACKs)، وتُعاد حزم البيانات المفقودة إرسالًا، وتُعاد تجميع البيانات بالترتيب الأصلي. وتُتحقق السلامة باستخدام checksum. يذكر RFC 9293 أن TCP "يوفر خدمة موثوقة ومرتبة ومتدفقة من البايتات".
- تدفق بايتات، بلا حدود للرسائل. يسلّم TCP تدفق بايتات غير منظم: لا تُحفظ حدود الرسائل (ويجب على التطبيق أن يحدّد رسائله بنفسه). أما UDP، فعلى العكس، فهو موجّه للرسائل — إذ يُسلَّم كل datagram كوحدة منفصلة وكاملة أو لا يُسلَّم إطلاقًا (استدعاء واحد لـ sendto = استدعاء واحد لـ recvfrom).
- التحكم في التدفق والازدحام. يخفّض TCP معدل الإرسال بحيث لا يرهق المستقبل ولا الشبكة.
- المقايضة: حمل زائد وزمن تأخير أكبر، ورأس أكبر — 20–60 بايت (20 من دون خيارات، ويمكن توسيعه عبر خيارات مثل MSS، وwindow scaling، وSACK).
UDP (RFC 768)
- غير قائم على الاتصال. لا توجد مصافحة؛ كل datagram مستقل.
- لا ضمانات. يذكر RFC صراحةً أن "التسليم والحماية من التكرار غير مضمونين" — لا يعيد UDP معالجة الحزم المفقودة أو المكررة أو الخارجة عن الترتيب.
- رأس ثابت من 8 بايت يضم أربعة حقول فقط: منفذ المصدر، منفذ الوجهة، الطول، checksum.
- الفوائد: زمن تأخير وحمل زائد أقل، مع دعم البث العام/البث المتعدد.
متى يُستخدم كل منهما
- TCP: الويب (HTTP/HTTPS عبر TCP)، البريد الإلكتروني، نقل الملفات، SSH — حيث تكون سلامة البيانات مهمة.
- UDP: استعلامات DNS، الألعاب عبر الإنترنت، VoIP، البث المرئي المباشر — حيث تكون السرعة أهم من فقدان حزمة واحدة.
نقاط متابعة شائعة
- UDP بحد ذاته لا يرتّب البيانات، لكن يمكن للتطبيق أن يضيف منطقًا خاصًا به فوقه (ويفعل QUIC ذلك عبر UDP).
- يعمل HTTP/3 فوق QUIC عبر UDP، بينما يعمل HTTP/1.1 وHTTP/2 فوق TCP.
- checksum في UDP اختياري تقنيًا على IPv4 (القيمة صفر تعني "لم يُحسب") لكنه إلزامي على IPv6.
