**کنترل جریان (داده)** در ارتباطات داده‌ای، **کنترل جریان** یک فرایند مدیریت نرخ انتقال بین دو گره برای جلوگیری از ارسال از طرف فرستنده سریع به دریافت‌کننده کند است. کنترل جریان مکانیزمی را برای دریافت‌کننده جهت کنترل سرعت انتقال فراهم می‌کند؛ بنابراین گره دریافت‌کننده دچار سرریزی داده از طرف گره ارسال‌کننده نمی‌شود. کنترل جریان باید از کنترل ازدحام متمایز شود که برای کنترل جریانی از داده زمانیکه ازدحام به‌طور واقعی رخ داده استفاده می‌شود.

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

stop and wait
-------------

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

### ترتیب عملیات

1. **فرستنده**:در هربار فقط یک فریم را ارسال می‌کند.
2. **گیرنده**:زمانی که یک فریم دریافت شد ACK آن را ارسال می‌کند.
3. فرستنده ACK را در بازه زمانی مشخص شده دریافت می‌کند.
4. بازگشت به مرحله ۱

اگر فریم یا ACK در زمان انتقال از بین برود توسط فرستنده دوباره ارسال خواهد شد این فرایند انتقال مجدد معروف است به ARQ. مشکل روش stop and wait این است که فقط یک فریم در هر بار می‌تواند انتقال داده شود که اغلب باعث ناکارامد شدن کانال انتقال می‌شود. تا زمانیکه ما ACK را دریافت نکنیم فرستنده قادر به انتقال بسته جدید نخواهد بود در طول این زمان هم کانال و هم فرستنده بیکار هستند.

کنترل جریان انتقال
------------------

*کنترل جریان انتقال ممکن است در این موارد اتفاق بیفتد* .[]

* بین ""قطع و وصل "" جریان داده [] terminal equipment (DTE)، تجهیزات ترمینال و مرکز سوئیچینگ، توسط پایان دهنده مدار داده (DCE) و گونه‌های مخالف مستقیماً به هم وصل شده.
* یا بین دو دستگاه از یک نوع (مثل دو DTE یا دو DCE) که به وسیله کابل متقاطع به هم وصل شده‌اند.

سخت‌افزار کنترل جریان
---------------------

در RS232 مشترک دو خط کنترل وجود دارد:

* **کنترل جربان RTS, RTS (درخواست ارسال) / CTS (مناسب برای ارسال)** و
* **کنترل جریان DTR** و DTR (Data Terminal Ready)/DSR (Data Set Ready)

که معمولاً به عنوان **سخت‌افزار کنترل جریان** شناخته می‌شود.

کنترل جریان سخت‌افزار نوعاً توسط DTE یا «پایان کارفرما» کنترل می‌شود. همان‌طور که اجرای اولیه یا وارد کردن خط آن برای دستور به طرف دیگر انجام می‌شود:

* در حالت **کنترل جریان RTS** و DTE تنظیم RTS خود را انجام می‌دهد که به طرف دیگر سیگنال می‌فرستد. (طرف کارگزار مثل یک DCE) تا شروع به بازبینی خط داده ورودی خود کند. زمانی که برای داده آماده‌است، طرف کارگزار خط مکمل خود را می‌فرستد، در این مثال CTS، که سیگنال‌هایی را به کارفرما برای آغاز ارسال داده می‌فرستد؛ و برای کارفرما جهت شروع بازبینی داده‌های کارگزار را در خط خروجی می‌فرستد. اگر هر کدام از دو طرف نیاز به متوقف کردن ارسال داده داشتند، خط «آمادگی داده» مربوطه را کاهش می‌دهد.
* برای ارتباط کامپیوتر شخصی با مودم و پیوندهای مشابه، حالت **کنترل جریان DTR, DTR/DSR** برای کل نشست مودم اجرا می‌شود (بگویید یک تماس اینترنتی Dialup)، و RTS/CTS برای هر بلوک داده‌ای اجرا می‌شود.

### نرم‌افزار کنترل جریان

در طرف مخالف، XON و XOFF معمولاً در ارتباط با نرم‌افزار کنترل جریان است.

کنترل جریان حلقه باز
--------------------

کنترل جریان حلقه باز مکانیزمی است که توسط نداشتن بازخور بین گیرنده و فرستنده مشخص می‌شود. این به راحتی به این معناست که کنترل به‌طور وسیعی استفاده می‌شود. تخصیص منابع باید به صورت «رزرو از قبل» یا «گام به گام» باشد.
کنترل جریان حلقه باز دارای مشکلات ذاتی در بالا بردن بهره‌وری از منابع شبکه‌است. تخصیص منابع در قسمت تنظیم ارتباط به وسیله CAC (کنترل پذیرش اتصال) ساخته می‌شود و این اختصاص با استفاده از اطلاعاتی ساخته می‌شود که «اطلاعات قدیمی» در طول عمر ارتباط است. گاهی اوقلت اختصاص بیش از حد منابع و رزرو شده‌ها وجود دارد اما ظرفیت‌های استفاده نشده هدر رفته می‌مانند. کنترل جریان حلقه باز به وسیله ATM در سرویس‌های VBR, CBR و UBR استفاده می‌شود. (ببینید: قرارداد ترافیک traffic contractو کنترل ازدحامcongestion control)

کنترل جریان حلقه بسته
---------------------

کنترل جریان حلقه بسته مکانیزمی است که توسط توانایی شبکه برای گزارش دهی ازدحام معلق شبکه به فرستنده شناخته می‌شود. سپس این اطلاعات می‌تواند توسط فرستنده در جهات مختلف به کار گرفته شود تا فعالیت‌های خود را با شرایط موجود شبکه وفق دهد. کنترل جریان حلقه بسته توسط ABR (ببینید: قرارداد شبکهtraffic contract و کنترل ازدحام congestion control) استفاده می‌شود. کنترل جریان ارسال که در بالا توضیح داده شد نمونه‌ای از کنترل جریان حلقه بسته می‌باشد.

جستارهای وابسته
---------------

* نرم‌افزار کنترل جریان

شبکه کامپیوتری
قرارداد ترافیک
کنترل ازدحام
مهندسی ترافیک مخابرات در شبکه‌های پهن باند
مهندسی ترافیک مخابرات
کنترل جریان اترنت
دست تکانی

منابع
-----

1. **^**  Network Testing Solutions, ATM Traffic Management White paper last accessed 15 March 2005.

پیوند به بیرون
--------------

* RS232 flow control and handshaking