تشخیص و تصحیح خطا در شبکه

چاپ

تشخیص و تصحیح خطا در شبکه

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


انواع خطاها در شبکه

ممکن است سه نوع خطا وجود داشته باشد:
1- یک بیت خطا

Single bit error

در یک قاب تنها یک بیت وجود دارد، هر چند که دچار مشکل است.
2- خطای بیت های چندگانه

Multiple bits error

قاب های دریافتی با بیش از یک بیت در حالت خراب شده قرار دارد.

3- خطای پشت سر هم

Burst error

قاب شامل بیش از یک بیت متوالی خراب شده می باشد.
مکانیزم کنترل خطا عبارتند از:

  1. تشخیص خطا
  2. تصحیح خطا

1- تشخیص خطا در شبکه

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

Even Parity

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

CRC

در انتهای دیگر، گیرنده انجام عمل تقسیم در کلمه های کد با استفاده از همان مقسوم علیه CRC. اگر باقی مانده صفر شامل تمام بیت های داده پذیرفته می شوند، در غیر این صورت آن را در نظر گرفته است به عنوان وجود دارد برخی از فساد داده در حمل و نقل رخ داده است.


2- تصحیح خطا در شبکه

در دنیای دیجیتال، تصحیح خطا به دو روش انجام می شود:

  1. تصحیح خطا به عقبگرد:
    هنگامی که گیرنده یک خطا در داده های دریافتی را تشخیص می دهد، درخواستی به فرستنده می دهد تا آن واحد داده را دوباره بفرستد.
  2. تصحیح خطا به جلو:
    هنگامی که گیرنده برخی از خطاها را در داده های دریافت شده تشخیص می دهد، کد تصحیح خطای مربوط به آن را اجرا می کند، که این کار کمک می کند تا به صورت خودکار بازیابی صورت گیرد و برخی از انواع خطاها تصحیح شود.

اولین روش با نام تصحیح خطا بصورت عقبگرد، روشی بسیار ساده است و تنها زمانی می تواند به نحو احسن استفاده شود که فرستادن دوباره داده ها هزینه گرانی نداشته باشد. به عنوان مثال، فیبر نوری. اما در مورد انتقال بی سیم، فرستادن دوباره ممکن است بیش از حد هزینه داشته باشد. در این مورد، روش تصحیح خطا به جلو استفاده می شود.
برای تصحیح خطا در قاب داده ها، گیرنده باید دقیقا بداند که کدام بیت در قاب دچار خرابی شده است. برای قرار دادن مقدار صحیح در بیت خطادار، بیت های اضافی به عنوان بیت توازن برای تشخیص خطا استفاده می شود. برای مثال، ما کلمات اسکی 7 بیتی (ASCII) را گرفته، سپس 8 نوع اطلاعات می تواند وجود داشته باشد که ما نیاز داریم:

در ابتدا هفت بیت به ما می گوید که کدام بیت با خطا مواجه است و یک بیت بیشتر برای نشان دادن اینکه هیچ خطایی وجود ندارد.
برای تعداد m بیت داده، تعداد R بیت اضافی استفاده می شود. تعداد R بیت می تواند 2R (2 بتوان R) ترکیب اطلاعات ارائه کند. اگر کلمه رمز m+r بیت باشد، این امکان وجود دارد که ممکن است تعداد R بیت خراب شده باشد. بنابراین تعداد R بیت استفاده شده باید در مورد مکان m+r بیت اطلاعات بدون خطا بدهد، به عنوان مثال m+r+1

Required bits