TCP در مقابل UDP: رفع ابهام از بحث قابلیت اطمینان در مقابل کارایی

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

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

TCP مخفف عبارت Transmission Control Protocol است و به عنوان یک پروتکل اتصال‌گرا شناخته می‌شود. این بدان معناست که قبل از اینکه یک برنامه بتواند شروع به ارسال داده به برنامه دیگر کند، دو فرآیند باید یک handshake انجام دهند. Handshake یک فرآیند منطقی متصل است که انتقال قابل اعتماد و دریافت منظم داده‌ها را تضمین می‌کند. در طول handshake، با تبادل یک سری بسته‌های کنترلی و توافق بر روی برخی پارامترها و قوانین برای اطمینان از انتقال موفقیت‌آمیز داده‌ها، ارتباطی بین میزبان‌های مبدا و مقصد برقرار می‌شود.

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

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

اتصال TCP یک سرویس کاملاً دوطرفه است، به این معنی که میزبان A و میزبان B می‌توانند داده‌ها را در هر دو جهت در یک اتصال TCP منتقل کنند. یعنی داده‌ها می‌توانند بین میزبان A و میزبان B در یک جریان دوطرفه منتقل شوند.

TCP داده‌ها را به طور موقت در بافر ارسال اتصال ذخیره می‌کند. این بافر ارسال یکی از حافظه‌های نهان تنظیم شده در طول فرآیند دست‌دهی سه مرحله‌ای است. متعاقباً، TCP داده‌های موجود در حافظه نهان ارسال را در زمان مناسب به حافظه نهان دریافت میزبان مقصد ارسال می‌کند. در عمل، هر نظیر یک حافظه نهان ارسال و یک حافظه نهان دریافت خواهد داشت، همانطور که در اینجا نشان داده شده است:

TCP-UDP

بافر ارسال، ناحیه‌ای از حافظه است که توسط پیاده‌سازی TCP در سمت فرستنده نگهداری می‌شود و برای ذخیره موقت داده‌هایی که قرار است ارسال شوند، استفاده می‌شود. هنگامی که دست‌دهی سه‌جانبه برای ایجاد اتصال انجام می‌شود، حافظه پنهان ارسال تنظیم شده و برای ذخیره داده‌ها استفاده می‌شود. بافر ارسال به صورت پویا با توجه به ازدحام شبکه و بازخورد از گیرنده تنظیم می‌شود.

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

توجه داشته باشید که اندازه حافظه پنهان ارسال و دریافت محدود است، هنگامی که حافظه پنهان پر است، TCP ممکن است برخی از استراتژی‌ها مانند کنترل ازدحام، کنترل جریان و غیره را برای اطمینان از انتقال داده قابل اعتماد و پایداری شبکه اتخاذ کند.

در شبکه‌های کامپیوتری، انتقال داده‌ها بین میزبان‌ها از طریق سگمنت‌ها انجام می‌شود. پس سگمنت بسته چیست؟

TCP با تقسیم جریان ورودی به تکه‌هایی و اضافه کردن هدرهای TCP به هر تکه، یک قطعه TCP یا قطعه بسته ایجاد می‌کند. هر قطعه فقط می‌تواند برای مدت زمان محدودی منتقل شود و نمی‌تواند از حداکثر اندازه قطعه (MSS) تجاوز کند. در مسیر خود به پایین، یک قطعه بسته از لایه پیوند عبور می‌کند. لایه پیوند دارای یک واحد انتقال حداکثر (MTU) است که حداکثر اندازه بسته‌ای است که می‌تواند از لایه پیوند داده عبور کند. واحد انتقال حداکثر معمولاً مربوط به رابط ارتباطی است.

بنابراین تفاوت بین MSS و MTU چیست؟

در شبکه‌های کامپیوتری، معماری سلسله مراتبی بسیار مهم است زیرا تفاوت‌های بین سطوح مختلف را در نظر می‌گیرد. هر لایه نام متفاوتی دارد؛ در لایه انتقال، داده‌ها سگمنت (Segment) و در لایه شبکه، داده‌ها بسته IP نامیده می‌شوند. بنابراین، حداکثر واحد انتقال (MTU) را می‌توان به عنوان حداکثر اندازه بسته IP که می‌تواند توسط لایه شبکه منتقل شود، در نظر گرفت، در حالی که حداکثر اندازه سگمنت (MSS) یک مفهوم لایه انتقال است که به حداکثر مقدار داده‌ای که می‌تواند توسط یک بسته TCP در یک زمان منتقل شود، اشاره دارد.

توجه داشته باشید که وقتی حداکثر اندازه قطعه (MSS) بزرگتر از حداکثر واحد انتقال (MTU) باشد، قطعه قطعه شدن IP در لایه شبکه انجام می‌شود و TCP داده‌های بزرگتر را به قطعاتی مناسب برای اندازه MTU تقسیم نمی‌کند. بخشی در لایه شبکه به لایه IP اختصاص داده خواهد شد.

ساختار قطعه بسته TCP
بیایید قالب و محتوای هدرهای TCP را بررسی کنیم.

بخش TCP

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

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

بیت‌های کنترلی یک قطعه TCP شامل موارد زیر است:

بیت تأیید (ACK): وقتی این بیت ۱ باشد، به این معنی است که فیلد پاسخ تأیید معتبر است. TCP مشخص می‌کند که این بیت باید به جز بسته‌های SYN هنگام برقراری اولیه اتصال، روی ۱ تنظیم شود.
بیت RST: وقتی این بیت ۱ باشد، نشان می‌دهد که در اتصال TCP یک استثنا وجود دارد و اتصال باید مجبور به قطع شدن شود.
بیت SYN: وقتی این بیت روی ۱ تنظیم شود، به این معنی است که اتصال برقرار شود و مقدار اولیه شماره ترتیب در فیلد شماره ترتیب تنظیم شود.
بیت فین: وقتی این بیت ۱ باشد، به این معنی است که در آینده داده دیگری ارسال نخواهد شد و اتصال مورد نظر است.
عملکردها و ویژگی‌های مختلف TCP در ساختار بخش‌های بسته TCP تجسم یافته است.

UDP چیست؟ (Mylinking's)شیر شبکهوکارگزار بسته شبکهمی‌تواند بسته‌های TCP یا UDP را پردازش کند)
پروتکل داده‌نگار کاربر (UDP) یک پروتکل ارتباطی بدون اتصال است. در مقایسه با TCP، UDP مکانیسم‌های کنترل پیچیده‌ای ارائه نمی‌دهد. پروتکل UDP به برنامه‌ها اجازه می‌دهد تا بسته‌های IP کپسوله شده را مستقیماً و بدون ایجاد اتصال ارسال کنند. هنگامی که توسعه‌دهنده تصمیم می‌گیرد از UDP به جای TCP استفاده کند، برنامه مستقیماً با IP ارتباط برقرار می‌کند.

نام کامل پروتکل UDP، پروتکل داده‌نگار کاربر (User Datagram Protocol) است و سرآیند آن تنها هشت بایت (۶۴ بیت) است که بسیار مختصر است. قالب سرآیند UDP به شرح زیر است:

بخش UDP

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

تفاوت‌های بین TCP و UDP در Mylinkingشیر شبکهوکارگزار بسته شبکهمی‌تواند بسته‌های TCP یا UDP را پردازش کند
TCP و UDP در جنبه‌های زیر با هم تفاوت دارند:

TCP در مقابل UDP

اتصالTCP یک پروتکل انتقال اتصال‌گرا است که قبل از انتقال داده‌ها نیاز به برقراری اتصال دارد. از طرف دیگر، UDP نیازی به اتصال ندارد و می‌تواند داده‌ها را فوراً منتقل کند.

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

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

کنترل ازدحام، کنترل جریانTCP دارای مکانیزم‌های کنترل ازدحام و کنترل جریان است که می‌تواند نرخ انتقال داده را مطابق با شرایط شبکه تنظیم کند تا امنیت و پایداری انتقال داده تضمین شود. UDP مکانیزم‌های کنترل ازدحام و کنترل جریان ندارد، حتی اگر شبکه بسیار شلوغ باشد، تنظیماتی در نرخ ارسال UDP انجام نمی‌دهد.

سربار هدرTCP طول سرآیند (header) طولانی‌ای دارد، معمولاً ۲۰ بایت، که با استفاده از فیلدهای اختیاری (option fields) افزایش می‌یابد. از سوی دیگر، UDP سرآیند ثابتی دارد که تنها ۸ بایت است، بنابراین سرآیند UDP کمتر است.

TCP در مقابل UDP

سناریوهای کاربردی TCP و UDP:
TCP و UDP دو پروتکل لایه انتقال متفاوت هستند و در سناریوهای کاربردی تفاوت‌هایی دارند.

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

انتقال فایل از طریق FTP: TCP می‌تواند تضمین کند که فایل‌ها در حین انتقال از بین نمی‌روند و خراب نمی‌شوند.
HTTP/HTTPS: TCP یکپارچگی و صحت محتوای وب را تضمین می‌کند.
از آنجا که UDP یک پروتکل بدون اتصال است، تضمین قابلیت اطمینان ارائه نمی‌دهد، اما ویژگی‌های کارایی و بلادرنگ بودن را دارد. UDP برای سناریوهای زیر مناسب است:

ترافیک کم بسته، مانند DNS (سیستم نام دامنه)کوئری‌های DNS معمولاً بسته‌های کوتاهی هستند و UDP می‌تواند آنها را سریع‌تر تکمیل کند.
ارتباطات چندرسانه‌ای مانند تصویر و صدابرای انتقال چندرسانه‌ای با الزامات زمان واقعی بالا، UDP می‌تواند تأخیر کمتری را فراهم کند تا اطمینان حاصل شود که داده‌ها می‌توانند به موقع منتقل شوند.
ارتباطات پخشUDP از ارتباطات یک به چند و چند به چند پشتیبانی می‌کند و می‌تواند برای انتقال پیام‌های پخشی (broadcast) مورد استفاده قرار گیرد.

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


زمان ارسال: دسامبر-03-2024