تفاوت پروتکل‌های TCP و UDP چیست

سه‌شنبه ۲۱ اردیبهشت ۱۴۰۰ - ۱۳:۰۰
مطالعه 8 دقیقه
احتمالاً هنگام تنظیم پورت‌فورواردینگ در روتر یا هنگام پیکربندی نرم‌افزار فایروال به TCP و UDP برخورد کرده‌اید؛ اما آیا می‌دانید این دو پروتکل چه هستند و چه تفاوت‌هایی دارند؟
تبلیغات

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

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

ویژگی‌های پروتکل‌های TCP و UDP 

هنگامی‌ که کامپیوتری در نیویورک می‌خواهد داده‌ای را به کامپیوتری در تهران ارسال کند، باید آدرس IP کامپیوتر مقصد (کامپیوتری که در تهران است) را بداند. این اطلاعات اغلب از طریق دو روش UDP و TCP ارسال می‌شوند. TCP و UDP پروتکل‌هایی هستند که برای ارسال بیت‌های داده‌ها یا همان بسته‌ها از طریق اینترنت از آن‌ها استفاده می‌شود. هر دو پروتکل به پروتکل IP وابسته هستند؛ به عبارت دیگر، فرقی نمی‌کند شما یک بسته را از طریق TCP یا UDP ارسال کنید، درهرصورت این بسته به یک آدرس IP ارسال می‌شود.

پروتکل‌ TCP

با استفاده از پروتکل کنترل انتقال (TCP)، کامپیوتر ارسال‌کننده‌ی داده، مستقیماً به کامپیوتری که در حال ارسال داده به آن است متصل می‌شود و تا مدتی که انتقال صورت می‌گیرد به آن متصل می‌ماند. با کمک این روش این دو کامپیوتر می‌توانند پس از تضمین ورود داده‌ها به‌صورت ایمن و صحیح، اتصال را قطع کنند. این روش انتقال داده‌ها، سریع‌تر و مطمئن‌تر است؛ اما بار بیشتری را به کامپیوتر وارد می‌کند زیرا مجبور است اتصال و داده‌های موجود در آن را کنترل کند. برای مثال فرض کنید که تلفن را برداشته‌اید و با دوستتان تماس گرفته‌اید؛ پس از اتمام مکالمه هر دو‌ی شما تلفن را قطع و اتصال را آزاد می‌کنید.

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

  • سفارش بسته‌ها با شماره‌گذاری آن‌ها
  • بررسی خطا با فرستادن پاسخ توسط گیرنده به فرستنده مبنی بر اینکه پیام را دریافت کرده است.

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

مرورگر کروم با ارتباطات باز TCP به انواع سرورهای وب

پروتکل‌های UDP 

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

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

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

استفاده از UDP در بازی‌های آنلاین

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

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

پورت‌ TCP یا UDP

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

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

پورت‌های TCP و UDP nv آدرس IP

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

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

از طرف دیگر اگر یک کاربر از راه دور باشید که می‌خواهد به یک سرور وب متصل بشود، این موضوع برعکس می‌شود؛ مرورگر وب شما یک پورت TCP تصادفی را از طیف خاصی از شماره‌ی پورت‌ها انتخاب و سعی می‌کند به پورت ۸۰ در آدرس IP سرور وب متصل شود. وقتی اتصال برقرار شد، مرورگر وب درخواست را برای یک صفحه‌‌ی وب خاص ارسال می‌کند و آن را از سرور وب دریافت می‌کند؛ پس از این هر دو کامپیوتر اتصال را قطع خواهند کرد.

اما چگونه می‌توانید یک سرور FTP را (که به شما اجازه می‌دهد فایل‌ها را از رایانه‌های راه دور و در همان سرور وب منتقل و دریافت کنید) اجرا کنید؟ سرورهای FTP از پورت‌های TCP 20 و TCP 21 برای ارسال و دریافت اطلاعات استفاده می‌کنند، بنابراین شما هیچ کشمکشی با وب سرور در حال اجرا روی پورت TCP 80 نخواهید داشت. درنتیجه هنگامی که برنامه‌ی سرور FTP اجرا می‌شود، خود را به پورت‌های TCP 20 و TCP 21 متصل می‌کند و برای ارسال و دریافت داده‌ها، منتظر اتصال می‌ماند.

استفاده از پروتکل‌ها

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

 ابزار تجزیه و تحلیل شبکه Wireshark

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

تبلیغات
داغ‌ترین مطالب روز

نظرات

تبلیغات