DCN - การตรวจจับและแก้ไขข้อผิดพลาด
มีสาเหตุหลายประการเช่นเสียงรบกวนการสนทนาข้ามเป็นต้นซึ่งอาจช่วยให้ข้อมูลเสียหายระหว่างการส่ง เลเยอร์ด้านบนทำงานกับมุมมองทั่วไปของสถาปัตยกรรมเครือข่ายและไม่ทราบถึงการประมวลผลข้อมูลฮาร์ดแวร์ที่แท้จริงดังนั้นเลเยอร์ด้านบนจึงคาดหวังการส่งผ่านที่ปราศจากข้อผิดพลาดระหว่างระบบ แอปพลิเคชันส่วนใหญ่จะไม่ทำงานตามที่คาดหวังหากได้รับข้อมูลที่ผิดพลาด แอปพลิเคชั่นเช่นเสียงและวิดีโออาจไม่ได้รับผลกระทบและมีข้อผิดพลาดบางอย่างอาจยังทำงานได้ดี
เลเยอร์ลิงค์ข้อมูลใช้กลไกการควบคุมข้อผิดพลาดเพื่อให้แน่ใจว่าเฟรม (สตรีมบิตข้อมูล) ถูกส่งด้วยความแม่นยำระดับหนึ่ง แต่เพื่อให้เข้าใจถึงวิธีการควบคุมข้อผิดพลาดจำเป็นอย่างยิ่งที่จะต้องทราบว่าข้อผิดพลาดประเภทใดที่อาจเกิดขึ้นได้
ประเภทของข้อผิดพลาด
อาจมีข้อผิดพลาดสามประเภท:
Single bit error
ในเฟรมมีเพียงบิตเดียวเท่านั้นที่เสียหาย
Multiple bits error
เฟรมได้รับที่มีมากกว่าหนึ่งบิตในสถานะเสียหาย
Burst error
เฟรมมีมากกว่า 1 บิตต่อเนื่องที่เสียหาย
กลไกการควบคุมข้อผิดพลาดอาจเกี่ยวข้องกับสองวิธีที่เป็นไปได้:
การตรวจจับข้อผิดพลาด
แก้ไขข้อผิดพลาด
การตรวจจับข้อผิดพลาด
ตรวจพบข้อผิดพลาดในเฟรมที่ได้รับโดยใช้ Parity Check และ Cyclic Redundancy Check (CRC) ในทั้งสองกรณีบิตพิเศษสองสามบิตจะถูกส่งไปพร้อมกับข้อมูลจริงเพื่อยืนยันว่าบิตที่ได้รับที่ปลายอีกด้านนั้นเหมือนกับที่ถูกส่ง หากการตรวจสอบเคาน์เตอร์ที่จุดสิ้นสุดของผู้รับล้มเหลวบิตจะถือว่าเสียหาย
การตรวจสอบความเท่าเทียมกัน
บิตพิเศษหนึ่งบิตจะถูกส่งไปพร้อมกับบิตดั้งเดิมเพื่อสร้างจำนวน 1s ทั้งในกรณีที่มีความเท่าเทียมกันหรือคี่ในกรณีที่มีความเท่าเทียมกันแบบคี่
ผู้ส่งขณะสร้างเฟรมจะนับจำนวน 1 ในนั้น ตัวอย่างเช่นถ้ามีการใช้ความเท่าเทียมกันและจำนวน 1s เป็นคู่หนึ่งบิตที่มีค่า 0 จะถูกเพิ่มเข้าไป วิธีนี้จำนวน 1s ยังคงเป็นคู่หากจำนวน 1 เป็นเลขคี่ให้เพิ่มค่าเป็นบิตด้วยค่า 1
ผู้รับเพียงแค่นับจำนวน 1 วินาทีในเฟรม ถ้าจำนวน 1s เท่ากันและใช้ความเท่าเทียมกันเฟรมจะถือว่าไม่เสียหายและได้รับการยอมรับ หากการนับ 1s เป็นเลขคี่และใช้ความเสมอภาคแบบคี่เฟรมจะยังคงไม่เสียหาย
หากบิตเดียวพลิกระหว่างการส่งเครื่องรับจะตรวจจับได้โดยนับจำนวน 1 วินาที แต่เมื่อมีความผิดพลาดมากกว่าหนึ่งบิตเครื่องรับจะตรวจพบข้อผิดพลาดได้ยากมาก
Cyclic Redundancy Check (CRC)
CRC เป็นวิธีการอื่นในการตรวจสอบว่าเฟรมที่ได้รับมีข้อมูลที่ถูกต้องหรือไม่ เทคนิคนี้เกี่ยวข้องกับการหารไบนารีของบิตข้อมูลที่ส่ง ตัวหารถูกสร้างขึ้นโดยใช้พหุนาม ผู้ส่งดำเนินการหารกับบิตที่ส่งและคำนวณส่วนที่เหลือ ก่อนส่งบิตจริงผู้ส่งจะเพิ่มส่วนที่เหลือที่ส่วนท้ายของบิตจริง บิตข้อมูลจริงบวกส่วนที่เหลือเรียกว่า codeword ผู้ส่งส่งบิตข้อมูลเป็นคำรหัส
ในอีกด้านหนึ่งเครื่องรับจะดำเนินการหารกับ codewords โดยใช้ตัวหาร CRC เดียวกัน หากส่วนที่เหลือมีศูนย์ทั้งหมดบิตข้อมูลจะได้รับการยอมรับมิฉะนั้นจะถือว่ามีความเสียหายของข้อมูลเกิดขึ้นระหว่างการส่ง
แก้ไขข้อผิดพลาด
ในโลกดิจิทัลการแก้ไขข้อผิดพลาดสามารถทำได้สองวิธี:
Backward Error Correction เมื่อผู้รับตรวจพบข้อผิดพลาดในข้อมูลที่ได้รับจะร้องขอกลับผู้ส่งเพื่อส่งหน่วยข้อมูลอีกครั้ง
Forward Error Correction เมื่อเครื่องรับตรวจพบข้อผิดพลาดบางอย่างในข้อมูลที่ได้รับจะเรียกใช้รหัสแก้ไขข้อผิดพลาดซึ่งจะช่วยให้สามารถกู้คืนอัตโนมัติและแก้ไขข้อผิดพลาดบางประเภทได้
ข้อแรกการแก้ไขข้อผิดพลาดย้อนกลับเป็นเรื่องง่ายและสามารถใช้ได้อย่างมีประสิทธิภาพในกรณีที่การส่งข้อมูลซ้ำไม่แพง ตัวอย่างเช่นไฟเบอร์ออปติก แต่ในกรณีของการส่งสัญญาณแบบไร้สายอาจมีค่าใช้จ่ายมากเกินไป ในกรณีหลังนี้จะใช้ Forward Error Correction
ในการแก้ไขข้อผิดพลาดใน data frame ผู้รับจะต้องทราบว่าบิตใดในเฟรมเสียหาย ในการค้นหาบิตที่ผิดพลาดบิตที่ซ้ำซ้อนจะถูกใช้เป็นพาริตีบิตสำหรับการตรวจจับข้อผิดพลาดตัวอย่างเช่นเราใช้คำ ASCII (ข้อมูล 7 บิต) จากนั้นอาจมีข้อมูล 8 ประเภทที่เราต้องการ: 7 บิตแรกเพื่อบอกเราว่าบิตใด เป็นข้อผิดพลาดและอีกหนึ่งบิตที่จะบอกว่าไม่มีข้อผิดพลาด
สำหรับบิตข้อมูล m จะใช้บิตซ้ำซ้อน r r บิตสามารถให้ข้อมูลการรวมกัน 2r ในตัวแปลงรหัส m + r บิตมีความเป็นไปได้ที่ r บิตเองอาจเสียหาย ดังนั้นจำนวน r บิตที่ใช้ต้องแจ้งเกี่ยวกับตำแหน่ง m + r บิตบวกข้อมูลที่ไม่มีข้อผิดพลาดเช่น m + r + 1