CodeShot

TCP در مقابل UDP

TCP یک پروتکل اتصال‌گرا (Connection-oriented) است که با Handshake سه‌مرحله‌ای، تضمین تحویل، ترتیب بسته‌ها و کنترل ازدحام کار می‌کند، در حالی که UDP بدون اتصال و بدون تضمین است و بسته‌ها را با کمترین سربار و سریع‌ترین حالت ممکن ارسال می‌کند بدون تأیید دریافت.

ویژگیTCPUDP
نوع اتصالاتصال‌گرابدون اتصال
تضمین تحویلداردندارد
سرعت و سربارکندتر، سربار بیشترسریع‌تر، سربار کمتر
کاربرد نمونهHTTP، FTP، ایمیلDNS، استریم زنده، بازی آنلاین

کِی از TCP استفاده کنیم؟

وقتی صحت و ترتیب داده حیاتی است، مثل انتقال فایل، وب (HTTP) یا ایمیل که از دست رفتن حتی یک بایت غیرقابل قبول است.

کِی از UDP استفاده کنیم؟

وقتی سرعت و تأخیر کم مهم‌تر از تضمین تحویل کامل است، مثل استریم ویدیو زنده، بازی‌های آنلاین یا DNS.

مثال TCP

# TCP: قبل از ارسال داده Handshake انجام می‌شود
SYN -> SYN-ACK -> ACK
# سپس داده با تضمین ترتیب و تحویل ارسال می‌شود

مثال UDP

# UDP: بدون Handshake، بسته مستقیم ارسال می‌شود
# مناسب DNS Query یا استریم ویدیو زنده
[Datagram] --> بدون تأیید دریافت

اشتباه رایج

اشتباه رایج انتخاب TCP برای همه سناریوها به‌خاطر "قابل اطمینان بودن" است؛ در برنامه‌های Real-time مثل تماس تصویری، سربار تضمین تحویل TCP باعث تأخیر (Latency) بیشتر و کیفیت بدتر نسبت به UDP می‌شود.

جمع‌بندی

برای داده‌ای که باید کامل و به‌ترتیب برسد از TCP و برای سرعت بالا با تحمل از دست رفتن برخی بسته‌ها از UDP استفاده کنید.