티스토리 뷰

Study/CS

TCP - Checksum

jhin.lee 2019. 7. 16. 11:30

Checksum

 

체크섬(checksum)은 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법이다.

 

TCP - Checksum

 

TCP checksum을 계산하기 위해서는 pseudo header라는 것이 필요하다. pseudo header는 TCP의 checksum을 계산하기 위해서 필요한 추가적인 데이터로 다음과 같은 정보를 포함한다.

Pseudo Header

 

이제 TCP Checksum을 구하기 위한 절차는 다음과 같다.

 

1. Pseudo Header, TCP Segment의 모든 값을 16비트 단위로 나눈다.

(예를 들어 12바이트(96비트)인 Pseudo Header의 경우 6개의 16비트 값으로 나눌 수 있다.)

 

2. TCP Header의 Checksum 필드는 0x00으로 초기화 하고 계산한다. (송신이든 수신이든)

 

3. 각각의 합마다 발생하는 carry는 모두 *wrap around 하면서 전부 더해준다.

(아래에 8비트 합 연산시 wrap around를 하는 예제를 그려놨다. carry를 계속 더해주는 방식을 말한다.)

 

warp around 방식

4. 계산 결과에 1의 보수를 취한다. (1의보수 = 모든 자리수의 반전)

 

이것이 체크섬 값이 되고 송신자는 이 값을 체크섬 필드에 적어 보낸다.

수신자는 같은 방식으로 합을 한뒤 1의 보수를 취하지 않고 마지막에 전송받은 체크섬을 더하여 모든 비트가 1인경우 정상, 하나라도 0이 있을 경우 비정상임을 알 수 있다.

 

참고문헌

[프로토콜] TCP Checksum (TCP 체크섬)

TCP체크섬 계산방법 - 보안세상 - 티스토리

https://ko.wikipedia.org/wiki/순환_중복_검사

https://ko.wikipedia.org/wiki/체크섬

'Study > CS' 카테고리의 다른 글

송신 포트 vs 수신 포트 (Source Port vs Destination Port)  (0) 2019.07.30
TCP - Connection Establishment/Termination  (0) 2019.07.16
TCP - Segment Structure  (0) 2019.07.12
TCP  (0) 2019.07.12
유니티 최적화 기법들  (0) 2019.02.11
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함