DCN - Phát hiện & Sửa lỗi
Có nhiều lý do như nhiễu, nói chuyện chéo,… có thể khiến dữ liệu bị hỏng trong quá trình truyền. Các lớp trên hoạt động dựa trên một số quan điểm tổng quát về kiến trúc mạng và không nhận thức được quá trình xử lý dữ liệu phần cứng thực tế. Do đó, các lớp trên mong đợi truyền không có lỗi giữa các hệ thống. Hầu hết các ứng dụng sẽ không hoạt động như mong đợi nếu chúng nhận được dữ liệu sai. Các ứng dụng như thoại và video có thể không bị ảnh hưởng và với một số lỗi, chúng vẫn có thể hoạt động tốt.
Lớp liên kết dữ liệu sử dụng một số cơ chế kiểm soát lỗi để đảm bảo rằng các khung (luồng bit dữ liệu) được truyền với mức độ chính xác nhất định. Nhưng để hiểu cách kiểm soát lỗi, điều cần thiết là phải biết những loại lỗi nào có thể xảy ra.
Các loại lỗi
Có thể có ba loại lỗi:
Single bit error
Trong một khung hình, chỉ có một bit, ở bất kỳ đâu, bị hỏng.
Multiple bits error
Khung được nhận với nhiều hơn một bit ở trạng thái bị hỏng.
Burst error
Khung chứa hơn 1 bit liên tiếp bị hỏng.
Cơ chế kiểm soát lỗi có thể bao gồm hai cách khả thi:
Phát hiện lỗi
Sửa lỗi
Phát hiện lỗi
Lỗi trong các khung đã nhận được phát hiện bằng Kiểm tra chẵn lẻ và Kiểm tra dự phòng theo chu kỳ (CRC). Trong cả hai trường hợp, một số bit phụ được gửi cùng với dữ liệu thực tế để xác nhận rằng các bit nhận được ở đầu kia giống như chúng đã được gửi. Nếu quá trình kiểm tra đối chiếu ở đầu thu không thành công, các bit được coi là bị hỏng.
Kiểm tra chẵn lẻ
Một bit phụ được gửi cùng với các bit ban đầu để tạo thành số 1s hoặc là chẵn trong trường hợp chẵn lẻ hoặc lẻ trong trường hợp chẵn lẻ.
Người gửi trong khi tạo khung sẽ đếm số lượng 1 trong đó. Ví dụ: nếu sử dụng chẵn lẻ và số 1 là chẵn thì một bit có giá trị 0 sẽ được thêm vào. Bằng cách này, số 1 vẫn là số chẵn, nếu số 1 là lẻ, để làm cho nó chẵn một bit với giá trị 1 được thêm vào.
Người nhận chỉ cần đếm số 1 trong một khung hình. Nếu số đếm 1 là chẵn và chẵn lẻ được sử dụng, khung được coi là không bị hỏng và được chấp nhận. Nếu số đếm 1s là số lẻ và sử dụng tính chẵn lẻ thì khung hình vẫn không bị hỏng.
Nếu một bit đơn lẻ bị lật trong quá trình truyền, máy thu có thể phát hiện ra nó bằng cách đếm số 1s. Nhưng khi có nhiều hơn một bit bị lỗi, thì người nhận sẽ rất khó phát hiện ra lỗi.
Kiểm tra dự phòng theo chu kỳ (CRC)
CRC là một cách tiếp cận khác để phát hiện xem khung nhận được có chứa dữ liệu hợp lệ hay không. Kỹ thuật này liên quan đến việc phân chia nhị phân các bit dữ liệu được gửi đi. Số chia được tạo ra bằng cách sử dụng đa thức. Người gửi thực hiện phép toán chia trên các bit được gửi và tính phần còn lại. Trước khi gửi các bit thực, người gửi sẽ thêm phần còn lại vào cuối các bit thực. Các bit dữ liệu thực tế cộng với phần còn lại được gọi là từ mã. Người gửi truyền các bit dữ liệu dưới dạng từ mã.
Ở đầu kia, người nhận thực hiện thao tác chia trên các từ mã sử dụng cùng một ước số CRC. Nếu phần còn lại chứa tất cả các số không thì các bit dữ liệu được chấp nhận, nếu không, nó được coi là có một số lỗi dữ liệu đã xảy ra khi chuyển tiếp.
Sửa lỗi
Trong thế giới kỹ thuật số, việc sửa lỗi có thể được thực hiện theo hai cách:
Backward Error Correction Khi người nhận phát hiện có lỗi trong dữ liệu nhận được, nó sẽ yêu cầu người gửi truyền lại đơn vị dữ liệu.
Forward Error Correction Khi bộ thu phát hiện một số lỗi trong dữ liệu nhận được, nó sẽ thực thi mã sửa lỗi, giúp nó tự động khôi phục và sửa một số loại lỗi.
Cách đầu tiên, Backward Error Correction, rất đơn giản và chỉ có thể được sử dụng hiệu quả khi việc truyền lại không tốn kém. Ví dụ, sợi quang học. Nhưng trong trường hợp truyền không dây, việc truyền lại có thể tốn quá nhiều chi phí. Trong trường hợp sau, Sửa lỗi Chuyển tiếp được sử dụng.
Để sửa lỗi trong khung dữ liệu, máy thu phải biết chính xác bit nào trong khung bị lỗi. Để xác định vị trí bit bị lỗi, các bit dư thừa được sử dụng làm bit chẵn lẻ để phát hiện lỗi. Ví dụ, chúng ta lấy các từ ASCII (dữ liệu 7 bit), sau đó có thể có 8 loại thông tin chúng ta cần: bảy bit đầu tiên để cho chúng tôi biết bit nào là lỗi và một chút nữa để nói rằng không có lỗi.
Đối với m bit dữ liệu, r bit dư thừa được sử dụng. r bit có thể cung cấp kết hợp 2r thông tin. Trong từ mã bit m + r, có khả năng bản thân các bit r có thể bị hỏng. Vì vậy số bit r được sử dụng phải thông báo về vị trí của m + r bit cộng với thông tin không lỗi, tức là m + r + 1.