احتمالاً هنگام تنظیم پورت فورواردینگ در روتر یا هنگام پیکربندی نرم افزار فایروال، ارجاعاتی به TCP و UDP دیده اید؛ این دو پروتکل برای انواع مختلف داده ها استفاده می شود. TCP/IP مجموعه ای از پروتکل هایی است که توسط دستگاه ها برای برقراری ارتباط از طریق اینترنت و اکثر شبکه های محلی استفاده می شود. این نام از دو پروتکل اصلی آن، پروتکل کنترل انتقال (TCP) و پروتکل اینترنت (IP) گرفته شده است. TCP راهی را برای ارائه و دریافت جریان بسته های اطلاعاتی ترتیب دار و بررسی شده از لحاظ خطا، در شبکه به اپها ارائه می دهد. پروتکل دیتاگرام کاربر (UDP) توسط اپها برای ارائه جریان سریعتری از اطلاعات با حذف بررسی خطا استفاده میشود. هنگام پیکربندی برخی از سخت افزارها یا نرم افزارهای شبکه، ممکن است لازم باشد تفاوت را بدانید.
پروتکل UDP چیست؟
پروتکل UDP (User Datagram Protocol) یکی از پروتکلهای اصلی لایه انتقال در مدل TCP/IP است که برای انتقال سریع دادهها بین دستگاههای شبکه استفاده میشود. UDP یک پروتکل بدون اتصال است، به این معنی که پیش از ارسال دادهها، نیازی به برقراری و حفظ ارتباط پایدار بین فرستنده و گیرنده وجود ندارد. این پروتکل به دادهها به صورت بستههای مستقل (Datagram) نگاه میکند و هیچ کنترلی بر ترتیب، تکرار یا از دست رفتن بستهها ندارد. بر خلاف TCP که برای تضمین تحویل دادهها از تکنیکهایی مانند شمارهگذاری و تأیید دریافت استفاده میکند، UDP این وظایف را به عهده نمیگیرد و به همین دلیل به عنوان یک پروتکل غیرمطمئن شناخته میشود.
به دلیل همین ساختار ساده و بدون سربار، UDP از سرعت بالایی برخوردار است و برای برنامههای حساس به زمان که نیازمند تاخیر کم هستند، بسیار مناسب است. کاربردهای UDP شامل پخش زنده ویدئو، گیمهای آنلاین و پروتکلهای پرسوجو مانند DNS است که در آنها سرعت انتقال مهمتر از اطمینان کامل به تحویل بستهها است. با این حال، به دلیل عدم ارائه کنترل خطا، در شرایطی که دادههای حیاتی انتقال مییابند، استفاده از UDP ریسک بیشتری دارد و در صورت لزوم، راهکارهای دیگری مانند ارسال مجدد دادهها باید در لایههای بالاتر اعمال شوند.
پروتکل TCP چیست؟
پروتکل TCP (Transmission Control Protocol) یکی از پروتکلهای اصلی لایه انتقال در مدل TCP/IP است که برای انتقال دادههای مطمئن بین دستگاههای شبکه استفاده میشود. TCP یک پروتکل اتصالمحور است، به این معنا که قبل از انتقال دادهها، ابتدا یک ارتباط پایدار بین فرستنده و گیرنده برقرار میکند. این پروتکل تضمین میکند که تمام بستههای داده به صورت صحیح و بدون خطا به مقصد میرسند، حتی اگر شبکه دارای نویز یا از دست دادن بستهها باشد. TCP از شمارهگذاری بستهها، تأیید دریافت و کنترل جریان استفاده میکند تا دادهها را به ترتیب و به طور کامل به گیرنده برساند.
TCP برای برنامههایی که به انتقال دقیق و اطمینان از تحویل دادهها نیاز دارند، مانند وبگردی (HTTP/HTTPS)، ارسال ایمیل (SMTP) و انتقال فایل (FTP)، مناسب است. به دلیل مکانیزمهای کنترل خطا و تضمین تحویل، TCP نسبت به پروتکلهای سبکتر مانند UDP، دارای سربار بیشتری است و ممکن است کمی کندتر عمل کند، اما امنیت و قابلیت اطمینان بالاتری در ارسال دادهها فراهم میکند.
مقایسه پروتکل های TCP و UDP
در اینجا مقایسه پروتکلهای TCP و UDP را به صورت کامل و تخصصی برایتان آورده ایم:
- نوع اتصال:
- TCP: اتصالگرا (Connection-Oriented) – ابتدا ارتباطی پایدار بین مبدأ و مقصد ایجاد میشود.
- UDP: غیراتصالگرا (Connectionless) – بدون نیاز به ایجاد ارتباط اولیه، دادهها مستقیماً ارسال میشوند.
- روش انتقال دادهها:
- TCP: دادهها به صورت جریانی و متوالی ارسال میشوند و ترتیب تحویل دادهها تضمین میشود.
- UDP: دادهها به صورت پکتهای جداگانه ارسال میشوند و ترتیب تحویل آنها تضمینی نیست.
- مکانیزم اطمینان از تحویل:
- TCP: از Acknowledgment (تأیید دریافت) استفاده میکند تا مطمئن شود پکتها به مقصد رسیدهاند و در صورت بروز خطا، پکتها دوباره ارسال میشوند.
- UDP: هیچ تأییدی دریافت نمیشود و در صورت بروز خطا، پکتها حذف میشوند و دوباره ارسال نمیگردند.
- سرعت:
- TCP: به دلیل مکانیزمهای بررسی و کنترل، کندتر از UDP است.
- UDP: سریعتر است زیرا هیچ مکانیسم کنترلی پیچیدهای ندارد.
- سایز هدر:
- TCP: هدر 20 بایت است که شامل اطلاعات بیشتری برای کنترل ارتباط میباشد.
- UDP: هدر 8 بایت است و بسیار سادهتر است.
- کاربردها:
- TCP: برای وبگردی (HTTP/HTTPS)، انتقال فایل (FTP) و ایمیل (SMTP) که نیاز به اطمینان و دقت در انتقال دادهها دارند.
- UDP: برای استریم ویدئو، بازیهای آنلاین و پروتکلهای DNS که نیاز به سرعت بالا و تاخیر کم دارند.
- کنترل جریان و ازدحام:
- TCP: از کنترل جریان و کنترل ازدحام استفاده میکند تا از پر شدن بیش از حد شبکه جلوگیری کند.
- UDP: هیچ مکانیزمی برای کنترل جریان یا ازدحام ندارد.
شباهت پروتکل های TCP و UDP
TCP و UDP، هر دو پروتکلهایی هستند که برای ارسال بیتهای داده معروف به بستهها از طریق اینترنت استفاده میشوند. هر دو پروتکل بر روی پروتکل IP ساخته می شوند. به عبارت دیگر، چه شما یک بسته را از طریق TCP ارسال کنید و یا UDP، آن بسته به یک آدرس IP ارسال می شود. همانطور که از کامپیوتر شما به روترهای واسطه و به مقصد ارسال می شوند، با این بسته ها به طور مشابه رفتار می شود. TCP و UDP تنها پروتکل هایی نیستند که در بالای IP کار می کنند. با این حال، آنها بیشترین استفاده را دارند.
نحوه کار پروتکل TCP
TCP رایج ترین پروتکل مورد استفاده در اینترنت است. وقتی یک صفحه وب را در مرورگر خود درخواست می کنید، کامپیوتر شما بسته های TCP را به آدرس وب سرور ارسال می کند و از آن می خواهد که صفحه وب را برای شما ارسال کند. وب سرور با ارسال جریانی از بستههای TCP پاسخ میدهد که مرورگر وب شما آنها را به یکدیگر متصل میکند تا صفحه وب را تشکیل دهند. وقتی روی لینکی کلیک میکنید، وارد سیستم میشوید، نظر ارسال میکنید یا هر کار دیگری انجام میدهید، مرورگر وب شما بستههای TCP را به سرور ارسال میکند و سرور بستههای TCP را پس میفرستد.
در TCP همه چیز در مورد اطمینان است بسته های ارسال شده با TCP ردیابی می شوند تا هیچ داده ای در حین انتقال از بین نرود یا خراب شود. به همین دلیل است که دانلود فایلها خراب نمیشود، حتی اگر مشکل شبکه وجود داشته باشد. البته، اگر سیستم دیگر کاملاً آفلاین باشد، کامپیوتر شما تسلیم میشود و پیام خطایی خواهید دید که نمیتواند با میزبان راه دور ارتباط برقرار کند.
TCP از دو طریق به این امر دست می یابد. ابتدا بسته ها را با شماره گذاری آنها مرتب می دهد. دوم، با فرستادن پاسخی از گیرنده به فرستنده که نشان می دهد پیام را دریافت کرده است، خطا را بررسی می کند. اگر فرستنده پاسخ درستی دریافت نکند، میتواند بستهها را دوباره ارسال کند تا اطمینان حاصل شود که گیرنده، آن ها را به درستی دریافت کرده است. Process Explorer و سایر ابزارهای سیستمی میتوانند نوع ارتباطات یک پروسس را نشان دهند در اینجا میتوانیم مرورگر کروم را با ارتباطات TCP باز به سرورهای مختلف وب مشاهده کنیم.
UDP چگونه کار می کند؟
پروتکل UDP مشابه TCP کار می کند، اما تمام موارد بررسی خطا را حذف می کند. تمام ارتباطات رفت و برگشتی باعث ایجاد تأخیر می شود و سرعت را کاهش می دهد. هنگامی که یک اپ از UDP استفاده می کند، بسته ها فقط برای گیرنده ارسال می شوند. فرستنده منتظر نمی ماند تا مطمئن شود گیرنده بسته را دریافت کرده است – فقط به ارسال بسته های بعدی ادامه می دهد. اگر گیرنده چند بسته UDP را اینجا و آنجا از دست بدهد، آنها فقط گم شده اند، فرستنده آن ها را دوباره ارسال نمی کند. از دست دادن این همه هزینه به این معنی است که دستگاهها میتوانند سریع تر با هم ارتباط برقرار کنند.
UDP زمانی استفاده می شود که سرعت، مطلوب باشد و اصلاح خطا ضروری نباشد. به عنوان مثال، UDP اغلب برای پخش زنده و بازی های آنلاین استفاده می شود. به عنوان مثال، فرض کنید در حال تماشای یک جریان ویدیویی زنده هستید که اغلب با استفاده از UDP به جای TCP پخش می شود. سرور فقط یک جریان ثابت از بسته های UDP را به کامپیوترهایی که در حال تماشا هستند ارسال می کند. اگر برای چند ثانیه ارتباط خود را از دست بدهید، ویدیو ممکن است برای لحظه ای ثابت یا جهش کند و سپس به بیت فعلی پخش پرش کند. اگر با از دست دادن بسته های جزئی مواجه شدید، ویدیو یا صدا ممکن است برای لحظه ای کج و کوله شود در حالی که ویدیو بدون داده های از دست رفته به پخش ادامه می دهد.
این در بازی های آنلاین نیز مشابه است. اگر برخی از بستههای UDP را از دست دادید، با دریافت بستههای UDP جدیدتر، ممکن است کاراکترها به آن طرف نقشه تلپورت شوند. اگر بسته های قدیمی را از دست دادید، هیچ فایده ای ندارد که آنها را دوباره درخواست بکنید زیرا بازی بدون شما ادامه می یابد. تنها چیزی که مهم است این است که در حال حاضر در سرور بازی چه اتفاقی می افتد، نه اتفاقی که چند ثانیه پیش رخ داده است. حذف تصحیح خطای TCP به سرعت بخشیدن به ارتباط بازی و کاهش تأخیر کمک می کند.
بهتر است بدانید اینکه یک برنامه از TCP یا UDP استفاده می کند به توسعه دهنده آن بستگی دارد و انتخاب، بستگی به نیازهای یک اپلیکیشن دارد. اکثر اپها به تصحیح خطا و قدرت TCP نیاز دارند، اما برخی از اپلیکیشن ها به سرعت و کاهش سربار UDP نیاز دارند. اگر یک ابزار آنالیز شبکه مانند وایرشارک را راه اندازی کنید، می توانید انواع مختلف بسته هایی را که به رفت و آمد می کنند را مشاهده کنید.
مگر اینکه مدیر شبکه یا توسعهدهنده نرمافزار باشید، این نباید خیلی روی شما تأثیر بگذارد. اگر روتر یا نرمافزار فایروال خود را پیکربندی میکنید و مطمئن نیستید که یک اپلیکیشن از TCP یا UDP استفاده میکند، به طور کلی میتوانید گزینه “هر دو” را انتخاب کنید تا روتر یا فایروال شما قوانین یکسانی را برای ترافیک TCP و UDP اعمال کند.
سخن پایانی
در نهایت، انتخاب بین پروتکلهای TCP و UDP به نیازهای خاص هر برنامه و نوع دادهای که منتقل میشود بستگی دارد. TCP با ارائه اطمینان و کنترل خطا، برای برنامههایی که نیاز به دقت و امنیت در انتقال دادهها دارند، مانند وبگردی و انتقال فایل، ایدهآل است. از سوی دیگر، UDP به خاطر سرعت بالا و تأخیر کم، برای برنامههایی مانند پخش زنده و بازیهای آنلاین مناسبتر است، جایی که سرعت بر دقت اولویت دارد. با توجه به این تفاوتها، توسعهدهندگان باید بر اساس نوع کاربرد و ویژگیهای مورد نیاز، پروتکل مناسب را انتخاب کنند تا بهترین عملکرد و تجربه کاربری را فراهم آورند.