کنترل جریان (داده)

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

stop and wait

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

۱. فرستنده:در هربار فقط یک فریم را ارسال می‌کند.

۲. گیرنده:زمانی که یک فریم دریافت شد ACK آن را ارسال می‌کند.

۳. فرستنده ACK را در بازه زمانی مشخص شده دریافت می‌کند.

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

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

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

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

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

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

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