[네트워크] checksum 생성 및 검증

Narcoker·2024년 4월 19일
1

네트워크

목록 보기
12/12

checksum 이란

체크섬(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를 말한다.

checksum 생성

데이터 값들을 모두 더하기

이들을 모두 더하면 500 이다.

이를 이진수로 나타내면 0001 1111 0100 가 된다.

캐리 니블 버리기

0001 1111 0100 -> 1111 0100

2의 보수 취하기

[비트 반전]
1111 0100 - > 0000 1011

[1 더하기]
0000 1011 -> 0000 1100

checksum 생성값

0000 1100 -> 12

checksum 으로 데이터 검증

기존 데이터 값과 checksum 더하기

500 + 12 = 512
0010 0000 0000

캐리 니블 버리기

0000 0000

0이면 오류가 없다는 뜻이다.

profile
열정, 끈기, 집념의 Frontend Developer

0개의 댓글