تكرار السؤال: …
الإجابة المختصرة
بروتوكول TCP موثوق، موجه بالاتصال (Connection-oriented)، يضمن وصول وترتيب الحزم والتحكم بالتدفق، بينما UDP بروتوكول عديم الاتصال وسريع جداً دون أي ضمان للوصول أو الترتيب.
الشرح
تؤسس مصافحة TCP الثلاثية الاتصال عبر: (1) إرسال العميل حزمة SYN برقم تسلسلي مبدئي. (2) رد الخادم بـ SYN-ACK لتأكيد الاستلام وإرسال رقمه الخاص. (3) رد العميل بـ ACK لبدء نقل البيانات. يعيد TCP إرسال الحزم المفقودة تلقائياً (Retransmission) ويتحكم بالازدحام (Congestion Control). في المقابل، يرسل UDP الحزم فوراً دون انتظار، مما يجعله الخيار الأمثل للبث المباشر (Video Streaming)، ألعاب الفيديو التنافسية، واستعلامات DNS السريعة.
مثال بالكود
import socket
# TCP: connect() performs the 3-way handshake (SYN → SYN-ACK → ACK); delivery is reliable and ordered
tcp = socket.create_connection(("example.com", 80), timeout=5)
tcp.sendall(b"HEAD / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n")
print(tcp.recv(200))
tcp.close()
# UDP: no connection and no delivery guarantee — the datagram may be lost silently
udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp.sendto(b"ping", ("127.0.0.1", 9999))أخطاء شائعة
- استخدام TCP للبث الصوتي الحي في الألعاب، مما يسبب تقطيعاً وتراكماً للتأخير عند ضياع حزمة غير هامة ومحاولة إعادة إرسالها.
أسئلة متابعة
- تتبع التطور التاريخي لبروتوكول HTTP: من HTTP/1.1 إلى HTTP/2 والـ Multiplexing وصولاً إلى HTTP/3 ومحرك QUIC القائم على UDP؟
- كيف تحدث هجمات الرجل في المنتصف (MITM) وهجمات إغراق المزامنة (SYN Flood) وكيف تعمل تقنية SYN Cookies؟