인터넷 체크섬(RFC 1071) 계산기
IP·TCP·UDP 헤더가 쓰는 RFC 1071 체크섬을 16비트 워드별 누적합까지 단계별로 계산합니다. IPv4 헤더를 붙여 넣으면 체크섬 칸을 빼고 계산해 적혀 있는 값과 맞춰 봅니다.
IPv4 헤더 20바이트를 붙여 넣습니다. 체크섬 칸(11~12번째 바이트)은 계산에서 빼고 셉니다
체크섬 · 10개 워드
0x2651
헤더에 적힌 0x2651과 같습니다
계산 과정
16비트 워드별 누적
| # | 워드 | 누적합 |
|---|---|---|
| 0 | 0x4500 | 0x4500 |
| 1 | 0x0040 | 0x4540 |
| 2 | 0x0000 | 0x4540 |
| 3 | 0x4000 | 0x8540 |
| 4 | 0x4006 | 0xC546 |
| 5 | 0x2651체크섬 칸 · 0으로 | 0xC546 |
| 6 | 0x0A16 | 0xCF5C |
| 7 | 0x001E | 0xCF7A |
| 8 | 0x0A16 | 0xD990 |
| 9 | 0x001E | 0xD9AE |
헤더 필드
받는 쪽의 검사
체크섬 칸까지 포함해 전부 더해 봅니다. 온전하면 접은 합이 0xFFFF, 그 보수가 0이 됩니다.
사용 방법
- 1IPv4 헤더 20바이트를 16진수로 붙여 넣습니다. 공백·콜론·0x는 무시합니다.
- 216비트 워드별 누적합과 자리올림을 되돌려 더하는 과정을 확인합니다.
- 3나온 체크섬이 헤더에 적힌 값과 같은지 봅니다. 받는 쪽처럼 전부 더해 0이 되는지도 함께 보여 줍니다.
자주 묻는 질문
자료를 16비트 워드로 끊어 전부 더하고, 16비트를 넘친 자리올림을 버리지 않고 하위 16비트에 되돌려 더한 뒤, 그 결과의 비트를 전부 뒤집으면(1의 보수) 체크섬입니다. 되돌려 더한 값이 또 넘칠 수 있으므로 넘치지 않을 때까지 반복합니다.
32비트로 넘친 위쪽 16비트를 버리지 않고 아래쪽 16비트에 다시 더하는 것입니다. 구현이 가장 자주 틀리는 자리로, 그냥 0xFFFF로 마스킹해 버리면 자리올림이 사라져 다른 값이 나옵니다. 1의 보수 연산에서는 자리올림이 최하위로 돌아오는 것이 정의라서 이렇게 합니다.
0으로 두고 계산합니다. 보내는 쪽이 그렇게 구한 값을 그 칸에 채워 넣으면, 받는 쪽은 체크섬 칸까지 포함해 전부 더하기만 하면 됩니다. 온전하다면 합이 항상 0xFFFF가 되고 보수가 0이 되므로, 받는 쪽은 원래 값이 무엇이었는지 몰라도 검사할 수 있습니다.
마지막 바이트를 위쪽에 두고 아래 바이트를 0으로 채웁니다. 즉 0x01 하나만 남으면 0x0100으로 보고 더합니다. 앞에 0을 붙이는 것이 아니므로 뒤집어 구현하면 값이 달라집니다.
인터넷 체크섬은 덧셈만 쓰고 CRC는 다항식 나눗셈을 쓰며, 오류 검출력은 CRC가 훨씬 강합니다. 인터넷 체크섬은 16비트 워드의 순서가 뒤바뀌거나 두 곳의 오류가 서로 상쇄되면 잡지 못합니다. 그래도 쓰는 이유는 라우터가 TTL을 줄일 때마다 헤더 체크섬을 다시 계산해야 해서 속도가 중요하기 때문입니다.
전송되지 않습니다. 계산은 전부 브라우저 안에서 이뤄지고, 입력값은 이 브라우저의 localStorage에만 남습니다.
알아두면 좋은 점
- 옵션이 없는 20바이트 IPv4 헤더를 기준으로 읽습니다. IHL이 5보다 큰 헤더는 필드 표시가 맞지 않을 수 있습니다.
- TCP·UDP 체크섬은 헤더 앞에 의사 헤더(출발지·목적지 주소, 프로토콜, 길이)를 붙여 계산합니다. 이 도구의 «임의 자료» 모드에 의사 헤더까지 직접 이어 붙이면 같은 계산을 할 수 있습니다.
- UDP에서는 체크섬 0이 «검사 안 함»을 뜻해, 계산 결과가 0이면 0xFFFF로 바꿔 보냅니다. 이 도구는 계산값을 그대로 보여 줍니다.
- 실제로 캡처된 IPv4 헤더(npm ip-packet 2.2.1의 테스트 픽스처)와 scapy 2.7.0이 만든 헤더들을 정답지로 삼아 맞췄습니다(2026-09-01 확인).
함께 보면 좋은 도구
마지막 검증: 2026년 9월 1일 · 결과는 참고용 추정치입니다.