Phát hiện lỗi

Một phần của tài liệu NGHIÊN cứu mã điều KHIỂN lỗi TRONG (Trang 47)

Khi một node nhận gói tin từ node khác gửi đến, làm thế nào để nó có thể biết một trong những lỗi trên xảy ra, trừ trường hợp nó phải gửi mỗi đơn vị dữ liệu hai lần rồi node nhận so sánh hai đơn vị dữ liệu nhận được theo từng bit một, từ đó phát hiện ra lỗi. Nhưng như vậy thì làm mất hai lần thời gian để so sánh từng bit dữ liệu, cộng thêm thời gian để so sánh từng bit dữ liệu. Phương pháp này không hiệu quả do thời gian xử lý một gói tin gấp hai lần bình thường, và dữ liệu đến lần trước và lần sau cũng không biết được lần nào bị lỗi. Rõ ràng phải có cơ chế phát hiện lỗi vừa đơn giản mà không làm tốn thời gian truyền của gói tin trong mạng hay làm giảm hiệu năng mạng.

Chỉ bằng cách đưa vào các thông tin dư thừa trong quá trình truyền nhằm mục đích so sánh, thay thế việc lặp toàn bộ dữ liệu, chỉ cần một nhóm nhỏ các bit thêm vào cuối mỗi đơn vị dữ liệu. Kỹ thuật này gọi là dư thừa bởi vì một số bit bên ngoài được thêm vào là thừa so với thông tin cần gửi đi. Những bit dư

thừa này sẽ được bỏ đi, khi thông tin truyền tới nơi nhận đã được kiểm tra và xác nhận là không bị lỗi.

Hình 2.5 Phương pháp sử dụng bit dư thừa

Mỗi khi chuỗi bit dữ liệu được phát đi đều phải đi qua một thiết bị phân tích và bổ sung vào một chuỗi dữ liệu đó, mã kiểm tra dư thừa thích hợp. Đơn vị dữ liệu trở nên lớn hơn bởi một số bit thêm vào, tất cả được truyền lên đường liên kết đến nơi nhận. Thiết bị nhận đặt toàn bộ chuỗi này vào một khối kiểm tra. Nếu chuỗi dữ liệu nhận được, đi qua được khối kiểm tra thì phần dữ liệu sẽ được nhận còn các bit dư thừa sẽ được bỏ qua.[4]

Có 4 cách để kiểm tra dư thừa đó là:

- Kiểm tra dư thừa đứng VRC, hay còn gọi là kiểm tra chẵn lẻ - Kiểm tra dư thừa dài LRC

- Kiểm tra dư thừa tuần hoàn CRC - Tổng kiểm tra Checksum

Kiểm lỗi dư thừa tuần hoàn CRC

Phương pháp kiểm lỗi này có độ tin cậy cao nhất. VRC và LRC dựa vào việc bổ sung thêm số bit, còn CRC dựa vào phép chia nhị phân. Trong CRC chuỗi các bit dư thừa được gọi là số dư CRC, sẽ bổ sung thêm vào cuối đơn vị dữ liệu sao cho đơn vị dữ liệu mới này là chia không dư cho số nhị phân được quy định trước và sử dụng ở nơi gửi. Khi đó đơn vị dữ liệu được xem là không

lỗi và sẽ được nhận. Trường hợp phép chia có dư, nghĩa là đơn vị dữ liệu đã bị lỗi và không được nhận.

Các bit dư thừa CRC được nơi gửi tính bằng cách chia đơn vị dữ liệu cho một số chia xác định trước, số dư chính là CRC. CRC phải có ít hơn số chia một bit và phải bổ sung vào cuối dữ liệ. Hình dưới minh hoạ quá trình kiểm lỗi CRC:

Hình 2.6 Quá trình kiểm lỗi CRC

Đầu tiên thêm n bit “0” vào cuối đơn vị dữ liệu, số n ít hơn số chia 1 bit. Tiếp theo đơn vị dữ liệu mới này được chia cho số chia. Số dư của phép chia chính là CRC. CRC thu được, thay cho các bit “0” ở cuối đơn vị dữ liệu. Nếu số dư ít hơn n bit thì bổ sung thêm số 0 vào các bit bên trái. Nếu phép chia không dư thì n số 0 được đặt làm số dư và nó là CRC..

Đơn vị dữ liệu chuyển tiếp đến thiết bị nhận, dữ liệu đến trước và theo sau là CRC. Thiết bị nhận xem toàn bộ dữ liệu này như một đơn vị và chia nó cho cùng một số chia đã được sử dụng ở bên gửi.

Nếu chuỗi dữ liệu khi được kiểm tra CRC cho số dư bằng 0 được xem là không lỗi và được nhận. Nếu chuỗi dữ liệu bị thay đổi trong quá trình truyền, số dư sẽ khác 0 và đơn vị dữ liệu bị lỗi, không nhận được.

CRC phát hiện tất cả các lỗi, trừ khi giá trị các bit của khối chính xác bằng giá trị của số chia. Số chia CRC thông dụng là 13, 17 và 33, bảo đảm phát hiện hết lỗi.

Hình 2.7 Phép chia nhị phân để tìm CRC

Hình trên mô tả quá trình tạo ra CRC, dữ liệu là 111001, số chia là 11001. Số chia trong phép chia phải được chọn sao cho thực hiện phép chia nhị phân được dễ dàng và kết quả phép chia có dư. Nó được suy từ một đa thức sinh:

Các hệ số trong đa thức lập thành 1011 là số chia. Do đó với CRC-12 thì số chia có 13 bậc nhị phân, CRC-16 thì số chia có 17 bậc nhị phân, CRC-32 thì số chia có 33 bậc nhị phân.

Một phần của tài liệu NGHIÊN cứu mã điều KHIỂN lỗi TRONG (Trang 47)

Tải bản đầy đủ (PDF)

(93 trang)