Internet Control Message Protocol.
말 그대로, Internet을 관리하는 프로토콜이다.
일반적인 상황 / 오류 발생 상황 / 기타 특이 상황 모두 포함한다.
우리가 흔히 사용하는 Ping이 바로 ICMP를 활용한 프로그램이다.
IP protocol과 함께 사용되며, Network 계층에 속한다.
우선 헤더 구조부터 살펴보자.
ICMP Header는 IP와 함께 사용된다고 했다.
그래서, IP Header 바로 뒤에 붙어 전달된다.
Position | Name | Information |
---|---|---|
0~7 | Type | ICMP Message의 종류를 정의 |
8~15 | Code | Type에 대한 추가 정보 |
16~31 | Checksum | 오류 검증 |
32~63 | Content(Message) | 가변 길이 (Ping일 때 => Identifier, Seq Num) |
Identifier : Ping 프로세스의 PID, 여러 개의 Ping이 동작할 때 식별을 위해 사용
Sequence number : 패킷의 순서, 0부터 시작한다.
0 : Echo Reply (ICMP에 대한 응답), (Ping이 사용하는 Type)
3 : Destination Unreachable
Code에 따른 추가 정보.
3-0 : Network Unreachable
3-1 : Host Unreachable
3-2 : Protocol Unreachable
3-3 : Port Unreachable
3-4 : Fragment Error
3-5 : Routing Error
3-6 : Destination Network Unknown
3-7 : Destination Host Unknown
5 : Redirect
Code에 따른 추가 정보.
5-0 : Redirect Datagram for the Network
5-1 : Redirect Datagram for the Host
8 : Echo Request (Ping이 사용하는 Type)
9 : Router Advertisement
11 : Time Exceeded
12 : Parameter Problem
https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml
http://www.ktword.co.kr/test/view/view.php?m_temp1=5465
https://itwiki.kr/w/ICMP_%EB%A9%94%EC%8B%9C%EC%A7%80