TCP بررسی میکند که هر بسته رسیده باشد؛ UDP فقط میفرستد و میگذرد
TCP (Transmission Control Protocol) و UDP (User Datagram Protocol) دو روشی هستند که یک برنامه دادهها را به اینترنت میسپارد: TCP رسیدن داده را تأیید میکند و ترتیب بستهها را حفظ میکند، اما UDP هر بسته را فقط یک بار میفرستد و هیچ بررسیای انجام نمیدهد.
هر دو در لایه انتقال قرار دارند، یک پله بالاتر از IP. IP بسته را به دستگاه درست میرساند؛ TCP یا UDP آن را به برنامه درست روی همان دستگاه میرساند و تعیین میکند اگر چیزی در مسیر گم شد چه اتفاقی بیفتد.
به نظر ما سادهترین تصویر، مقایسهی تماس تلفنی با کارتپستال است. TCP مثل تماس تلفنی است: هر دو طرف اول سلام میکنند و هر چیزی را که طرف مقابل نشنیده باشد تکرار میکنید. UDP مثل یک دسته کارتپستال است: ارزان و سریع، و اگر یکی از آنها از کامیون بیفتد کسی به شما خبر نمیدهد.

- ۲۰ تا ۶۰ بایت
- سرآیند TCPبا گزینهها بزرگتر میشود
- ۸ بایت
- سرآیند UDPهمیشه هماندازه است
- ۳ پیام
- دستدهی TCPSYN، SYN-ACK، ACK
TCP اتصال را با دستدهی سهمرحلهای برقرار میکند؛ UDP این مرحله را ندارد
TCP اتصالگرا است: تا وقتی دو طرف سه پیام کوتاه رد و بدل نکرده باشند، چیزی ارسال نمیشود و در پایان هم اتصال با یک رد و بدل پیام دیگر بسته میشود.
UDP بدون اتصال کار میکند. اولین بسته همان داده است. نه مرحلهی راهاندازی وجود دارد، نه مرحلهی بستن، و هیچیک از دو طرف بین بستهها وضعیتی را نگه نمیدارد. به همین دلیل UDP میتواند یک بسته را به چند گیرنده همزمان بفرستد، اما TCP نمیتواند.
SYN
دستگاه شما یک پیام همگامسازی به سرور میفرستد: «میخواهم ارتباط بگیرم، این شمارهی شروع من است.»
SYN-ACK
سرور با پیام همگامسازی و تأیید پاسخ میدهد: «دریافت شد، این هم شمارهی من.»
ACK
دستگاه شما دریافت را تأیید میکند. از همین لحظه TCP شروع به ارسال دادهی اصلی میکند.
FIN و ACK برای بستن اتصال
وقتی هر یک از دو طرف کارش تمام شود، FIN میفرستد و طرف مقابل آن را تأیید میکند. سپس همین روند در جهت عکس تکرار میشود. به این روش، بستن چهارمرحلهای میگویند.
TCP بستههای گمشده را دوباره میفرستد و ترتیب را حفظ میکند؛ UDP جای خالی را رها میکند
TCP با شمارهگذاری بستهها و منتظر ماندن برای تأیید دریافت، تضمین میکند که هر بایت یک بار و به ترتیب برسد. UDP یک مقدار کنترلی (checksum) دارد تا بستهی آسیبدیده را تشخیص دهد و بعد آن را کنار میگذارد.
وقتی تأییدیهای برنمیگردد، TCP بسته را دوباره میفرستد. همچنین وقتی شبکه شلوغ به نظر میرسد (کنترل ازدحام) یا گیرنده عقب میافتد (کنترل جریان)، سرعتش را کم میکند. از دید برنامه، TCP مثل یک جریان پیوسته از بایتها دیده میشود.
UDP هیچکدام از این کارها را انجام نمیدهد. هر بسته یک پیام مستقل است. اگر بسته ۷ بعد از بسته ۸ برسد یا اصلاً نرسد، برنامه همان چیزی را که رسیده دریافت میکند و باید خودش با آن کنار بیاید. در یک تماس صوتی این فقط یک خشخش کوچک است؛ اما در انتقال بانکی فاجعه میشود و برای همین بانکها هرگز از UDP ساده استفاده نمیکنند.
UDP سریعتر است چون هدرش ۸ بایت است و منتظر هیچچیز نمیماند
UDP به دو دلیل از نظر سرعت جلوتر است: سرآیند ۸ بایتی در برابر ۲۰ تا ۶۰ بایت در TCP، و نداشتن مکث برای دستدهی، تأییدیه یا ارسال مجدد.
در یک اتصال سیمی سالم، تفاوت هر بسته کم است. در یک اتصال Wi-Fi که بسته از دست میدهد، تفاوت زیاد است، چون TCP برای بازیابی هر بسته گمشده میایستد، اما UDP به ارسال ادامه میدهد. ماجرای واقعی «سرعت TCP در مقابل UDP» همین است: یک سیم یکسان، اما رفتار متفاوت هنگام از دست رفتن بستهها.
| TCP | UDP | |
|---|---|---|
| اتصال | ابتدا دستدهی سهمرحلهای | ندارد؛ اولین بسته همان داده است |
| تحویل | تضمینشده، با تأیید دریافت | تلاش در حد امکان، بدون تأیید دریافت |
| بستههای گمشده | ارسال مجدد | حذف میشوند |
| ترتیب | حفظ میشود | تضمین نمیشود |
| کنترل جریان و ازدحام | بله | خیر |
| اندازه سرآیند | ۲۰ تا ۶۰ بایت | ۸ بایت |
| مدل داده | جریان پیوسته بایت | پیامهای جداگانه |
| پخش همگانی / پخش گروهی | خیر | بله |
| برنامههای رایج | HTTP، HTTPS، FTP، SMTP | DNS، DHCP، VoIP، پخش زنده |
شماره پورتهای TCP و UDP یکسان است؛ آنچه فرق دارد خود پروتکل است
پورت عددی است که به دستگاه گیرنده میگوید یک بسته برای کدام برنامه است. TCP و UDP هرکدام فهرست پورتهای جداگانه خودشان را دارند، پس پورت ۸۰ در TCP و پورت ۸۰ در UDP دو در متفاوت هستند.
به همین دلیل در قانون روتر باید هم پورت و هم پروتکل مشخص شود. بعضی سرویسها یک شماره را روی هر دو باز میکنند: برای مثال DNS برای جستجوهای معمولی روی UDP پاسخ میدهد و برای پاسخهای بزرگ روی TCP. در سرآیند IP یک شماره پروتکل جداگانه وجود دارد که پیش از بررسی پورت، به دستگاه گیرنده میگوید بسته را به TCP بدهد یا به UDP.
روی TCP اجرا میشود
- صفحههای وب (HTTP و HTTPS)
- ارسال ایمیل (SMTP)
- انتقال فایل (FTP)
- هر چیزی که باید تکتک بایتهایش به مقصد برسد
روی UDP اجرا میشود
- درخواستهای DNS
- DHCP (دریافت آدرس IP)
- تماسهای صوتی و تصویری (VoIP)
- پخش زنده و بیشتر بازیهای آنلاین
وقتی بستهی دیررسیده فایدهای ندارد از UDP استفاده کنید؛ وقتی از دست رفتن بسته قابل قبول نیست از TCP
برای هر چیزی که زنده است UDP را انتخاب کنید، چون تا زمانی که TCP بسته صوتی گمشده را دوباره بفرستد، گفتگو جلوتر رفته است. برای هر چیزی که باید کامل برسد، مثل یک صفحه وب، یک دانلود یا یک ایمیل، TCP را انتخاب کنید.
بازیها روشنترین نمونهاند. بهروزرسانی موقعیتی که ۲۰۰ میلیثانیه پیش ثبت شده دیگر ارزشی ندارد، برای همین موتورهای بازی دادهها را با UDP میفرستند و فقط از جدیدترین بسته استفاده میکنند. تماسهای تصویری هم همین کار را میکنند و برای همین بهجای یک توقف طولانی، فقط یک اختلال کوتاه میشنوید.
دانلودها، ورود به حساب و پرداختها برعکساند. یک بایت گمشده میتواند فایل را خراب کند یا ورود را ناموفق کند، پس تحویل کندتر اما کنترلشدهی TCP تنها انتخاب منطقی است.
VPN با UDP یا TCP: پیشفرض UDP است و در جایی که VPNهای دیگر متوقف میشوند، مسیری شبیه TCP
بیشتر تونلهای VPN روی UDP اجرا میشوند، چون سریعتر است و چون ترافیک داخل تونل هرجا لازم باشد از قبل TCP است. تونل در حالت TCP بیشتر یک راه جایگزین برای شبکههایی است که فقط ترافیک شبیه وب را عبور میدهند.
اجرای TCP داخل تونل TCP کند است: هر دو لایه همان بستهی گمشده را دوباره میفرستند و هر دو همزمان سرعت را کم میکنند. این همان مصالحهی «OpenVPN UDP در برابر TCP» است که در برنامههای قدیمیتر میبینید و از شما میخواهند یکی را انتخاب کنید. UDP برای سرعت، TCP وقتی UDP وصل نمیشود.
Teal VPN که Fxolio LLC ساخته، یک طرح رایگان (۵۰۰ مگابایت در روز) و یک طرح Pro دارد، با برنامههایی برای Android، Windows، Mac، Linux، Android TV و Chromebook. برنامه از شما نمیخواهد TCP یا UDP را انتخاب کنید. Teal Secure برای هر اتصال و در هر طرح فعال است: ترافیک مبهمسازی میشود و وقتی شبکهای یک مسیر را میبندد، برنامه خودش مسیرهای دیگر را امتحان میکند. هیچ VPNای تضمین نمیکند که روی هر شبکهای وصل شود، پس پیش از سفر قوانین محلی را بررسی کنید. پس از اتصال، تست نشت Teal VPN در tealvpn.com/ip-leak-test نشان میدهد کدام سرورهای DNS به جستجوهای UDP شما پاسخ میدهند.

HTTP روی TCP کار میکند و ICMP نه TCP است و نه UDP
HTTP رقیب TCP یا UDP نیست، بلکه لایهای بالاتر از آنهاست: HTTP کلاسیک و HTTPS داخل TCP حرکت میکنند، در حالی که HTTP/3 جدیدتر داخل UDP حرکت میکند و قابلیت اطمینان خودش را روی آن میسازد.
ICMP حالتی متفاوت دارد. کنار TCP و UDP قرار میگیرد، نه بالاتر از آنها، اصلاً پورت ندارد و پیامهای کنترلی مثل پیامهایی را که ping و traceroute استفاده میکنند حمل میکند. پس «tcp vs udp vs icmp» در واقع سه کار متفاوت است: رساندن مطمئن داده، رساندن سریع داده و گزارش وضعیت خود شبکه.
ادامه مطلب
منابع
- GeeksforGeeks: TCP در برابر UDP
- IPCisco: TCP در برابر UDP، پورتها و هدرها
- AVG: تفاوتهای اصلی TCP و UDP و کاربردهای آنها
برای Teal کمک لازم دارید؟ با پشتیبانی تماس بگیرید.
پرسشها
آیا UDP از TCP سریعتر است؟
بله. UDP هدر ۸ بایتی دارد و دستدهی (handshake) و ارسال مجدد ندارد؛ برای همین سربار کمتری دارد و هیچوقت متوقف نمیشود. روی یک اتصال سالم تفاوت کم است، اما روی اتصالی که بسته گم میکند زیاد میشود.
کدام امنتر است، TCP یا UDP؟
هیچکدام بهتنهایی چیزی را رمزگذاری نمیکنند. امنیت از لایه بالاتر میآید، مثل HTTPS روی TCP یا تونل VPN روی UDP. جعل کردن TCP بهخاطر دستدهی سختتر است، اما این یک ویژگی برای قابلاعتماد بودن انتقال است، نه رمزگذاری.
آیا VPN از TCP استفاده میکند یا UDP؟
بیشتر پروتکلهای VPN برای سرعت، UDP را بهعنوان حالت پیشفرض دارند. بعضی برنامهها یک حالت TCP هم دارند، برای شبکههایی که UDP را محدود میکنند. برنامه Teal VPN مسیر را خودش انتخاب میکند و وقتی یکی از مسیرها از کار بیفتد، به مسیر دیگر میرود. این توضیح مربوط به وضعیت نوامبر ۲۰۲۶ است.
OpenVPN با UDP یا TCP: کدام را انتخاب کنم؟
UDP را انتخاب کنید، مگر اینکه وصل نشود. حالت TCP روی شبکههای سختگیرتر کار میکند اما کندتر است، چون وقتی یک بسته گم شود، TCP داخل TCP ارسال مجدد را دو برابر میکند.
آیا میتوان از UDP برای انتقال فایل استفاده کرد؟
فقط اگر برنامه خودش بررسیهای اضافهای انجام دهد. UDP ساده بستههای گمشده را رها میکند و در نتیجه فایل ناقص به دست میرسد. به همین دلیل FTP و بیشتر ابزارهای دانلود از TCP استفاده میکنند.
آیا TCP و UDP از پورتهای یکسانی استفاده میکنند؟
شماره پورتها در یک محدوده هستند، اما هر پروتکل مجموعهی جداگانهی خودش را دارد؛ بنابراین پورت ۸۰ در TCP و پورت ۸۰ در UDP از هم جدا هستند. قانون در روتر هم شمارهی پورت را لازم دارد و هم پروتکل را.
چرا بازیها از UDP استفاده میکنند؟
چون بهروزرسانی قدیمیِ موقعیت دیگر به کاری نمیآید. UDP به جای اینکه برای ارسال دوبارهی بستهی قبلی صبر کند، جدیدترین بسته را بلافاصله میرساند و بازی روان میماند.