زمانی که از VPNها مانند OpenVPN یا ChitaVPN استفاده میکنید، به طور حتم با آپشنی که به شما اجازه میدهد تا مابین TCP و UDP انتخاب نمایید، برخورد داشتهاید. شاید برایتان سوال پیش آمده باشد که این دو گزینه چه ویژگیو چه کاربردهایی دارند و در صورت انتخاب هر کدام از آنها چه مزایایی در اختیار شما قرار میگیرد.
اگر پاسخ شما مثبت است، بهترین جا برای یافتن پاسخ به سوالاتتان در اینجا قرار دارد.
TCP و UDP چیست و چگونه کار میکنند؟
TCP یا پروتکل کنترل انتقال (Transmission Control Protocol) و UDP یا پروتکل دیتاگرام کاربر (User Datagram Protocol) پروتکلهای شبکه هستند که هدفشان انتقال پاکتهای دیتا (Data Packets) هستند. اگر شما مطمئن نیستید که پاکت دیتا چیست باید گفت که آنها هر نوع از دیتا هستند که از طریق وب منتقل میشود مانند ایمیل، پیام، درخواست اتصال و غیره.
TCP و UDP بر روی بستر پروتکل اینترنت یا همان IP کار میکنند و آنها پورتهای متفاوتی را بر روی دستگاه شما برای انتقال پاکتهای دیتا به روتر درست استفاده مینمایند. در کنار آنها همچنین پاکتها را به آدرس IP گیرنده ارسال میکنند.
برخی ممکن است که به شما بگویند TCP و UDP تنها پروتکلهای شبکه هستند، اما صحیح نیست. در واقع به طور مثال ICMP یا پروتکل پیام کنترل اینترنت (Internet Control Message Protocol) هم جزئی از پروتکلها میباشد اما دو موردی که ما بررسی میکنیم بیشترین استفاده را دارند.
حال میخواهیم تا هر پروتکل را جداگانه مورد بررسی قرار بدهیم.
TCP
از بین این دو پروتکل در واقع میتوان گفت که TCP بیشتر مورد استفاده قرار میگیرد. پروتکل بر اساس ارتباط دو جانبه فعال بوده و پاکتهای دیتا را مابین مرورگر شما و وب سرور وبسایت جابجا مینماید.
اگر بخواهیم به شکلی دقیق آن را بیان کنیم میتوان گفت زمانی که شما به یک وبسایت متصل میشوید، دستگاه یا همان دیوایس (Device) شما درخواست پاکتهای TCP را به وب سرور مناسب میفرستد. سرور با پاکتهای دیتا خود پاسخ TCP را میدهد که مرورگر شما آنها را در کنار یکدیگر قرار داده تا وبسایت را بر روی صفحه شما نمایش بدهد.
هر زمان که شما به یک وبسایت مراجعه میکنید یا بر روی یک لینک بر روی وب کلیک مینمایید، این پروسه تکرار میشود.
توجه داشته باشید تفاوت در آن است که، مرورگر پاکتهای درخواست را میفرستد تا “درخواست” دیتا را از وب سرور انجام دهد. در عوض، سرور به درخواستها با پاکتهای دیتا پاسخ میدهد. این دو موضوع رو با یکدیگر اشتباه نگیرید چون دارای تفاوت هستند.
موارد دیگری که خوب است تا درباره TCP بدانید:
تمامی پاکتهای خود را شمارهگذاری کرده و آنها را به ترتیب ارسال میکند.
زمانی که یک پاکت دیتا را با موفقیت ارسال مینماید، گیرنده یک تصدیق (Acknowledgement) به فرستنده ارسال میکند. اگر تصدیق دریافت نگردد، آن پاکت دیتا گمشده در نظر گرفته میشود. و دوباره ارسال صورت میپذیرد.
تمامی پاکتهای دیتا به دقت چک شده تا خطا (error) و خرابی (corruption) وجود نداشته باشد. همچنین، آنها را دنبال میکند تا اطمینان حاصل گردد که هیچ اطلاعاتی در ضمن انتقال گم نشده است. با توجه به آن، تقریبا هر فایلی که شما دانلود میکنید دارای دقت بالا است هر چند اگر مشکلات اتصال (connectivity issues) داشته باشید.
اگر TCP نتواند یک اتصال را با وب سرور به دلیل آنکه آفلاین است، برقرار نماید، بعد از چند تلاش توقف میکند. به همین دلیل است که شما پیغام “این سایت در دسترس نمیباشد” یا “This site can’t be reached” را دریافت میکنید.
UDP
تفاوت اصلی مابین TCP و UDP آن است که UDP بسیار سبکتر عمل میکند. اما چرا؟ به خاطر آنکه قابلیت حفظ ارتباط در اولویت اصلی قرار ندارد. متفاوت از آنچه که درباره TCP گفتیم، این پروتکل تنها ارتباط یک طرفه دارد. پاکتها را به گیرنده میفرستد اما چک نمیکند تا آنها با موفقیت به مقصد رسیده رسیده باشند. به همین دلیل این پروتکل موارد زیر را نیاز ندارد:
- نیاز به هرگونه تصدیق یا acknowledgement
- اعمال هرگونه چک کردن خطا error-checking
- تعداد پاکتها
- درخواست هرگونه بازارسال
به هر روی، اگر گیرنده (recipient) تعدادی از پاکتهای یودیپی را دریافت نکند، امکان بازیابی آنها وجود نخواهد داشت. به این دلیل است که این پروتکل اغلب برای بازی کردن (gaming)، ویدیو کنفرانس (video Conferencing) و پخش زنده (broadcast) مورد استفاده قرار میگیرد.
به طور مثال، اگر شما تعدادی از پاکتهای پروتکل را در بازی آنلاین از دست بدهید، ممکن است چیزهایی مثل پرش در هنگام راه رفتن در نقشه بازی، شلیک شدن چند گلوله در ازای یک بار کلیک و گیر کردن چند لحظهای را تجربه نمایید.
قطعا این موارد یک تجربه ایدهآل را در اختیار شما قرار نمیدهد اما در مقابل TCP که منجر به فریز شدن و گیر کردن کامل در هنگام بازی آنلاین میشود، سناریو جذابتری است.
مقایسه TCP و UDP در یک نگاه
در اینجا نگاهی سریع به تفاوتهای اصلی موجود مابین این دو پروتکل میپردازیم.
UDP | TCP | |
سرعت (Speed) | سریع | آرام |
قابلیت اطمینان (Reliability) | کم | زیاد |
ارتباط (Connection) | کانکشن برقرار نیست | کانکشن برقرار است |
روش انتقال (Transfer Method) | پاکتهای انفرادی | جریان پاکتها |
تشخیص خطا (Error Detection) | دارد | دارد |
تصحیح خطا (Error Correction) | ندارد | دارد |
اندازه هدر (Header Size) | کوچک | بزرگ |
تصدیق (Acknowledgement) | ندارد | نیاز به تصدیق از جانب گیرنده |
ترتیب دهی (Sequencing) | ندارد – نمیشمارد | پاکتها را میشمارد |
کنترل تراکم (Congestion Control) | ندارد | بله – از کنترل ارتباط مناسب مطمئن میشود |
موارد استفاده (Used For) | بازی، پخش، ویدیو کنفرانس | ایمیل، جستجو اینترنتی، انتقال فایل، استریم |
شما کدامیک را ترجیح میدهید؟ TCP یا UDP
کدامیک از پروتکلهایی که در این مقاله به بحث و توضیح درباره آنها پرداختیم برای شما تجربه بهتری را فراهم میکند؟ آیا برای شما پایدار بودن ارتباط دارای اهمیت است یا اینکه سرعت مهمترین فاکتور انتخاب برای شماست؟
خوشحال میشیم نظرات شما رو در این باره بدونیم. همچنین اگر اطلاعاتی دارید که در این مقاله به آنها پرداخته نشده است، آنها را با ما به اشتراک بگذارید.