کنترل گردش و پروتکل های داده-لینک در شبکه های کامپیوتری — به زبان ساده
لایهی داده-لینک مسئول پیادهسازی کنترل گردش نقطهبهنقطه و مکانیسم کنترل خطا است.
کنترل گردش
زمانی که یک فریم داده (داده لایه 2) از یک میزبان به میزبان دیگری روی یک رسانه منفرد ارسال میشود، این الزام وجود دارد که فرستنده و گیرنده با سرعت یکسانی عمل کنند. یعنی فرستنده با سرعتی دادهها را ارسال میکند که گیرنده بتواند با آن سرعت دادهها را پردازش کرده و بپذیرد. چه میشود اگر (سختافزار/نرمافزار) فرستنده یا گیرنده با هم متفاوت باشند؟ اگر فرستنده دادهها را خیلی سریع ارسال کند، گیرنده احتمالاً با مازاد بار مواجه میشود و ممکن است دادههایی از دست بروند.
دو نوع مکانیسم به نامهای «توقف و انتظار» و «پنجره لغزشی» میتوانند برای کنترل گردش داده استفاده شوند:
توقف و انتظار
این مکانیسم کنترل گردش، فرستنده را ملزم میکند که پس از ارسال یک فریم داده متوقف شده و منتظر بماند تا دریافت فریم داده در سمت گیرنده تأیید شود.
پنجره لغزشی
در این مکانیسم کنترل گردش، هم فرستنده و هم گیرنده روی تعداد فریمهای دادهای که پس از آن باید سیگنال تأیید، ارسال شود، توافق دارند. همان طور که دیدیم مکانیسم کنترل گردش «توقف و انتظار» موجب هدر رفت منابع میشود. این مکانیسم تلاش میکند که از منابع زیرساختی بیشترین بهرهبرداری ممکن را بکند.
کنترل خطا
زمانی که فریم داده ارسال میشود، این احتمال وجود دارد که فریم داده در زمان انتقال یا زمانی که دریافت میشود خراب شود. گیرنده در هر دو حالت، فریم داده درست را دریافت نمیکند و فرستنده در این خصوص هیچ اطلاعاتی ندارد. در چنین مواردی هم فرستنده و هم گیرنده از پروتکلهای یکسانی استفاده میکنند که به آنها کمک میکند تا خطاهایی مانند از دست رفتن فریم داده را تشخیص دهند. از این رو یا فرستنده فریم داده را مجدداً ارسال میکند و یا گیرنده تقاضا میکند که گیرنده فریم داده قبلی را باز ارسال کند.
الزامات مکانیسم کنترل خطا به صورت زیر هستند:
- آشکارسازی خطا: فرستنده و گیرنده، هر دوی آنها یا هر یک باید تأیید کنند که خطایی در زمان ارسال رخ داده است.
- ACK مثبت: زمانی که گیرنده یک فریم صحیح دریافت میکند، باید آن را تأیید کند.
- ACK منفی: زمانی که گیرنده یک فریم آسیبدیده دریافت میکند، یا فریم تکراری است، یک ACK به فرستنده بازگشت میدهد و فرستنده باید فریم صحیح را مجدداً ارسال کند.
- ارسال مجدد: فرستنده یک ساعت دارد و یک دوره timeout را برسی میکند. اگر پیام تأیید یک فریم داده که قبلاً ارسال شده تا قبل از timeout نرسد، متوجه میشود که فریم یا تأیید نشده و یا در زمان انتقال از دست رفته است و فریم را دوباره میفرستد.
سه نوع تکنیک وجود دارند که لایه داده-لینک برای کنترل خطاها به وسیله «درخواستهای تکرار خودکار» (Automatic Repeat Requests) یا به اختصار ARQ استفاده میکند:
ARQ توقف و انتظار
در ARQ توقف و انتظار چنین انتقالی ممکن است به وقوع بپیوندد:
- فرستنده یک شمارنده timeout نگهداری میکند.
- زمانی که فریمی ارسال میشود، فرستنده شمارنده timeout را آغاز میکند.
- اگر پیام تأیید فریم برسد، فرستنده اقدام به ارسال فریم بعدی در صف میکند.
- اگر پیام تأیید نرسد، فرستنده فرض میکند که یا فریم یا پیام تأیید آن در راه از دست رفته است. فرستنده آن فریم را مجدداً ارسال میکند و شمارنده timeout را مجدداً راهاندازی میکند.
- اگر پیام تأیید منفی دریافت شود، فرستنده فریم را مجدداً ارسال میکند.
ARQ با نام Go-Back-N
مکانیسم ARQ «توقف و انتظار» از منابعی که در اختیار دارد، به بهترین نحو استفاده نمیکند. زمانی که پیام تأیید دریافت میشود، فرستنده معطل میماند و هیچ کاری انجام نمیدهد. اما در متد ARQ دیگری که Go-Back-N نام دارد هم فرستنده و هم گیرنده یک پنجره دارند.
اندازه پنجره ارسال به فرستنده امکان میدهد که چندین فریم را بدون تأیید فریمهای قبلی ارسال کند. پنجره دریافتی به گیرنده امکان میدهد که چندین فریم را بدون نیاز به تأیید تک تک آنها دریافت کند. گیرنده رد شماره توالی فریمهای دریافتی را حفظ میکند.
زمانی که فرستنده همه فریمها را در یک پنجره ارسال میکند، بررسی میکند که تا چه شماره سریالی قبلاً تأیید شده است، فرستنده مجموعه بعدی فریمها را ارسال میکند. اگر گیرنده دریابید که یک NACK دریافت کرده است و یا هیچ ACK-ی برای یک فریم داده مشخص دریافت نکرده است، همه فریمهای پس از آن را که ACK مثبتی نگرفته است، مجدداً ارسال میکند.
ARQ تکرار گزینشی
در ARQ نوع قبلی فرض میشود که گیرنده هیچ فضای بافری برای اندازه پنجره خود ندارد و مجبور است هر فریمی را که دریافت میکند پردازش نماید. این امر مستلزم این است که فرستنده همه فریمهایی را که تأیید نشدهاند مجدد ارسال کند.
در ARQ تکرار گزینشی، گیرنده همزمان که شماره سریال را حفظ میکند، فریمها را نیز در حافظه بافر میکند و NACK را برای تنها یک فریم که مفقود شده یا آسیبدیده ارسال میکند. در این حالت فرستنده تنها بستهای را که برای آن NACK دریافت کرده است ارسال میکند.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای شبکههای کامپیوتری
- گنجینه آموزشهای شبکه های کامپیوتری
- مجموعه آموزشهای دروس علوم و مهندسی کامپیوتر
- دستور Ping و بررسی وضعیت شبکه با استفاده از خط فرمان
- مدل های شبکه کامپیوتری — راهنمای جامع
- مفاهیم مقدماتی انتقال داده و شبکه های کامپیوتری — راهنمای جامع
==