لایه انتقال و کنترل ازدحام
لایه انتقال، تحویل میزبان به میزبان را به ارتباط فرآیند به فرآیند گسترش میدهد و جریانهای بایت قابل اعتماد، مرتب و کنترلشده از نظر ازدحام (TCP) یا دیتاگرامهای سبک بدون اتصال (UDP) را به برنامهها ارائه میدهد، در حالی که کنترل ازدحام نرخ ارسال را تنظیم میکند تا شبکه مشترک از کار نیفتد.
Definition
لایه انتقال، لایه پروتکلی است که ارتباط منطقی بین فرآیندهای کاربردی در حال اجرا بر روی میزبانهای مختلف را فراهم میکند و خدماتی مانند مالتیپلکسینگ، تحویل قابل اعتماد، کنترل جریان و کنترل ازدحام را بر روی تحویل میزبان به میزبان لایه شبکه اضافه میکند.
Scope
این حوزه خدمات انتقال سرتاسری را پوشش میدهد: مالتیپلکسینگ و دیمالتیپلکسینگ دادهها به فرآیندهای کاربردی، اصول انتقال داده قابل اعتماد بر روی یک شبکه غیرقابل اعتماد (تأییدیهها، ارسال مجدد، شمارههای توالی، پنجرههای کشویی)، پروتکل کنترل انتقال مبتنی بر اتصال و پروتکل دیتاگرام کاربر بدون اتصال، و تئوری و عمل کنترل ازدحام. این حوزه شامل مسیریابی بستهها در سراسر شبکه (لایه شبکه) و پروتکلهای کاربردی که از خدمات انتقال استفاده میکنند (لایه کاربرد) نمیشود.
Sub-topics
Core questions
- چگونه لایه انتقال دادهها را از طریق مالتیپلکسینگ و دیمالتیپلکسینگ به فرآیند کاربردی صحیح تحویل میدهد؟
- چگونه میتوان تحویل قابل اعتماد و مرتب را بر روی یک شبکه غیرقابل اعتماد و دارای افت بستهها ایجاد کرد؟
- مکانیسمهای راهاندازی اتصال، کنترل جریان و قابلیت اطمینان TCP چگونه کار میکنند؟
- چه زمانی یک برنامه باید به جای TCP از UDP استفاده کند؟
- کنترل ازدحام چگونه ازدحام شبکه را تشخیص داده و به آن پاسخ میدهد در حالی که عدالت را حفظ میکند؟
Key concepts
- مالتیپلکسینگ و دیمالتیپلکسینگ
- پورتها و سوکتها
- انتقال داده قابل اعتماد
- پنجره کشویی، go-back-N، تکرار انتخابی
- دستدهی سهطرفه TCP
- کنترل جریان
- کنترل ازدحام
- افزایش افزایشی/کاهش ضربی (AIMD)
- شروع آهسته و اجتناب از ازدحام
- پروتکل دیتاگرام کاربر (UDP)
Key theories
- انتقال داده قابل اعتماد بر روی یک کانال غیرقابل اعتماد
- قابلیت اطمینان از تأییدیهها، تایمرهای ارسال مجدد، شمارههای توالی و پروتکلهای پنجره کشویی (go-back-N و تکرار انتخابی) ساخته شده است که با وجود یک شبکه زیربنایی غیرقابل اعتماد، افت، تکرار و تغییر ترتیب را تشخیص داده و بازیابی میکنند.
- کنترل ازدحام TCP
- TCP ازدحام را از افت بسته استنباط میکند و پنجره ارسال خود را با دینامیک افزایش افزایشی/کاهش ضربی — شروع آهسته، اجتناب از ازدحام و بازیابی سریع — تنظیم میکند تا پهنای باند موجود را بررسی کند در حالی که در صورت افت به شدت عقبنشینی میکند.
- انتقال بدون اتصال در مقابل انتقال مبتنی بر اتصال
- UDP یک سرویس نازک و بدون اتصال را بدون راهاندازی، قابلیت اطمینان یا کنترل ازدحام ارائه میدهد که تأخیر و سربار را به حداقل میرساند، در حالی که TCP یک جریان بایت مبتنی بر اتصال، قابل اعتماد و کنترلشده از نظر ازدحام را ارائه میدهد؛ انتخاب بین تأخیر و کنترل در مقابل تضمینها است.
Clinical relevance
رفتار لایه انتقال، عملکرد تقریباً هر برنامه شبکهای را شکل میدهد: TCP وب، ایمیل و انتقال فایل را به طور قابل اعتماد انجام میدهد، در حالی که UDP زیربنای کاربردهای با تأخیر کم مانند DNS، صدا و تصویر بلادرنگ و بسیاری از بازیها است. کنترل ازدحام چیزی است که از اواخر دهه 1980 تاکنون اینترنت را از فروپاشی تحت بار حفظ کرده است، و کارهای جاری بر روی الگوریتمهایی مانند CUBIC و BBR و پروتکلهایی مانند QUIC همچنان تعادل تأخیر-توان عملیاتی-عدالت را تنظیم میکنند.
History
TCP و IP در ابتدا در طراحی Cerf-Kahn در سال 1974 یک پروتکل واحد بودند و بعدها از هم جدا شدند، و UDP (RFC 768, 1980) برای برنامههایی که فقط به سرویس دیتاگرام پایه نیاز داشتند اضافه شد. پس از یک سری فروپاشیهای ازدحام در اینترنت اولیه، کار ون جاکوبسون در سال 1988 الگوریتمهای شروع آهسته و اجتناب از ازدحام را معرفی کرد که همچنان اساس کنترل ازدحام TCP را تشکیل میدهند و در طول دههها به انواع مختلفی مانند Reno، CUBIC و BBR اصلاح شدهاند.
Debates
- کنترل ازدحام مبتنی بر افت در مقابل مبتنی بر تأخیر و مبتنی بر مدل
- TCP کلاسیک ازدحام را از افت بسته استنباط میکند، که میتواند پیوندهای با پهنای باند بالا و تأخیر بالا را کمتر مورد استفاده قرار دهد و دیر واکنش نشان دهد، که منجر به الگوریتمهای مبتنی بر تأخیر و مبتنی بر مدل مانند BBR میشود؛ بحث در مورد عدالت و قابلیت استقرار زمانی که چنین الگوریتمهایی با الگوریتمهای مبتنی بر افت همزیستی دارند، ادامه دارد.
Key figures
- Van Jacobson
- Jon Postel
- Vinton Cerf
- Sally Floyd
Related topics
Seminal works
- kurose2021
- jacobson1988
- rfc9293
Frequently asked questions
- چه زمانی باید به جای TCP از UDP استفاده کنم؟
- زمانی از UDP استفاده کنید که تأخیر کم مهمتر از تحویل تضمینشده باشد و بتوانید افت را تحمل کنید یا خودتان آن را مدیریت کنید — به عنوان مثال، صدا/تصویر بلادرنگ، پرسوجوهای DNS یا بازیها. زمانی از TCP استفاده کنید که به تحویل قابل اعتماد، مرتب و کنترل ازدحام داخلی نیاز دارید، مانند صفحات وب، انتقال فایلها و ایمیل.
- کنترل ازدحام دقیقاً چه کاری انجام میدهد؟
- کنترل ازدحام سرعت تزریق داده توسط فرستنده به شبکه را بر اساس سیگنالهای ازدحام، معمولاً افت بسته یا تأخیر، تنظیم میکند. با عقبنشینی در هنگام بارگذاری بیش از حد شبکه و بررسی ظرفیت اضافی در غیر این صورت، ترافیک کلی را نزدیک به ظرفیت شبکه نگه میدارد و پهنای باند را تقریباً به طور عادلانه بین جریانها تقسیم میکند.