체크섬(checksum)은 데이터 전송 중에 오류를 감지하기 위해 사용되는 기술이다.
데이터의 일부를 가지고 계산된 값으로,
데이터가 손상되었는지 여부를 확인하는 데 사용된다.
체크섬 검증 방식에는 여러가지가 있다.
- 단순 합계 체크섬 (Simple Sum Checksum):
가장 간단한 형태의 체크섬으로, 데이터의 모든 바이트를 더한 후 그 결과를 사용
단순하고 빠르지만, 간단한 오류만 검출
- 오버플로우 회피 (Overflow Avoidance):
단순 합계 체크섬에서 발생할 수 있는 오버플로우를 회피하기 위해 추가적인 조치를 취한 것
checksum 을 만들때 사용되는 데이터 값들은 프토토콜 별로 다르다.
여기서는 전송할 데이터를Hello
라고 하겠다.이를 ASCII 코드로 변환하면 다음과 같다
'H' = 72 (01001000)
'e' = 101 (01100101)
'l' = 108 (01101100)
'l' = 108 (01101100)
'o' = 111 (01101111)
아래 방식은 오버플로우를 회피하기 위한 기법으로 캐리 니블을 버리는 방식이다.
니블이란 1바이트의 절반을 의미하는 4bit를 의미한다.
캐리 니블이란 최상위 4bit를 말한다.
이들을 모두 더하면
500
이다.이를 이진수로 나타내면
0001 1111 0100
가 된다.
0001 1111 0100
->1111 0100
[비트 반전]
1111 0100
- >0000 1011
[1 더하기]
0000 1011
->0000 1100
0000 1100
->12
500
+12
=512
0010 0000 0000
0000 0000
0이면 오류가 없다는 뜻이다.