تفاوت TCP و UDP به زبان ساده

تفاوت TCP و UDP به زبان ساده

13 دقیقه

تفاوت TCP و UDP در شیوه انتقال داده است. TCP دریافت داده‌ها را پیگیری می‌کند و آن‌ها را به‌ترتیب در اختیار برنامه می‌گذارد. UDP پیام‌ها را بدون برقراری اتصالِ مشابه TCP می‌فرستد و خودش رسیدن یا ترتیب آن‌ها را تضمین نمی‌کند.

تصور کنید در حال دانلود یک فایل و هم‌زمان در یک تماس تصویری هستید. فایل باید کامل دریافت شود؛ اما در تماس زنده، پخش صدای تازه معمولاً از منتظرماندن برای صدایی که لحظه‌اش گذشته مهم‌تر است. به همین دلیل، انتخاب پروتکل به نیاز برنامه بستگی دارد، نه به اینکه یکی در همه شرایط «بهتر» باشد. در ادامه، مبناتلکام نحوه کار، تفاوت‌ها و کاربرد هر دو را توضیح می‌دهد.

پروتکل TCP چیست و چگونه کار می‌کند؟

TCP مخفف Transmission Control Protocol و یکی از پروتکل‌های لایه انتقال است. دو طرف پیش از تبادل معمول داده، اتصال برقرار می‌کنند. سپس TCP داده‌ها را به‌شکل یک جریان مرتب از بایت‌ها جابه‌جا می‌کند: دریافت را پیگیری می‌کند، داده ازدست‌رفته را تشخیص می‌دهد و برای ارسال دوباره آن تلاش می‌کند. همچنین با توجه به توان گیرنده و وضعیت شبکه، نرخ ارسال را تنظیم می‌کند. این سازوکارها در مشخصات رسمی TCP توضیح داده شده‌اند.

برای این کار، TCP به داده‌ها شمارهٔ ترتیب اختصاص می‌دهد. گیرنده با پیام تأیید دریافت، به فرستنده اعلام می‌کند تا کدام بخش را دریافت کرده و منتظر کدام بخش بعدی است. اگر بخشی تأیید نشود، فرستنده می‌تواند فقدان آن را از پیام‌های تأیید یا پایان زمان انتظار تشخیص دهد و دوباره ارسالش کند. شماره‌ها همچنین کمک می‌کنند داده‌هایی که در مسیر جابه‌جا رسیده‌اند، به‌ترتیب در اختیار برنامه قرار بگیرند. مشخصات TCP سازوکار شماره‌گذاری، تأیید دریافت و ارسال دوباره را شرح می‌دهد.

برای مثال، اگر بخشی از یک فایل در مسیر گم شود، نمی‌توان آن بخش را نادیده گرفت و انتظار داشت فایل نهایی سالم باشد. TCP برای چنین انتقالی مناسب است، چون داده‌ها را کامل و به‌ترتیب به برنامه تحویل می‌دهد. البته اگر ارتباط قطع شود، خود برنامه همچنان باید خطا و ادامه کار را مدیریت کند.

پروتکل TCP چیست و چگونه کار می‌کند؟

مزایای TCP

  • تحویل مرتب داده: برنامه داده‌ها را به همان ترتیب لازم دریافت می‌کند.
  • پیگیری داده ازدست‌رفته: TCP در صورت تشخیص فقدان بخشی از داده، برای ارسال دوباره آن اقدام می‌کند.
  • کنترل جریان: گیرنده اعلام می‌کند چه مقدار داده را می‌تواند دریافت کند تا فرستنده بیش از توان او داده نفرستد.
  • کنترل ازدحام: فرستنده مقدار دادهٔ در حال ارسال را با توجه به وضعیت مسیر شبکه تنظیم می‌کند تا فشار بیش از حد به شبکه وارد نشود. این دو کنترل کار یکسانی انجام نمی‌دهند: اولی به ظرفیت گیرنده و دومی به وضعیت مسیر مربوط است. توضیح IETF درباره سازوکارهای انتقال این تمایز را بیان می‌کند.

معایب TCP

  • زمان لازم برای برقراری اتصال: پیش از ارسال معمول داده، ارتباط باید برقرار شود.
  • انتظار برای بازیابی داده: گم‌شدن بخشی از جریان می‌تواند تحویل بخش‌های بعدی همان جریان را به برنامه عقب بیندازد.
  • سربار سازوکارهای کنترلی: تأیید دریافت و ارسال دوباره برای کاربردی که داده‌های بسیار قدیمی دیگر ارزشی ندارند، همیشه مطلوب نیستند.

این معایب به معنی «کند بودن همیشگی TCP» نیستند. نتیجه واقعی به طراحی برنامه، اندازه انتقال و وضعیت شبکه هم بستگی دارد.

پروتکل UDP چیست و چگونه کار می‌کند؟

UDP مخفف User Datagram Protocol است. در این روش، برنامه داده را به‌صورت پیام‌های مستقل، موسوم به دیتاگرام، می‌فرستد. UDP پیش از ارسال پیام، اتصال برقرار نمی‌کند و خودش تحویل قطعی، ترتیب رسیدن یا ارسال دوباره پیام‌ها را فراهم نمی‌کند. ممکن است یک پیام برسد، گم شود یا پس از پیام بعدی دریافت شود. تعریف رسمی UDP همین شیوه پیام‌محور را شرح می‌دهد.

فرض کنید برنامه‌ای موقعیت بازیکنان را در یک بازی آنلاین ارسال می‌کند. اگر موقعیت مربوط به چند لحظه قبل دیر برسد، ممکن است داده تازه‌تر برای بازی مفیدتر باشد. UDP به برنامه اجازه می‌دهد درباره برخورد با پیام دیررس یا ازدست‌رفته تصمیم بگیرد. البته برنامه‌ای که به بازیابی داده نیاز دارد، باید این قابلیت را خودش یا با یک پروتکلِ ساخته‌شده بر بستر UDP فراهم کند.

پروتکل UDP چیست و چگونه کار می‌کند؟

مزایای UDP

  • شروع ارسال بدون مرحلهٔ برقراری اتصال: برنامه می‌تواند پیام را بدون طی‌کردن مراحل آغاز اتصالِ TCP بفرستد.
  • حفظ مرز پیام‌ها: هر دیتاگرام یک پیام مستقل است؛ برخلاف جریان بایت TCP، برنامه برای تشخیص مرز همان پیام به سازوکار جداگانه نیاز ندارد.
  • اختیار بیشتر برای برنامه: برنامه می‌تواند تصمیم بگیرد کدام داده ارزش انتظار یا ارسال دوباره دارد.

معایب UDP

  • نبود تضمین تحویل و ترتیب در خود UDP: برنامه نمی‌تواند صرفاً با استفاده از UDP فرض کند همه پیام‌ها رسیده‌اند.
  • نیاز به مدیریت قابلیت‌های لازم در لایه بالاتر: اگر بازیابی داده یا کنترل نرخ ارسال لازم باشد، برنامه یا پروتکلِ بالادستی باید آن را انجام دهد.

UDP به معنی مجوز ارسال بی‌محابای داده نیست. راهنمای استفاده از UDP تأکید می‌کند برنامه‌های مبتنی بر آن نیز باید ازدحام شبکه را مدیریت کنند.

تفاوت‌های TCP و UDP چیست؟

برای دیدن تفاوت‌ها در یک نگاه، جدول زیر را ببینید:

ویژگی TCP UDP
شروع ارتباط پیش از تبادل معمول داده، اتصال برقرار می‌کند پیش از ارسال پیام، اتصال برقرار نمی‌کند
شکل داده جریان مرتب بایت‌ها پیام‌های مستقل یا دیتاگرام
داده ازدست‌رفته آن را تشخیص می‌دهد و برای ارسال دوباره تلاش می‌کند خودش آن را دوباره ارسال نمی‌کند
ترتیب تحویل داده را به‌ترتیب در اختیار برنامه می‌گذارد ترتیب رسیدن پیام‌ها را تضمین نمی‌کند
کنترل جریان مقدار ارسال را با توان گیرنده هماهنگ می‌کند سازوکار داخلیِ مشابه TCP ندارد
کنترل ازدحام ارسال را با وضعیت مسیر شبکه تنظیم می‌کند باید در برنامه یا پروتکل بالاتر مدیریت شود

این تفاوت‌ها در همه برنامه‌ها به یک نتیجه یکسان منجر نمی‌شوند. برای انتقال فایل، برنامه باید مطمئن شود دادهٔ لازم بازیابی شده است؛ اما در ارتباط زنده، ممکن است دادهٔ تازه از بازیابی داده‌ای که زمان استفاده‌اش گذشته ارزشمندتر باشد. انتخاب نهایی به این بستگی دارد که برنامه با دادهٔ دیررس یا ازدست‌رفته چه می‌کند.

در نهایت، از نام پروتکل به‌تنهایی نمی‌توان سرعت یا کیفیت نهایی را پیش‌بینی کرد. برای نمونه، QUIC بر بستر UDP کار می‌کند، اما قابلیت‌هایی مانند جریان‌های کنترل‌شده و سازوکارهای لازم برای انتقال قابل‌اعتماد را در لایه خود فراهم می‌سازد. بنابراین «مبتنی بر UDP» لزوماً به معنی «بدون بازیابی داده» نیست. مشخصات QUIC این قابلیت‌ها را شرح می‌دهد.

هر پروتکل کجا استفاده می‌شود؟

  • انتقال فایل و بسیاری از ارتباطات وب: وقتی داده باید کامل برسد، TCP انتخاب رایجی است. اگر بخشی از فایل یا پاسخ یک سرویس ناقص باشد، برنامه معمولاً نمی‌تواند آن را نادیده بگیرد. البته همه ارتباطات وب مبتنی بر TCP نیستند: HTTP/3 از QUIC مبتنی بر UDP استفاده می‌کند. استاندارد HTTP/3 این ساختار را مشخص می‌کند.
  • بازی آنلاین: بعضی داده‌های بازی، مانند موقعیت لحظه‌ای بازیکن، با تأخیر زیاد ارزش خود را از دست می‌دهند؛ داده‌های دیگری، مانند نتیجه خرید یا ثبت وضعیت حساب، باید با اطمینان پردازش شوند. نوع انتقال را سازندگان بازی برای بخش‌های مختلف آن تعیین می‌کنند. پس نمی‌توان گفت «همه بازی‌ها UDP هستند» یا «هر بازی فقط یک پروتکل دارد».
  • تماس صوتی و تصویری: در بخشی از ارتباطات زنده، رسیدن به‌موقع صدا و تصویر اهمیت زیادی دارد. RTP، یکی از پروتکل‌های انتقال رسانه زنده، می‌تواند بر بستر UDP استفاده شود. بااین‌حال، پروتکل دقیق هر تماس به برنامه و شیوه پیاده‌سازی آن بستگی دارد. مشخصات RTP نمونه‌های انتقال آن را توضیح می‌دهد.
  • سامانه نام دامنه یا DNS: این نمونه نشان می‌دهد یک خدمت می‌تواند از هر دو روش استفاده کند. استاندارد انتقال DNS پشتیبانی از TCP و UDP را برای پیاده‌سازی‌های عمومی آن لازم می‌داند.

کلام آخر | TCP یا UDP؟ کدام پروتکل بهتر است؟

اگر برنامه به داده کامل و مرتب نیاز دارد، قابلیت‌های داخلی TCP کار را ساده‌تر می‌کنند. اگر زمان رسیدن هر پیام مهم است و برنامه می‌خواهد خودش درباره پیام‌های دیررس یا ازدست‌رفته تصمیم بگیرد، UDP می‌تواند بستر مناسبی باشد. هیچ‌کدام به‌تنهایی کیفیت اتصال را تضمین نمی‌کنند.

برای استفاده روزمره لازم نیست کاربر پروتکل بازی، تماس یا وب‌سایت را دستی انتخاب کند؛ این تصمیم معمولاً در طراحی همان سرویس گرفته شده است. اگر ارتباط زنده یا انتقال فایل در یک شرکت مدام مختل می‌شود، بررسی پایداری اتصال، تأخیر، پکت‌لاس و ظرفیت شبکه از انتخاب فرضی TCP یا UDP کاربردی‌تر است. برای بررسی اتصال محل کارتان نیز می‌توانید شرایط اینترنت سازمانی مبناتلکام را ببینید.

سوالات متداول در رابطه با تفاوت TCP و UDP

در پایان سوالات شما را پاسخ می‌دهیم:

۱. آیا یک برنامه می‌تواند هم‌زمان از TCP و UDP استفاده کند؟

بله. برنامه می‌تواند برای بخش‌های متفاوت ارتباط خود از هر دو استفاده کند. اینکه کدام داده از کدام مسیر ارسال شود، به طراحی برنامه بستگی دارد.

۲. آیا برنامه می‌تواند بسته‌های گم‌شده در UDP را خودش بازیابی کند؟

بله. UDP خودش پیام گم‌شده را دوباره نمی‌فرستد، اما برنامه یا پروتکل بالاتر می‌تواند فقدان داده را تشخیص دهد و در صورت نیاز آن را بازیابی کند. QUIC نمونه‌ای از پروتکل‌های مبتنی بر UDP با سازوکارهای بازیابی داده است.

۳. آیا UDP ذاتاً از TCP ناامن‌تر است؟

نمی‌توان امنیت را فقط از روی TCP یا UDP بودن ارتباط تعیین کرد. هیچ‌کدام به‌تنهایی جای رمزنگاری و احراز هویت را نمی‌گیرند. برای محافظت از برخی ارتباطات دیتاگرامی نیز پروتکل‌هایی مانند DTLS وجود دارند.

۴. آیا می‌توان پروتکل یک بازی را از تنظیمات مودم تغییر داد؟

معمولاً خیر. بازی و سرور آن تعیین می‌کنند از TCP، UDP یا هر دو استفاده شود. تنظیمات مودم ممکن است بر دسترسی یا عبور ترافیک اثر بگذارد، اما پروتکل طراحی‌شده بازی را به پروتکل دیگری تبدیل نمی‌کند.

۵. آیا پورت‌های TCP و UDP با شمارهٔ یکسان، دو اتصال جداگانه‌اند؟

خودِ پورت «اتصال» نیست. برای مثال، TCP/53 و UDP/53 دو ترکیب متفاوت از پروتکل و شماره پورت هستند. هنگام تنظیم فایروال باید هر دو جزء را بررسی کنید؛ یک قانون برای پورت TCP لزوماً ترافیک UDP با همان شماره را پوشش نمی‌دهد. فهرست رسمی پورت‌های IANA نیز شماره پورت و نوع پروتکل را جداگانه ثبت می‌کند.

فهرست مطالب

    مقالات پیشنهادی

    ثبت دیدگاه

    keyboard_arrow_up
    طراحی و توسعه توسط