Như chúng ta đã biết về khung dữ liệu gồm 7 trường: trường bắt đầu khung SOF (Start of Frame), trường phân xử (Arbitration field), trường điều khiển (Control field), trường dữ liệu (Data field), trường kiểm tra (CRC – Cyclic Redundancy Check), trường xác nhận (ACK – Acknowledge), và cuối cùng là trường kết thúc khung EOF (End of frame).
Nếu như trường điều khiển có chức năng khai báo trước cho trường dữ liệu, thì trường kiểm tra CRC có chức năng kiểm tra xem các bit từ SOF đến trường dữ liệu có bị méo, sai lệch thông tin hay không. Giả sử chúng ta muốn gửi k bits, thì chúng ta cần phải gửi một frame chứa n bits (với n lớn hơn k), ta phải thêm một FCS (Frame Check Sequence) vào để kiểm tra. Việc kiểm tra phải sử dụng thêm key (hay template), key này sẽ có cả ở bên gửi và cả ở bên nhận. CRC sử dụng tính chất (BXORA)XORA=BXOR0=B của phép tính XOR.
Ví dụ, chúng ta cần gửi 1 thông điệp B, với khóa key A đều có ở bên gửi và bên nhận. Thế thì thông điệp B sẽ được mã hóa bằng cách làm phép tính XOR với A, lúc này thông điệp sau khi mã hóa sẽ là (BXORA), và đặc điểm của thông điệp này là bên nhận phải có khóa key A mới có thể giải mã được. Thông điệp sau khi mã hóa (BXORA), đến bên nhận, cũng có khóa key, sẽ được giải mã bằng cách thực hiện lại phép tính XOR với khóa key A, lúc này bên nhận sẽ thu được lại thông điệp B. Việc tính cụ thể sẽ là việc trở về 0 của phép tính bên nhận, nếu về 0 (return zero) thì dữ liệu truyền không bị lỗi. Nếu phép tính không về 0 thì dữ liệu truyền bị lỗi.
Hocdienoto.com