موضوع مقاله: تشخیص و تصحیح خطا | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # تشخیص و تصحیح خطا | مقدمه: تشخیص و تصحیح خطا در نظریه اطلاعات، نظریه کدگذاری، علوم رایانه، مخابرات تکنیک‌هایی هستند که تحویل امن داده‌ها در کانال‌های مخابراتی ناامن را ممکن می‌کنند بسیاری از کانال‌ها در معرض نویز هستند و ممکن است اطلاعات در حین فرستاده‌شدن میان مبدأ و مقصد دچار خطا گردند. | ## بخش 1: تشخیص و تصحیح خطا | تعریف تشخیص خطا: تشخیص خطاهایی که با نویز یا با اختلال‌هایی ایجاد می‌گردند و درهنگام انتقال میان فرستنده و گیرنده به وجود می‌آیند. تصحیح خطا: یافتن خطا و بازیابی اصل اطلاعات تاریخچه معروف‌ترین استفاده قاعده‌دار از تشخیص خطا توسط کاتبان یهودی در هنگام کپی‌برداری از کتاب مقدسشان بود. آنها روش‌های مختلفی برای تشخیص خطا داشتند از قبیل جمع کلمات در هر خط یا جمع کلمات در هر صفحه یا چک کردن یک پاراگراف (معمولاً پاراگراف میانی). در هر صفحه اگر حتی یک خطا وجود داشت کل صفحه ازبین می‌رفت اما اگر ۳ خطا هم‌زمان دریک صفحه رخ می‌داد، کل صفحه رانابود می‌کردند. معرفی ایده عمومی این است که چیزی به متن اصلی افزوده گردد که دریافت‌کننده بتواند درستی متن دریافتی را بررسی نماید، اگر خطایی محرز گشت آن را تصحیح کند. در طرح سیستماتیک فرستنده داده‌های اصلی را همراه تعداد ثابتی عدد به عنوان بیت‌های بررسی می‌فرستد، که بیت‌های بررسی از الگوریتم قطعیای به دست می‌آیند که از داده‌های اصلی استفاده می‌کنند. اگر فقط تشخیص خطا مدنظر باشد گیرنده می‌تواند الگوریتم را دوباره بر روی داده‌های اصلی اجرا و مقدار خروجی آن را با بیت‌های بررسی مقایسه کند اگر یکسان بودند خطایی رخ نداده‌است. در سامانه‌هایی که از کد غیر سیستماتیک استفاده می‌کنند، پیام اصلی تبدیل به یک پیام کد شده می‌شود. عملکرد مناسب زمانی حاصل می‌گردند که بر اساس ویژگی‌های کانال مخابراتی و طرح‌های انتقال داده انتخاب گردند. انواع معمول کانال‌های مخابراتی شامل مدل بدون حافظه که در آن خطا به صورت تصادفی و با احتمال قطعی اتفاق می‌افتد و مدل‌های پویا است. اگر ظرفیت کانال را نتوان معین کرد یا ظرفیت بیش از حد متغیر باشد می‌توان درخواست ارسال مجدد داده‌ها را داشت که آن را به عنوان درخواست بازفرستی خودکار، می‌شناسند که به‌طور ویژه در اینترنت کاربرد دارد. | ## بخش 2: تشخیص و تصحیح خطا | اجرا تشخیص و تصحیح خطا به دو صورت زیر تحقق میابد: درخواست بازفرستی خودکار، :داده‌ها به فرم بلوکی دریافت می‌گردند هر بلوک داده برای وجود خطا بررسی می‌شود اگر خطایی یافت شود، به صورت خودکار برای آن بلاک داده درخواست ارسال مجدد می‌شود این روند ادامه میابد تا زمانی که کل داده‌ها به صورت سالم دریافت گردند. اطلاعات اضافه شده توسط کد دریافت‌کننده برای بازیابی اطلاعات اصلی مورد استفاده قرار می‌گیرد. این دو روش ممکن است ترکیب گردند وروش دیگری به نام درخواست تکرار اتوماتیک ترکیبی بسازند. طرح‌های تشخیص خطا تشخیص خطا اغلب با یک تابع درهم‌سازی مناسب صورت می‌گیرد یک تابع هش برچسب‌هایی باطول ثابت را به پیام می‌افزاید و که گیرنده را قادر می‌سازد که پیام دریافتی را با بررسی برچسب صحت آن را تأیید کند. طرح‌های بسیار زیادی برای تابع‌های هشی وجود دارد اما استفاده از آن‌ها بسته به سادگی یا مناسب بودن برای تشخیص نوع خاصی از خطاهست. کدهای تکرار اساس این طرح این است که کد ارسالی چندین بار ارسال گردد تا از صحت آن مطمئن شویم یک کد بزرگ به چندین بلاک تقسیم می‌گردد، آنگاه هر کدام چند بار مثلاً ۳ بار ارسال می‌گردند؛ بنابراین اگر یکی از این بلاک‌ها متفاوت با دیگری باشد خطایی رخ داده هست. بیت توازن دراین حالت یک بیت اضافه می‌شود به گونه‌ای که کل بیت‌های ارسالی دارای مجموع اعضای فرد یا زوج باشد. چک‌سام چک‌سام یک پیام عبارت است از هم‌نهشتی مجموع کلمات پیام کد افرونگی چرخشی یک تابع درهم‌ساز غیر ایمن هست که برای تشخیص خطاهایی تصادفی در شبکه ایجاد شده‌است. تابع درهمساز رمزنگارانه تابع درهم‌سازی هست که رشته‌ای را می‌گیرد و رشته‌ای ثابت برمی‌گرداند این طرح اطمینان بالایی از لحاظ یکپارچگی داده دارد. تصحیح خطا درخواست بازفرستی خودکار یک روش کنترل خطا که از کدهای کشف خطا، قبول یا عدم قبول پیام و وقفه برای انتقال مطمئن داده‌ها استفاده می‌کند (قبول پیام یعنی گیرنده پیامی به فرستنده می‌فرستد که پیام به درستی دریافت شده‌است). فرستنده به‌طور معمول در زمان وقفه اگر پیام قبولی دریافت نکند، پیام را مجدداً می‌فرستد و این کار تا تعداد معینی بار صورت می‌پذیرد. | ## بخش 3: تشخیص و تصحیح خطا | این روش برای کانال‌های ارتباطی متغیر یا با ظرفیت ناشناخته مانند اینترنت مناسب هست. اصلاح خطا روبه جلو بر این اساس افزونه‌ای به کد اضافه گشته تا دریافت‌کننده بتواند آن را حتی با وجود تعداد معینی خطا بازیابی کند. درخواست بازفرستی خودکار ترکیبی از ترکیب دو روش قبل به دست می‌آید و دو روش اساسی دارد: پیام‌ها با روش اصلاح خطا روبه جلو فرستاده و بعد گیرنده پیام را کد گشایی می‌کند، اگر کد گشایی درست انجام نشود، مانند درخواست بازفرستی مجدد، درخواست بازفرستادن پیام را می‌کند. پیام فقط با اطلاعاتی دربارهٔ چگونگی تشخیص خطا فرستاده می‌شود، اگر گیرنده خطایی بیابد، با روش درخواست بازفرستی مجدد خودکار درخواست اطلاعاتی دربارهٔ چگونگی تصحیح آ نرا درخواست می‌کند تا بتواند اطلاعات را بازیابی کند. موارد غیرقابل استفاده برنامه‌هایی که احتیاج به زمان تأخیر کم دارند (مانند گفتگوی تلفنی) نمی‌توان از درخواست بازفرستی خودکار استفاده کرد و باید از اصلاح خطا رو به جلو استفاده کرد. همچنین مانند مورد قبل برای برنامه‌هایی که وقتی اطلاعات را می‌فرستند دیگران را دردسترس برای ارسال مجدد ندارند نمی‌توان از درخواست باز فرستی خودکار استفاده کرد. بعضی موارد کاربرد ارتباط تنگاتنگی میان توسعه اصلاح خطا رو به جلو و برنامه‌های فضایی بود. در فضا مسافت زیاد، قدرت سیگنال کم و نیروی مورد نیاز محدود است، پس احتیاج بود اطلاعات ارسالی اگر هم مشکل دارند در همان‌جا تصحیح و مورد استفاده قرار گیرند. همچنین از تشخیص و اصلاح خطا در بالابردن قابلیت اطمینان فضاهای ذخیره‌سازی داده‌ها استفاده می‌گردد برای مثال در هارد درایوهای جدید از کد افزونه‌ای چرخشی برای تشخیص و از تصحیح خطای رید-سالامون برای تصحیح خطاهای جزئی بهره می‌برند. سامانه‌های آرایه چندگانه دیسک‌های مستقل از تکنیک‌های مختلف تشخیص و تصحیح خطاها در زمانی که هارد درایو کاملاً قفل کرده‌است، استفاده می‌کنند. | ## جمع‌بندی | حافظه دسترسی تصادفی پویاها نیز از کدهای تصحیح خطا استفاده می‌کنند، تصحیح خطا در این موارد معمولاً از کدهای همینگ استفاده می‌کنند.