کنترل جریان داده چیست و چگونه کار می کند

در این مقاله میخواهیم در مورد اینکه پروتکل کنترل جریان داده چیست و چگونه کار می کند , صحبت کنیم.

در هنگام انتقال داده ها از فرستنده به سمت گیرنده باید بسته های داده با سرعتی مناسب

از سمت فرستنده به سمت گیرنده ارسال شود. در واقع سرعت ارسال داده ها

با سرعت دریافت و پردازش داده ها باید متناسب باشد در غیره این صورت

گیرنده دچار سرریز داده و از دست رفت داده ها می شود.این اتفاق زمانی می افتد

که یا توان پردازش توسط گیرند کندتر از توان پردازش فرستنده باشد

و یا بار ترافیکی زیادی در سمت گیرنده وجود داشته باشد.

کنترل جریان داده یا Flow Control فرایندی است

برای مدیریت نرخ انتقال داده بین دو گره در شبکه است.

مکانیزم کنترل جریان داده , سرعت انتقال داده را کنترل و مدیریت می کند

تا در صورتی که سرعت  ارسال داده ها در فرستند زیاد و سرعت دریافت داده ها توسط گیرند کم بود

در ارسال و دریافت داده ها دچار مشکل نشوند و گیرنده دچار سر ریز داده نشود.

کنترل جریان با کنترل ازدحام با یکدیگر فرق دارند

در واقع زمانی که ازدحام ایجاد شد باید کنترل جریان وارد عمل شود.

مکانیزم های Flow Control

Stop and Wait

ساده ترین مکانیزم کنترل جریان داده شیوه Stop and Wait است.

در این مکانیزم ابتدا گیرنده اعلام آمادگی برای دریافت داده می کند.

سپس داده ها از طرف فرستند به داده های کوچکتر شکسته

سپس فرستنده بسته داده اول را  ارسال می کند و بعد از دریافت بسته داده

توسط گیرنده پیغام ACK برای فرستنده ارسال میکند. بعد از دریافت ACK

فرستنده بسته بعدی را برای گیرنده ارسال می کند.

و گیرنده منتظر رسیدن بسته بعدی می شود.

و از طرفی فرستنده منتظر پیغام ACK از طرف گیرند می ماند تا بسته بعدی را ارسال کند.

ACK یا Acknowledgement به منظور اطمینان حاصل کردن از اینکه

گیرنده بسته داده را به درستی دریافت کرده است , برای فرستنده ارسال می شود.

Stop and Wait

فرستنده زمان مشخصی را منتظر دریافت ACK از طرف گیرنده می ماند.

در صورتی که بسته داده در بین مسیر از بین برود و به دست گیرنده نرسد

و یا به هر دلیلی ACK در زمان مشخص به دست فرستنده نرسد ,

مجدد فرستنده اقدام به ارسال بسته داده می کند

که به فرآیند انتقال مجدد بسته داده ARQ یا Automatic Repeat Request گفته می شود.

در این مکانیزم ارتباط نیمه دوطرفه یا Half-Duplex است.

یعنی فرستنده و گیرنده به طور همزمان نمی توانند برای یکدیگر داده ای ارسال کنند.

یک سمت داده ارسال می کند وسمت دیگر منتظر دریافت پیغام می ماند.

به زمانی که فرستنده منتظر  می ماند تا داده ای که برای گیرنده ارسال کرده دریافت کند

و تاییدیه آن (ACK) به دستش(فرستنده) برسد را زمان انتظار فرستنده می نامند.

که فرستند این زمان را کاملا بیکار است.

در این روش اتلاف زمان بسیار است و در هر بار فقط یک بسته داده منتقل می شود

و زمان انتظار فرستنده زیاد است و  هم کانال و هم  فرستنده بیکار هستند.

ARQ

 

Sliding Window

Sliding Window به پنجره لغزان معروف است. منظور از پنجره لغزان

همان Buffer  است که بسته های داده را در خود ذخیره می کند.

در روش Sliding Window یک پنجره یا بافر در سمت گیرنده و یکی در سمت فرستنده قرار دارد.

فرض کنیم اندازه بافر n باشد پس فرستنده از بسته داده با شماره صفر

تا بسته با شماره n-1 را ارسال می کند.

فرستنده بسته شماره صفر را ارسال می کند و منتظر دریافت پیغام ACK نمی ماند

و بسته های بعدی را هم ارسال می کند.

بعد از دریافت پیغام ACK  مربوط به بسته شماره صفر بسته داده از بافر حذف شده

و بسته بعدی یعنی بسته شماره n جایگزین می شود  که اصطلاحا می گویند

پنجره یک خانه به جلو لغزید و به همین ترتیب ادامه پیدا می کند

یعنی با دریافت پیغام ACK مربوط به بسته شماره ۱ , بسته داده با شماره ۱

از بافر حذف شده و بسته جدید یعنی بسته با شماره n+1 جایگزین می شود.

و در سمت گیرنده آماده دریافت بسته داده ها است.

با دریافت اولین بسته ACK مربوط به آن را برای فرستنده ارسال کرده

و در بافر شماره بسته جدید جایگزین می شود که یعنی آماده دریافت بسته جدید است.

فرض کنیم اندازه بافر یا پنجره ۴ باشد پس ابتد ۴ بسته داخل بافر قرار میگیرند

با شماره های ۰و۱و۲و۳

۱)بسته های داده به ترتیب ابتدا بسته صفر سپس بسته ۱ و بعد بسته های ۲ و۳

روی کانال قرار داده می شوند بدون اینکه منتظر دریافت ACK مربوطه آن باشد.

۲)با دریافت بسته صفر از طرف گیرنده ACK0 برای فرستنده ارسال می شود.

بعد از دریافت ACK0 بسته شماره صفر از بافر حذف شده و بسته جدید با شماره صفر جایگزین می شود

در واقع پنجره یک خانه به جلو حرکت می کند و بسته جدید روی کانال قرار میگیرد.

حال محتویات بافر شامل بسته های ۱و۲و۳و۰  است با دریافت ACK1 بسته داده با شماره ۱ حذف شده

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

و پنجره یک خانه به جلو حرکت می کند حال محتویات بافر شامل بسته ها با شماره ۲و۳و۴و۰و۱ است

و فرستنده منتظر دریافت ACK2 می ماند تا مجدد پنجره یک خانه به جلو بلغزد.

 

گیرنده ترتیب بسته های دریافتی را چک می کند و با دریافت هر بسته و مقایسه شماره بسته دریافتی

با شماره بافر  ACK مربوط بسته دریافتی را برای فرستنده ارسال می کند

و شماره آن را از بافر حذف می کند و شماره بسته بعدی را جایگزین می کند.

Sliding Window

در این روش فرستنده از زمان انتظار برای ارسال داده ها استفاده می کند

و هیچ زمانی نه کانال و نه فرستنده بیکار نمی مانند در واقع ارتباط دو طرفه یا Full Duplex است ,

هم زمان هم داده ها ارسال می شود و هم پیغام ACK از گیرنده به سمت فرستنده ارسال می شود.

پروتکل TCP که از پروتکل های اساسی در شبکه است از روش Sliding Window استفاده می کند

به همین دلیل است که پروتکل TCP به عنوان پروتکلConnection Oriented شناخته شده.

 

 

 

 

 

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

فهرست
Call Now Button با یک کلیک تماس بگیرید