شاید شما هم هنگام پیکربندی فایروال یا هنگام کار با یک روتر، گزینه هایی مثل UDP یا TCP دیده باشید. این دو پروتکل برای انواع مختلفی از داده ها کارایی دارند. هر دو پروتکل برای ارسال داده ها در اینترنت و یا شبکه های محلی استفاده میشوند. برای پیکربندی شبکه های سخت افزاری یا نرم افزاری، باید از تفاوت بین این دو پروتکل آگاه بود.
چه چیزهای مشترکی دارند؟
هر دو پروتکل برای ارسال بیتهایی از داده (Packet یا بسته) در اینترنت استفاده میشوند.
هر دوی این پروتکلها در لایهtransport کار میکنند.
هر دو برای استفاده در پروتکل اینترنت (Internet protocol یا IP) ساخته شده اند. به عبارت دیگر، وقتی یک بسته به وسیله UDPیا TCP ارسال میکنید، آن بسته ها به یک IP Address ارسال خواهد شد. عملکرد این بسته ها با هم شباهت زیادی دارد. بسته ها از کامپیوتر مبدأ به روتر واسطه ارسال میشوند و از روتر به سمت مقصد هدایت میشوند.
این دو پروتکل، فقط در اینترنت قابل استفاده نیستند و کاربردهای زیادی دارند. هنگامی که از TCP در پروتکل اینترنت استفاده میکنیم، برای معرفی آن از عبارت TCP/IP استفاده میکنیم و همینطور UDP را UDP/IP مینامیم. البته این اصطلاحات زیاد رایج نیستند.
TCP چگونه کار میکند؟
TCP یا Transmission Control Protocol، یکی از رایجترین پروتکلهایی است که در اینترنت کاربرد زیادی دارد.
وقتی یک صفحه اینترنتی را باز میکنید، کامپیوتر شما بسته های TCP را به وب سرور مقصد میفرستد و از سرور درخواست میکند که صفحه مورد نظر را ارسال کند. وب سرور هم با ارسال بسته های TCP جواب میدهد. این بسته ها را مرورگر وب به هم متصل کرده و به شکل یک صفحه اینترنتی درمیاورد. وقتی روی یک لینک کلیک میکنید، sign in میکنید، کامنت میگذارید و یا هر کار دیگری در فضای اینترنتی انجام میدهید، مرورگر وب شما بسته های TCP را به سرور میفرستد و سرور هم بسته های TCP را برمیگرداند.
TCP ازتباطی یک طرفه نیست. وقتی یک بسته TCP فرستاده میشود، کامپیوتر مقصد در صورت دریافت، بسته هایی جهت تایید دریافت (Acknowledge یا به اختصار Ack) را به سمت مبدأ میفرستد.
این پروتکل ضمانت میکند که با شماره گذاری بسته ها، آنها را به صورت منظم و به ترتیب، تحویل گیرنده دهد. گیرنده با فرستادن پیغامی به فرستنده اعلام میکند که پیام را دریافت کرده است. فرستنده تا وقتی که این پیام را دریافت نکند، مکررا بسته های تکراری را ارسال میکند.
در TCP، روشی هم برای جلوگیری از خطا وجود دارد. به این صورت که بسته هایی همراه با TCP ارسال میشوند که کارشان بررسی از دست نرفتن داده ها یا معیوب نشدن آنها در فاصله بین گیرنده و فرستنده است. دلیل مخدوش نشدن فایلهای دانلودی حتی با وجود قطع و وصل شبکه نیز، همین روش است. البته اگر گیرنده آفلاین باشد، فرستنده منصرف میشود و پیام خطایی با موضوع برقرار نشدن ارتباط با مقصد میدهد.
Process Explorer و بعضی از ابزارهای سیستمی، میتوانند انواع ارتباطاتی که یک برنامه به وجود میاورد را نمایش دهد.در عکس پایین، ارتباط TCP برقرار شده با وب سرورهای مختلف توسط Chrome browser را میبینید.
UDP چگونه کار میکند؟
UDP مخفف User Datagram Protocolاست. دیتاگرام (Datagram) چیزی مثل بسته ای از داده ها است. پروتکل UDP نقریبا مشابه TCP عمل میکند ولی بدون چک کردن خطا. چرا که روش انتقال اطلاعات و ضمانت تحویل که در UDP وجود دارد، سرعت را بسیار کم میکند.
در UDP، بسته ها برای گیرنده، فقط ارسال میشوند. فرستنده برای اطمینان رسیدن بسته اش به مقصد صبر نمیکند و بلافاصله بسته بعدی را ارسال میکند. متاسفانه اگر گیرنده تعدادی از بسته های UDP (دیتاگرام) را دریافت نکند، نمیتواند درخواست کند که دوباره ارسال شود. هیچ ضمانتی برای دریافت قطعی تمام بسته ها وجود ندارد و اگر بسته ای را از دست دهید، هیچ راهی برای ارسال مجدد بسته ها وجود ندارد اما نبودن این ویژگیها سبب میشود که سرعت ارتباط ایده آلی داشته باشیم.
UDP در مواقعی استفاده میشود که سرعت برایمان مهم باشد و تصحیح خطا اهمیتی نداشته باشد. برای مثال، این پروتکل در بازیهای آنلاین و ارتباطات زنده استفاده میشود.
در ارتباطات زنده، اکثرا از UDP استفاده میکنیم. یک ویدئوی آنلاین و زنده را در نظر بگیرید. وقتی ارتباط اینترنتی قطع میشود، تصویر فریز میشود و وقتی که مجددا ارتباط برقرار شد، تصویری که در حال حاضر در حال روی دادن است، پخش میشود و و لحظات از دست رفته را از رد میکند. اگر هم مشکل جزئی قطع ارتباط داشته باشید، شکستگی کوچکی در ویدئوی شما به وجود میاید و برای یک لحظه، تصویر یا صدا از شکل طبیعی خارج میشود.
بازیهای آنلاین نیز به این صورت است. اگر بسته های UDP را از دست بدهید، تا وقتی که مجددا ارتباط برقرار شود، کاراکترهای بازی بی هدف در نقشه راه میروند و بازی بدون شما ادامه پیدا میکند. علت استفاده از UDP در بازیهای آنلاین و حذف روش خطایابی TCP، سرعت دادن به ارتباطات بازی ها و از بین بردن مکث در بازیها است.
حرف آخر
تصویر6 UDP ، بیشتر برای سرورهایی که با تعداد زیادی Client در ارتباط هستند، قابل استفاده است. در حالیکه TCP،بیشتر برای اتصال میان یک سرور و یک Client استفاده میشود.
اینکه یک برنامه کدام یک از پروتکلهای UDP یا TCP را استفاده کند، به نظر سازنده آن مرتبط است. در واقع این مساله به نیازهای برنامه مربوط میشود. بعضی برنامه ها نیاز به تصحیح خطا و قدرت TCP دارند و برخی نیاز به سرعت و سربار نداشتن UDP دارند.
برای درک بهتر مفهوم انتقال بسته ها، میتوانید از یک نرم افزار تحلیل شبکه مثل Wireshark استفاده کنید و انواع مختلف رفت و برگشت بسته ها را ببینید.
اگر برای پیکربندی کردن روتر یا فایروال خود، نمیدانید که یک نرم افزار از UDP یا TCP استفاده میکند، بهتر است گزینه Both را انتخاب کنید تا روتر یا فایروال مورد نظر بتواند هر دو نوع را انجام دهد.