انواع کد های تشخیص واصلاح خطا

تازه ها

انواع کد های تشخیص واصلاح خطا

نظرات ()


کد های تشخیص خطا : هر چقدر هم که از کابل های خوبی استفاده کنیم باز ممکن است که اطلاعات ارسالی فرستنده در حین عبور از شبکه خراب شود .(تغییر مقدار )

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

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

نکته : عمل تشخیص خطا خیلی مهم است .سیستم شما در حال دریافت یک فایل ۳ مگابایتی می باشد  ۲۹۹۹۹۹۹ بایت سالم دریافت می شود و فقط یک بایت در راه خراب می شود . اگر سیستم شما این را نفهمد و این بایت را نیز مصرف کند فایلش باز نخواهد شد .

نکته : هیچ کدام از روش های تشخیص خطا کامل نیستند . روشی بهتر است که گیرنده با آن درصد بیشتری در خطاها را تشخیص دهد .

  ۳ روش تشخیص خطا بر اساس قدرت به صورت زیر است :

  • parity
  •  check sum
  • CRC

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

  نکته : در شبکه فریم بندی داریم . یعنی وقتی فرستنده می خواهد فایلی را بفرستد به جای اینکه تک تک بایتهای فایل را مستقیما به سوی گیرنده ارسال کند ابتدا این فایل را به قطعات کوچکتری به نام فریم می شکند . (مثلا هر فریم ۲۰۰۰ بایت ) و هر فریم را به صورت مستفل به سوی گیرنده ارسال می کند.

 Parity -۱ : این روش در سطح بایت عمل می کند . فرستنده به هر بایت بیتی را به عنوان کد تشخیص خطا به نام بایت parity می افزاید. مقدار این بیت را طوری تعیین می کند که ۹ بیت حاصل تعداد ۱ زوج داشته باشد و سپس می فرستد ، گیرنده پس از دریافت توقع دارد تعداد یک های هر ۹ بیت زوج مانده باشد . هرگونه تناقض نشان دهنده یک خطاست . اگر گیرنده خطایی را در یک بایت تشخیص دهد کل فریمی را که این بایت جز آن بود دور می ریزد . و مجددا آن را درخواست می کند .

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

 

Parity network

Parity network

Check sum -۲ : این روش در سطح فریم عمل می کند .فرستنده قبل از ارسال فریم ، حاصل جمع تمامی بایتهای فریم را محاسبه و این حاصل جمع را به عنوان کد تشخیص خطا به انتهای فریم اضافه می کند و سپس می فرستد . گیرنده پس از دریافت ، خودش این حاصل جمع را محاسبه و با کد تشخیص خطای فریم مقایسه می کند .عدم تساوی نشان دهنده خطاست . خیلی از خطاهایی را که parity  قادر به تشخیص آن نیست check sum  تشخیص می دهد . اما آن نیز کامل نیست. مثلا اگر خطایی که یکی از بایتهای فریم را کاهش می دهد و بایت دیگر را به همان اندازه افزایش دهد حاصل جمع ثابت مانده م خطا پنهان می ماند.

 Check sum network


Check sum network

CRC -۳: کامل ترین روش تشخیص خطاست . فرستنده قبل از ارسال فریم آن را به CRC اعمال و ۱۶ بیت نهایی آن را به عنوان کد تشخیص خطا به ته فریم می افزاید . گیرنده پس از دریافت این فریم مجددا به CRC اعمال کرده و ۱۶ بیت نتیجه را با کد تشخیص خطای فریم مقایسه می کند .عدم تساوی نشان دهنده یک خطاست .

 crc network


crc network

به طور کلی کشف خطا از تصحیح آن آسان تر است.

دو تکنیک اصلی برای تصحیح خطا داریم:

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

روش دوم تصحیح خطای پیش رو یا Forward Error Correction نام دارد. در این روش گیرنده نه تنها کشف می کند که پیام دارای خطا است بلکه با کمک بیت های افزونه و با تکنیک های خاصی  سعی در حدس زدن پیام مورد نظر می کند.

روشهاي تشخيص خطا

 

1)     روش جمع كنترلي

 روشي براي كشف خطا در اطلاعات كه معمولا با جمع زدن مجموعه اي از مقادير محاسبه مي گردد.معمولا جمع كنترلي براي داده ها محاسبه و به منظور مقايسه به انتهاي داده ها افزوده مي شوند به عنوان مثال در xmodem كه يك قرار داد در انتقال فايل است از جمع كنترلي صرف نظر از سرريز آن محاسبه مي شود جمع كنترلي هميشه قادر به كشف تمام خطاها نمي باشد. از اين روش در BBS استفاده می شود.

 

 

 

در داده های دريافتی1 ماهيت اطلاعات با داده های ارسالی يکسان است ولی در داده های دريافتی2 يا اينکه ماهيت اطلاعات متفاوت است اين روش قادر به تشخيص خطا نمی باشد زيرا جمع کنترلیِ داده های ارسالی با دريافتی يکسان   می باشد.

 

2)     تشخيص خطا در مقصد(EFC)

تكنيكي به منظور كنترل خطا كه بيت هاي افزونه يا اضافي را در رشته درج مي كند و ابزار گيرنده از بيت هاي اضافي براي كشف خطاهای انتقال استفاده مي کند(بيت توازن).

 

بيت توازن

در ارتباطات از شكل سادة بررسي خطا به وسيله بيت اضافي يا افزونه بعد از بيت هاي داده و قبل از بيت هاي توقف استفاده مي شود. بيت توازن انواع زيادي دارد كه عبارتند از: توازن زوج، توازن فرد، توازن نشانه، توازن فاصله. يك فريم داده اي با استفاده از بيت توازن به صورت زير مي باشد.