Khi dữ liệu được truyền từ thiết bị này sang thiết bị khác, hệ thống không đảm bảo liệu dữ liệu do thiết bị nhận được có giống với dữ liệu được truyền bởi thiết bị khác hay không. Lỗi là một tình huống khi thông báo nhận được ở đầu cuối người nhận không giống với thông báo được truyền đi.
Các bài viết liên quan:
Các loại lỗi
Lỗi có thể được phân thành hai loại:
- Lỗi một bit
- Lỗi Burst
Lỗi một bit:
Một bit duy nhất của một đơn vị dữ liệu nhất định được thay đổi từ 1 thành 0 hoặc từ 0 thành 1.
Trong hình trên, thông điệp được gửi đi bị hỏng dưới dạng bit đơn, tức là bit 0 được thay đổi thành 1.
Lỗi một bit không xuất hiện nhiều hơn trong Truyền dữ liệu nối tiếp. Ví dụ: Người gửi gửi dữ liệu ở tốc độ 10 Mbps, điều này có nghĩa là bit chỉ tồn tại trong 1 s và để xảy ra lỗi một bit, nhiễu phải lớn hơn 1 s.
Lỗi Burst:
Hai hoặc nhiều bit được thay đổi từ 0 thành 1 hoặc từ 1 thành 0 được gọi là Lỗi Burst.
Lỗi Burst được xác định từ bit bị hỏng đầu tiên đến bit bị hỏng cuối cùng.
Thời lượng nhiễu trong Burst Error nhiều hơn thời lượng nhiễu trong Single-Bit.
Lỗi Burst có nhiều khả năng xảy ra trong Truyền dữ liệu nối tiếp.
Số lượng bit bị ảnh hưởng phụ thuộc vào thời gian của nhiễu và tốc độ dữ liệu.
Kỹ thuật Error Detection:
Các Kỹ thuật Error Detection phổ biến nhất là:
- Kiểm tra chẵn lẻ
- Kiểm tra chẵn lẻ hai chiều
- Checksum
- Kiểm tra dự phòng theo chu kỳ
Kiểm tra chẵn lẻ đơn
- Kiểm tra chẵn lẻ đơn là cơ chế đơn giản và không tốn kém để Error Detection.
- Trong kỹ thuật này, một bit dư thừa còn được gọi là bit chẵn lẻ được nối vào cuối đơn vị dữ liệu để số 1 trở nên chẵn. Do đó, tổng số bit được truyền sẽ là 9 bit.
- Nếu số lượng bit 1s là số lẻ, thì bit chẵn lẻ 1 được thêm vào và nếu số lượng bit 1s là số chẵn, thì bit chẵn lẻ 0 được nối vào cuối đơn vị dữ liệu.
- Ở cuối nhận, bit chẵn lẻ được tính toán từ các bit dữ liệu nhận được và so sánh với bit chẵn lẻ nhận được.
- Kỹ thuật này tạo ra tổng số 1 số chẵn, vì vậy nó được gọi là kiểm tra chẵn lẻ.
Mặt hạn chế của việc kiểm tra chẵn lẻ đơn lẻ
- Nó chỉ có thể Error Detection một bit rất hiếm.
- Nếu hai bit được hoán đổi cho nhau, thì nó không thể phát hiện ra lỗi.
Kiểm tra chẵn lẻ hai chiều
- Có thể cải thiện hiệu suất bằng cách sử dụng Kiểm tra chẵn lẻ hai chiều để sắp xếp dữ liệu dưới dạng bảng.
- Các bit kiểm tra chẵn lẻ được tính cho mỗi hàng, tương đương với kiểm tra chẵn lẻ đơn.
- Trong kiểm tra chẵn lẻ hai chiều, một khối bit được chia thành các hàng và hàng bit dư thừa được thêm vào toàn bộ khối.
- Ở cuối nhận, các bit chẵn lẻ được so sánh với các bit chẵn lẻ được tính toán từ dữ liệu nhận được.
Hạn chế của kiểm tra chẵn lẻ 2D
- Nếu hai bit trong một đơn vị dữ liệu bị hỏng và hai bit chính xác ở cùng một vị trí trong một đơn vị dữ liệu khác cũng bị hỏng, thì trình kiểm tra chẵn lẻ 2D sẽ không thể phát hiện ra lỗi.
- Kỹ thuật này không thể được sử dụng để Error Detection 4 bit trở lên trong một số trường hợp.
Checksum
Checksum là một kỹ thuật Error Detection dựa trên khái niệm dự phòng.
Nó được chia thành hai phần:
Máy phát hiện Checksum
Một Checksum được tạo ở phía gửi. Bộ tạo Checksum chia nhỏ dữ liệu thành các đoạn bằng nhau gồm n bit mỗi đoạn và tất cả các đoạn này được cộng lại với nhau bằng cách sử dụng số học bổ sung của một người. Tổng được bổ sung và nối vào dữ liệu gốc, được gọi là trường tổng kiểm tra. Dữ liệu mở rộng được truyền trên mạng.
Giả sử L là tổng của các đoạn dữ liệu, thì tổng kiểm tra sẽ là? L
- Người gửi làm theo các bước đã cho:
- Đơn vị khối được chia thành k phần, và mỗi phần n bit.
- Tất cả k phần được cộng lại với nhau bằng cách sử dụng phần bù của một người để nhận được tổng.
- Tổng được bổ sung và nó trở thành trường tổng kiểm tra.
- Dữ liệu gốc và trường tổng kiểm tra được gửi qua mạng.
Kiểm tra Checksum
Một Checksum được xác minh ở phía nhận. Máy thu chia nhỏ dữ liệu đến thành các đoạn bằng nhau, mỗi đoạn n bit, và tất cả các đoạn này được cộng lại với nhau, và sau đó tổng này được bổ sung. Nếu phần bù của tổng bằng 0, thì dữ liệu được chấp nhận nếu không thì dữ liệu bị từ chối.
- Người nhận làm theo các bước đã cho:
- Đơn vị khối được chia thành k phần và mỗi phần n bit.
- Tất cả k phần được cộng lại với nhau bằng cách sử dụng thuật toán bổ sung của một người để lấy tổng.
- Tổng là bổ sung.
- Nếu kết quả của tổng bằng 0, thì dữ liệu được chấp nhận, ngược lại dữ liệu sẽ bị loại bỏ.
Ví dụ tính checksum
Checksum là một phương pháp kiểm tra lỗi dữ liệu bằng cách tính toán một giá trị số từ dữ liệu và gửi giá trị số đó kèm theo dữ liệu. Người nhận có thể tính lại giá trị số từ dữ liệu nhận được và so sánh với giá trị số được gửi kèm để kiểm tra tính chính xác của dữ liệu.
Dưới đây là một ví dụ cách tính checksum:
Giả sử bạn có một chuỗi ký tự sau đây: “Hello, world!” và bạn muốn tính checksum của nó.
Bước 1: Gán giá trị ban đầu cho checksum bằng 0.
checksum = 0
Bước 2: Duyệt từng ký tự trong chuỗi ký tự và thực hiện phép toán XOR giữa giá trị số ASCII của ký tự và checksum.
Ví dụ, giá trị số ASCII của ký tự “H” là 72, ta thực hiện phép toán XOR giữa 72 và checksum (ban đầu là 0), kết quả là 72.
checksum = 72
Tiếp theo, ta tính toán checksum cho các ký tự tiếp theo trong chuỗi ký tự. Với ký tự tiếp theo “e”, giá trị số ASCII là 101, ta thực hiện phép toán XOR giữa 101 và checksum (lúc này checksum đã có giá trị là 72), kết quả là 45.
checksum = 45
Tiếp tục tính toán checksum cho các ký tự còn lại, ta sẽ được giá trị checksum cuối cùng là 17.
Bước 3: Gửi dữ liệu và checksum đi kèm nhau.
Giá trị checksum cuối cùng là 17, nó sẽ được gửi kèm với chuỗi ký tự “Hello, world!” để đảm bảo tính chính xác của dữ liệu.
Khi người nhận nhận được dữ liệu và checksum, họ sẽ tính lại checksum từ dữ liệu và so sánh với checksum được gửi kèm để kiểm tra tính chính xác của dữ liệu. Nếu giá trị checksum tính được bằng với checksum được gửi kèm, thì dữ liệu được coi là hợp lệ. Nếu giá trị checksum tính được khác với checksum được gửi kèm, thì dữ liệu có thể đã bị thay đổi hoặc bị lỗi trong quá trình truyền tải.
Kiểm tra dự phòng theo chu kỳ (CRC)
CRC là một kỹ thuật lỗi dự phòng được sử dụng để xác định lỗi.
Sau đây là các bước được sử dụng trong CRC để Error Detection:
- Trong kỹ thuật CRC, một chuỗi n 0 được nối vào đơn vị dữ liệu và số n này nhỏ hơn số bit trong một số định trước, được gọi là phép chia là n + 1 bit.
- Thứ hai, dữ liệu mới được mở rộng được chia cho một số chia bằng cách sử dụng một quá trình được gọi là phép chia nhị phân. Phần còn lại được tạo ra từ sự phân chia này được gọi là phần còn lại của CRC.
- Thứ ba, phần còn lại của CRC thay thế các số 0 được thêm vào ở cuối dữ liệu gốc. Đơn vị mới được tạo này được gửi đến người nhận.
- Người nhận nhận dữ liệu theo sau là CRC còn lại. Người nhận sẽ coi toàn bộ đơn vị này là một đơn vị duy nhất và nó được chia cho cùng một ước số đã được sử dụng để tìm phần dư CRC.
Nếu kết quả của phép chia này bằng 0 có nghĩa là nó không có lỗi và dữ liệu được chấp nhận.
Nếu kết quả của phép chia này không phải là 0, có nghĩa là dữ liệu có lỗi. Do đó, dữ liệu bị loại bỏ.
Hãy hiểu khái niệm này thông qua một ví dụ:
Giả sử dữ liệu ban đầu là 11100 và số chia là 1001.
Máy phát CRC
- Máy phát CRC sử dụng bộ chia modulo-2. Đầu tiên, ba số 0 được thêm vào cuối dữ liệu vì độ dài của số chia là 4 và chúng ta biết rằng độ dài của chuỗi các số 0 sẽ được thêm vào luôn nhỏ hơn độ dài của số chia.
- Bây giờ, chuỗi trở thành 11100000 và chuỗi kết quả được chia cho số chia 1001.
- Phần còn lại được tạo ra từ phép chia nhị phân được gọi là phần dư CRC. Giá trị được tạo của CRC còn lại là 111.
- Phần còn lại của CRC thay thế chuỗi số 0 được nối thêm ở cuối đơn vị dữ liệu và chuỗi cuối cùng sẽ là 11100111 được gửi qua mạng.
Trình kiểm tra CRC
- Chức năng của bộ kiểm tra CRC tương tự như bộ tạo CRC.
- Khi chuỗi 11100111 được nhận ở đầu nhận, thì trình kiểm tra CRC thực hiện phép chia modulo-2.
- Một chuỗi được chia cho cùng một ước số, tức là 1001.
- Trong trường hợp này, bộ kiểm tra CRC tạo ra phần còn lại của số không. Do đó, dữ liệu được chấp nhận.