ProxynetProxynet

تفاوت TCP و UDP چیست و هرکدام کجا به کار می‌رود؟

تاریخ انتشار:

13 دقیقه مطالعه

Acar Diveroli
نویسنده: Acar Diveroli
دو مسیر جریان داده: بسته‌های تأییدشده در مسیر TCP و بسته‌های سریع و فاصله‌دار در مسیر UDP

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

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

TCP و UDP چیستند؟

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

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

  • TCP (Transmission Control Protocol): بر رساندن کامل و به‌ترتیب داده تمرکز دارد. تعریف کنونی آن در ⁦RFC 9293⁩ از IETF آمده است.
  • UDP (User Datagram Protocol): بر فرستادن داده با کمترین انتظار تمرکز دارد. تعریف آن در ⁦RFC 768⁩ آمده است؛ متنی کوتاه در سه صفحه.

هر دو روی همان اینترنت، همان کابل‌ها و همان مودم کار می‌کنند. تفاوت در شیوه فرستادن بسته‌هاست.

TCP چگونه کار می‌کند؟

قاعده اصلی TCP این است: تا مطمئن نشود هرچه فرستاده رسیده، جلو نمی‌رود. این کار را در چهار گام انجام می‌دهد.

  1. نخست اتصال برقرار می‌شود. پیش از فرستادن داده، دو رایانه سه پیام کوتاه با هم عوض می‌کنند: «می‌خواهم وصل شوم»، «باشد، آماده‌ام»، «من هم آماده‌ام». به این دست‌دادن سه‌مرحله‌ای می‌گویند. تا این پیام‌ها تمام نشوند داده اصلی راه نمی‌افتد.
  2. بسته‌ها شماره می‌خورند. به هر بسته یک شماره ترتیب داده می‌شود. حتی اگر طرف مقابل بسته‌ها را جابه‌جا دریافت کند، با این شماره‌ها آن‌ها را مرتب می‌کند.
  3. برای هر بسته منتظر تأیید می‌ماند. طرف مقابل تأییدی از این دست می‌فرستد: «همه‌چیز را تا این شماره گرفتم». فرستنده منتظر این تأیید می‌ماند.
  4. بسته بی‌تأیید دوباره فرستاده می‌شود. اگر در زمان مشخصی تأیید نرسد، TCP بسته را گم‌شده می‌داند و دوباره می‌فرستد. اگر شبکه شلوغ باشد سرعت فرستادن را هم کم می‌کند.

در نتیجه پرونده‌ای که با TCP فرستاده می‌شود یا کامل می‌رسد یا اصلاً نمی‌رسد. نیمی از یک صفحه وب یا ایمیلی با چند حرف کم دریافت نمی‌کنید. بهای این کار زمان است: هر انتظار برای تأیید و هر ارسال دوباره چند میلی‌ثانیه می‌افزاید.

UDP چگونه کار می‌کند؟

قاعده UDP بسیار ساده‌تر است: بسته را بفرست و سراغ بعدی برو.

  1. اتصالی برقرار نمی‌شود. دست‌دادنی در کار نیست و نخستین بسته بی‌درنگ راه می‌افتد.
  2. منتظر تأیید نمی‌ماند. اینکه طرف مقابل بسته را گرفته یا نه برای UDP مهم نیست.
  3. بسته گم‌شده دوباره فرستاده نمی‌شود. بسته‌ای که در راه گم شود گم‌شده می‌ماند.
  4. ترتیب تضمین نمی‌شود. بسته‌ها ممکن است جابه‌جا برسند و UDP آن‌ها را مرتب نمی‌کند.

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

مقایسه TCP و UDP

ویژگیTCPUDP
برقراری اتصالپیش از فرستادن داده دست‌دادن انجام می‌دهدبی‌درنگ فرستادن را آغاز می‌کند
تأیید تحویلرسیدن هر بسته را بررسی می‌کندبررسی نمی‌کند
بسته گم‌شدهدوباره می‌فرستددوباره نمی‌فرستد
ترتیب بسته‌هابه ترتیب درست تحویل می‌دهدترتیب را تضمین نمی‌کند
تأخیربه دلیل تأییدها و ارسال دوباره بیشترکمتر
هنگام شلوغی شبکهسرعتش را خودش کم می‌کندبا همان سرعت ادامه می‌دهد
اطلاعات افزوده در هر بستهبیشترکمتر
مناسب برایهر کاری که دقت در آن مهم استارتباط لحظه‌ای، پرس‌وجوهای کوتاه
نمونه‌های روزمرهصفحه وب، ایمیل، دانلود پرونده، پیام‌رسانیبازی آنلاین، تماس تصویری، پخش زنده، DNS

نتیجه جدول این است: TCP صرفاً «کند» و UDP صرفاً «سریع» نیست. هر کدام به پرسش متفاوتی پاسخ می‌دهد. TCP برای کارهایی است که به پرسش «آیا داده باید کامل برسد؟» پاسخ مثبت می‌دهند و UDP برای کارهایی که به پرسش «آیا داده‌ای که دیر برسد هنوز به کار می‌آید؟» پاسخ منفی می‌دهند.

در زندگی روزمره کدام به کار می‌رود؟

کارهایی که TCP را به کار می‌برند:

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

کارهایی که UDP را به کار می‌برند:

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

اتصال‌های تازه‌تر وب: نسخه تازه پروتکل وب، ⁦HTTP/3⁩، روی پروتکلی به نام QUIC کار می‌کند و بسته‌های QUIC با UDP جابه‌جا می‌شوند. ⁦RFC 9000⁩ از IETF پروتکل QUIC را پروتکل انتقالی «بر پایه UDP» می‌نامد. QUIC مرتب‌سازی و ارسال دوباره‌ای را که TCP فراهم می‌کند خودش انجام می‌دهد. پس برخی صفحه‌هایی که امروز باز می‌کنید از راه UDP می‌آیند و باز هم کامل می‌رسند.

چرا بازی‌ها UDP را به کار می‌برند؟

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

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

سه اصطلاحی که در بازی‌ها زیاد می‌شنوید مستقیم به این تفاوت مربوط‌اند:

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

علت‌ها و راه‌حل‌های این مشکلات را در رفع پینگ بالا و از دست رفتن بسته در بازی‌ها توضیح داده‌ایم. نمونه‌ای از اینکه چرا بازیکنان از پروکسی استفاده می‌کنند در چرا بازیکنان Knight Online از پروکسی استفاده می‌کنند آمده است.

پروکسی و UDP: کدام پروکسی UDP را جابه‌جا می‌کند؟

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

نوع پروکسیTCPUDPمناسب برای
پروکسی HTTP / HTTPSبلهخیرسایت‌ها، مرورگرها، بیشتر برنامه‌ها
پروکسی SOCKS5بلهبله (اگر سرور و برنامه از UDP پشتیبانی کنند)بازی، تماس تصویری، برنامه‌های ارتباط لحظه‌ای

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

تفاوت دو نوع را در تفاوت پروکسی SOCKS و HTTP: کدام را انتخاب کنیم؟ و جزئیات SOCKS5 را در پروکسی SOCKS5: چطور کار می‌کند و چه فرقی دارد توضیح داده‌ایم. گزینه‌های ویژه بازی را در صفحه پروکسی بازی و گزینه‌های پخش زنده را در صفحه پروکسی استریم می‌یابید.

پورت چیست و «باز کردن پورت TCP/UDP» یعنی چه؟

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

پورت‌ها برای TCP و UDP جداگانه شمرده می‌شوند. به همین دلیل در راهنماهای راه‌اندازی بازی جمله‌هایی مانند «پورت TCP شماره X و پورت UDP شماره Y را باز کنید» می‌بینید. معنایش این است: مودم شما به‌طور پیش‌فرض اتصال‌های بیرونی را به درون راه نمی‌دهد، اما برخی بازی‌ها و برنامه‌ها می‌خواهند اتصال بیرونی بپذیرند. «باز کردن پورت» یعنی به مودم بگویید «بسته‌هایی که به این شماره می‌رسند را به این رایانه بفرست». این تنظیم در رابط مودم معمولاً هدایت پورت (Port Forwarding) نام دارد.

هنگام باز کردن پورت به این نکته‌ها توجه کنید:

  • فقط پورت لازم را باز کنید. پورت و پروتکلی را که صفحه پشتیبانی رسمی بازی گفته به کار ببرید.
  • پروتکل درست را انتخاب کنید. اگر راهنما UDP گفته، باز کردن TCP کمکی نمی‌کند؛ اگر «هر دو» گفته، دو قاعده بیفزایید.
  • هدایت‌هایی را که به کار نمی‌برید پاک کنید. پورت‌های باز بی‌دلیل خطر بی‌جا می‌سازند.
  • فایروال را خاموش نکنید. به‌جای خاموش کردن کامل فایروال برای حل مشکل، فقط به همان برنامه اجازه دهید. کار فایروال را در پروکسی و فایروال: تفاوت در چیست؟ توضیح داده‌ایم.

باورهای نادرست رایج

  • «UDP همیشه سریع‌تر است.» UDP کمتر منتظر می‌ماند، اما سرعت دانلود را ظرفیت اتصال اینترنت شما تعیین می‌کند. فرستادن پرونده بزرگ با UDP آن را سریع‌تر دانلود نمی‌کند؛ خود برنامه باید بخش‌های کم را جمع کند.
  • «TCP امن‌تر است.» TCP کامل رسیدن داده را تضمین می‌کند اما آن را رمزگذاری نمی‌کند. رمزگذاری کار لایه‌های بالاتر مانند HTTPS است. QUIC که روی UDP کار می‌کند هم رمزگذاری‌شده است.
  • «UDP قابل اعتماد نیست و نباید به کار رود.» پذیرفتن گم شدن داده در UDP عیب نیست بلکه انتخابی آگاهانه است. در کارهایی مانند تماس تصویری و بازی، انتخاب درست همین است.
  • «اگر پینگ بازی بالاست باید پروتکل را عوض کرد.» بازیکن تصمیم نمی‌گیرد بازی کدام پروتکل را به کار ببرد. پینگ را فاصله تا سرور، شلوغی شبکه و کیفیت اتصال تعیین می‌کند.

راهنمای انتخاب

نیاز شماکدام پروتکل و چه کنید؟
باز کردن سایت‌ها، دانلود پروندهTCP (یا QUIC همراه ⁦HTTP/3⁩)؛ پروکسی HTTP یا HTTPS کافی است
بازی آنلاینحرکت بازی UDP است؛ پروکسی SOCKS5 با پشتیبانی UDP یا پروکسی بازی
تماس تصویریUDP؛ اگر پروکسی به کار می‌برید، پشتیبانی UDP را بررسی کنید
جهش و لرزش در بازیاز دست رفتن بسته و پینگ را بسنجید، اتصالی نزدیک به سرور انتخاب کنید
بازی می‌گوید «پورت را باز کنید»پورت و پروتکل صفحه رسمی را در مودم فقط برای همان رایانه هدایت کنید
با پروکسی صفحه ورود باز می‌شود اما بازی قطع می‌شودپروکسی HTTP پروتکل UDP را جابه‌جا نمی‌کند؛ به SOCKS5 بروید

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

TCP بهتر است یا UDP؟

هر کدام برای کار متفاوتی ساخته شده‌اند. TCP وقتی مناسب است که داده باید کامل برسد و UDP برای کارهای لحظه‌ای که تأخیر در آن‌ها مهم‌تر از گم شدن داده است. بیشتر برنامه‌ها هر دو را به کار می‌برند.

از کجا بدانم برنامه‌ای TCP به کار می‌برد یا UDP؟

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

اگر در برنامه‌ای که UDP به کار می‌برد داده گم شود چه می‌شود؟

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

آیا می‌توانم با پروکسی HTTP بازی کنم؟

اگر ورود و گفت‌وگوی بازی TCP به کار ببرند، این بخش‌ها ممکن است کار کنند. اما اگر حرکت و موقعیت بازی با UDP جابه‌جا شود، پروکسی HTTP نمی‌تواند این ترافیک را عبور دهد. برای بازی پروکسی SOCKS5 با پشتیبانی UDP یا پروکسی بازی به کار ببرید.

آیا باز کردن پورت امن است؟

اگر فقط پورت لازم را با پروتکل درست و برای رایانه درست باز کنید، خطر کم است. باز کردن پورت‌های بی‌نیاز یا بازه‌های گسترده دری برای اتصال‌های ناخواسته بیرونی باز می‌گذارد. هدایت‌هایی را که به کار نمی‌برید پاک کنید.

چرا DNS از UDP استفاده می‌کند؟

پرس‌وجوی DNS که نام سایت را به نشانی تبدیل می‌کند بسیار کوتاه است و پاسخش هم کوتاه است. برقراری اتصال بیشتر از خود پرس‌وجو طول می‌کشید. اگر پاسخ نیاید، فرستادن دوباره پرس‌وجو سریع‌تر است. در پاسخ‌های بزرگ، DNS می‌تواند به TCP هم برود.

خلاصه

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

پرسش از ChatGPTپرسش از Claude