Study/네트워크
ICMP, Internet Control Message Protocol
구루마3단
2025. 3. 30. 16:24
✅ ICMP 패킷 구조 (IPv4 기준)
ICMP는 IP 패킷의 Payload(데이터 부분)에 포함되어 전송됩니다.
가장 기본적인 구조는 아래와 같습니다.
📦 ICMP 헤더 기본 구조 (8바이트)
필드 이름 | 크기 (바이트) | 설명 |
---|---|---|
Type | 1 byte | ICMP 메시지 유형 (예: Echo Request=8, Echo Reply=0 등) |
Code | 1 byte | Type에 따른 세부 코드 |
Checksum | 2 bytes | 오류 검출용 체크섬 |
Rest of Header | 4 bytes | 메시지 유형에 따라 다름 (예: ID, 시퀀스 번호 등) |
📘 예: Echo Request / Echo Reply (ping) 구조
필드 이름 | 크기 | 설명 |
---|---|---|
Type | 1 byte | 8 (Request), 0 (Reply) |
Code | 1 byte | 0 |
Checksum | 2 bytes | 오류 검출용 |
Identifier | 2 bytes | 요청자 구분용 ID |
Sequence Num | 2 bytes | 요청 순서 번호 |
Data (Payload) | 가변 | Ping 메시지 본문 (예: 타임스탬프, 임의의 데이터 등) |
📌 ICMP Echo Request 패킷 예시 (Wireshark 기준)
ICMP Header:
Type: 8 (Echo (ping) request)
Code: 0
Checksum: 0xf7fb
Identifier: 0x1234
Sequence Number: 0x0001
Data: 61626364656667 (임의의 데이터)
📚 주요 ICMP Type 목록 (일부)
Type | Code | 설명 |
---|---|---|
0 | 0 | Echo Reply (Ping 응답) |
3 | 0~15 | Destination Unreachable (도달 불가) |
5 | 0~3 | Redirect (경로 변경 제안) |
8 | 0 | Echo Request (Ping 요청) |
11 | 0~1 | Time Exceeded (TTL 초과 등) |
12 | Parameter Problem | |
13/14 | Timestamp Request/Reply |
예: Type=11, Code=0
은 TTL 초과 (traceroute에서 사용)
🧠 요약
- ICMP는 IP 내부의 제어 메시지용 프로토콜
- 기본 헤더는 Type, Code, Checksum, 추가 필드로 구성
- 각 Type에 따라 구조가 약간씩 다름 (Echo는 ID, Seq 포함)
ping
,traceroute
등 네트워크 진단 도구에서 핵심 사용
🧪 검증된 출처
- 📄 RFC 792 (Internet Control Message Protocol)
https://datatracker.ietf.org/doc/html/rfc792 - 📘 Wireshark Packet Example:
ICMP Echo Packet 분석
https://wiki.wireshark.org/ICMP