What is Checksum?
Checksum là một chuỗi thông tin giúp kiểm tra độ tin cậy (sự chính xác thứ tự) của gói tin. Bên gửi có nhiệm vụ tạo ra checksum dựa trên dữ liệu gửi đi. Bên nhận có nhiệm vụ xác thực checksum đó để kiểm tra gói tin có bị lỗi hay không.
Giả sử bên gửi tính được giá trị là 11, nhưng bên nhận lại tính được giá trị là 10:
![[Checksum.webp|#x-small]]
Hai giá trị khác nhau đồng nghĩa với việc dữ liệu đã bị sai khác.
Checksum Calculation
Phương pháp tính checksum:
- Chia chuỗi thông tin thành
kkhối, mỗi khối cómbit (thường là 16 bit chẳng hạn như IP và TCP). - Tính tổng dữ liệu
kkhối (tổng nhị phân). - Thực hiện bù 1 (1’s complement, xem thêm Signed Integer) cho tổng nhị phân để tạo thành checksum.
Giả sử ta có chuỗi 32 bit như sau:
- Bước 1: ta chia chuỗi này thành
k = 4nhóm, mỗi nhóm cóm = 8bits. - Bước 2: thực hiện phép cộng nhị phân (xem thêm Bitwise Operations) cho 4 nhóm, được kết quả là .
- Bước 3: lật tất cả các bit lại (thực hiện phép bù 1) để tạo thành checksum, có giá trị là: .

Ở bên nhận, ta cũng tính tổng 4 khối, nếu dữ liệu không có vấn đề, kết quả thu được vẫn là . Sau đó, ta cộng tổng nhị phân với checksum của bên gửi rồi thực hiện phép bù 1 để kiểm tra lỗi.
Kết quả cho thấy dữ liệu không có lỗi.
Important