TCP چیست؟
TCP مخفف Transmission Control Protocol است. این یک پروتکل لایه حمل و نقل است که اجازه میدهد بستهها از یک مکان به مکان دیگر ارسال شوند.
TCP یک پروتکل کانکشن محور است. به این معنی که کانکشن را قبل از هر ارتباطی بین واحدهای رایانهای شبکه برقرار میکنند. از آنجا که ما از این پروتکل به همراه پروتکل IP استفاده میکنیم، آن را TCP/IP مینامیم.
TCP چگونه کار میکند؟
وظیفه اصلی TCP جمعآوری دادهها از لایه application است. سپس دادهها را به چند بسته تقسیم میکند، به هر بسته یک عدد اختصاص میدهد، و بستهها را به مقصدشان میفرستد.
همچنین بسته ها را قبل از ارسالشان به لایه application دوباره سر هم میکند. با توجه به اینکه TCP یک پروتکل کانکشن محور است، کانکشن تا زمانی که فرستنده و گیرنده تبادل خود را کامل نکنند، برقرار خواهد بود.
این یک پروتکل قابل اعتماد است. یعنی گیرنده همیشه یک تأیید مثبت یا منفی در مورد بسته داده به فرستنده ارائه میدهد، بنابراین فرستنده همیشه میداند آیا بسته داده به مقصد رسیده است یا آیا نیاز به ارسال مجدد دارد.
این پروتکل تضمین میکند که دادهها در همان توالی ارسال شده به مقصد میرسند. این یک سیستم داخلی برای بررسی خطا و بازیابی دارد. و مسئول ارائه ارتباطات end-to-end است. TCP همچنین امکان کنترل جریان و کیفیت خدمات را فراهم می کند.
TCP همچنین از سرور full-duplex پشتیبانی میکند، به این معنی که هم میتواند به عنوان گیرنده و هم به عنوان فرستنده عمل کند. این به روش کلاینت/سرور point-to-point عمل میکند.
UDP چیست؟
UDP مخفف User Datagram Protocol است. UDP ابتداییترین پروتکلهای ارتباطی لایه انتقال پروتکل TCP/IP است. این پروتکل از حداقل مکانیسمهای ارتباطی استفاده میکند.
UDP چگونه کار میکند؟
اگرچه UDP یک پروتکل حمل و نقل غیرقابل اعتماد تلقی میشود، با استفاده از سرویسهای IP کار خود را انجام میدهد، که یک روش تحویل با بهترین تلاش را ارائه میدهد.
در UDP، گیرنده تأیید بسته را تولید نمیکند، و فرستنده منتظر تأیید بسته نیست. به دلیل این آسیبپذیری، پروتکل هم غیرقابل اعتماد است و هم پردازش آن آسانتر است.
ما از UDP در مواردی استفاده میکنیم که تأیید دادههای دریافت شده چندان مهم نیست. این برای مواردی که دادهها در یک جهت جریان مییابند خوب است و برای ارتباطات مبتنی بر کوئری مناسب است.
UDP از تحویل مرتب بستههای داده اطمینان نمیدهد. Stateless است و هیچ مکانیزم کنترل ازدحامی را فراهم نمیکند.
تفاوت بین TCP و UDP
UDP یک پروتکل بدون کانکشن است، در حالی که TCP یک پروتکل کانکشن محور است. TCP کندتر از UDP است، که یکی از تفاوتهای اصلی بین این دو پروتکل است.
به طور کلی، UDP یک پروتکل بسیار سریعتر و سادهتر است. اما فقط TCP امکان ارسال مجدد بستههای داده از دست رفته را فراهم میکند.
تفاوت دیگر TCP و UDP این است که TCP انتقال منظم دادهها از کاربر به سرور (و بالعکس) را تضمین میکند. UDP برای ارتباطات end-to-end طراحی نشده است و آمادگی گیرنده را بررسی نمیکند بنابراین به سربار کمتری نیاز دارد و فضای کمتری را اشغال میکند.
خلاصه ای از مقایسه TCP و UDP
کانکشن
در TCP نیاز است تا قبل از ارتباط فرستنده و گیرنده، یک کانکشنی که به خوبی مقرر شده است تنظیم شود. این یک پروتکل کانکشن محور است.
UDP یک پروتکل بدون کانکشن است.
حفظ ترتیب دادههای منتقل شده
در TCP، از آنجایی که یک کانکشن از قبل مقرر شده است، پکیجهای داده به صورت مرتب توسط گیرنده دریافت میشود.
از آنجا که ارتباط مقرری بین فرستنده و گیرنده در UDP وجود ندارد، بستههای داده ممکن است به صورت نامرتب توسط گیرنده دریافت شوند.
قابلیت اطمینان
هر زمان که بستهای از طریق Transmission Control Protocol دریافت میشود، یک تأییدیه را برای فرستنده ارسال میکند. در صورت خرابی، درخواست ارسال مجدد را ارائه میدهد.
با UDP، هیچ تأییدی در این مورد ارسال نمیشود و برای اطمینان از قابلیت اطمینان به پروتکلهای سطح بالا متکی است.
بررسی خطا
قوانین گستردهای برای بررسی خطا در Transmission Control Protocol وجود دارد در حالی که فقط تکنیک های اساسی بررسی خطا مانند چکسامهای موجود در UDP وجود دارد.
روش انتقال
در TCP، دادهها به صورت جریان بایت خوانده میشوند، و پیامها به مرزهای سگمنت ارسال میشوند.
بستههای منحصربهفرد UDP با محدودیتهای مشخص شده ارسال و تأیید میشوند.
پخش (Broadcast)
Transmission Control Protocol از broadcast پشتیبانی نمیکند. هنگامی که از آن استفاده می کنید، سرور و گیرنده ابتدا باید یک کانکشن بسازند، سپس بعد از اینکه انتقال کامل شد این کانکشن باید قطع شود.
UDP از broadcast پشتیبانی میکند.
موارد استفاده TCP در مقابل UDP
TCP توسط HTTPS (HyperText Transfer Protocol Secure)، HTTP (HyperText Transfer Protocol)، SMTP (Simple Mail Transfer Protocol)، FTP (File Transfer Protocol) و بسیاری موارد دیگر استفاده میشود.
UDP در Video Streaming، ویدیو کال، خدمات صوتی از طریق سرویسهای IP (تماس با اینترنت)، DNS (Domain Name System) و غیره استفاده میشود.
کدام یک سریع است؟
به طور کلی UDP به دلیل عوامل زیر سریعتر است:
تفاوت در اندازه هدر
هدرهای TCP باید حداقل ۲۰ بایت و بیش از ۶۰ بایت طول داشته باشند.
از آنجا که هدر TCP بسیار بزرگتر از هدر UDP است، پردازش آن نیاز به زمان بیشتری دارد که باعث سریعتر شدن UDP از TCP میشود.
تأییدیه در Transmission Control Protocol
همانطور که گفتیم در TCP، برای بخش دادههایی که توسط گیرنده دریافت میشود، تاییدیه ای برای فرستنده ارسال میشود.
در صورت عدم تأیید، اقدام به انتقال مجدد میشود. این روند باعث میشود Transmission Control Protocol در مقایسه با UDP بسیار کندتر شود. و به یاد داشته باشید که UDP هیچ تأییدیهای ارسال نمی کند.
استثنائات
موارد خاصی وجود دارد که ثابت میکند TCP سریعتر از UDP است. مثلا در آزمایشی که ۳۰۰ بایت بسته از طریق کانکشن اترنت با حداکثر واحد انتقال ۱۵۰۰ بایت ارسال شده است، Transmission Control Protocol حدود ۵۰% سریعتر از UDP بوده است.
دلیل این امر این است که TCP سعی دارد دادهها را بافر کرده و کل بخش شبکه را پر کند و پهنای باند موجود را به حداکثر برساند. از طرف دیگر، UDP بلافاصله بسته را از طریق سیم (wire) ارسال میکند، و شبکه را با بستههای کوچک زیادی مسدود میسازد.
جمعبندی
هم Transmission Control Protocol و هم UDP کاربردهای خاص خود را دارند. در مواردی که قابلیت اطمینان و ترتیب بستههای دادههای دریافت شده یک نگرانی اساسی است، شما مایل هستید از TCP استفاده کنید.
از طرف دیگر، در مواردی که نگرانی اصلی سرعت است و اینکه از بین رفتن یا به خطر افتادن برخی بستههای داده چندان مهم نیست، UDP انتخاب خوبی است.
بنابراین میبینید، شما همیشه باید در مورد قابلیت اطمینان یا سرعت سازش کنید. اگر یکی را افزایش دهید، دیگری به دلیل محدودیتهایی که از ابتدا دارد کاهش مییابد.
مثلا در یوتیوب ممکن است متوجه شده باشید که گزینههای مختلفی برای تنظیم کیفیت ویدیو وجود دارد.
وقتی کیفیت را افزایش میدهید، پهنای باید ویدیو بیشتر میشود. این به این دلیل است که در کیفیت پایینتر، حتی اگر برخی از بستههای داده .از بین بروند، ما به سادگی آنها را نادیده می گیریم. اما اگر ویدیوهای با کیفیت بالا بخواهیم، نمیتوانیم باعث از بین رفتن بستههای داده شویم.