인터넷 제어 메시지 프로토콜이에요. IP 통신은 목적지에 패킷을 전달하는 방법은 있어요. 하지만 에러가 발생 시 처리가 불가능해요.
그래서 나온게 ICMP에요. ICMP는 IP 통신 에러 상황을 출발지로부터 전달하고 메시지를 제어하는 역할을 해요.

ICMP는 IP 패킷에 포함되어 있어요.
구조별 설명
1. Type :ICMP메시지 종류
2. Code : 메시지Type별 세부 코드 정보
3. Checksum :ICMP헤더 손상 여부를 확인해요

Type은 0~254까지 정의되어 있어요. 주로 쓰이는 Type은 오류 보고나 정보성으로 나뉘어요.
0, 8, 9, 103, 5, 11, 12대표적인 메시지를 설명드리자면, 8, 0은 Echo Request & Reply에요. 네트워크 문제를 진단할 때 사용하고, 출발지에서 목적지 IP로 ICMP Echo Request 메시지를 보내면 목적지는 ICMP Echo Request로 응답해요. 목적지 도달 여부는 RTT(Round-trip Delay Time), Hop Count로 확인해요. cmd에서 ping {IP}를 치면 볼 수 있는 내용이에요.

그리고 9, 10은 라우터 광고Broadcast 및 정보를 요청하는 메시지에요. 자신이 라우터임을 응답하면서 네트워크를 진입할 때 정보를 요청해요. 구조는 아래와 같아요(참고로 맨 아래가 오타인데 10, 라우터 정보 요청 메시지에요.

그 다음으로 설명드릴 것은 오류 보고에요.
3 - Destination Unreachable : 라우터가 IP패킷을 라우팅하지 못하는 경우에요.
5 - Redirect : 로컬 네트워크에 2개 이상의 경로가 있으면 더 좋은 경로를 알려주는 경우에요.
그리고 상세 정보를 Code를 통해 알 수 있어요.
3,5Code 목록
0: Net Unreachable1: Host Unreachable2: Protocol Unreachable3: Port Unreachable4: Fragmentation Needed and DF set5: Source Route Failed
11 - Time Exceeded : 시간 초과로 TTL 값이 0이 되면 출발지에 시간이 초과되었음을 알려요.
11Code 목록
0: Time to LiveTTLExceeded1: Framentation Reassembly Time Exceed, 나머지 fragment가 오기 전에TTL이 만료된 경우에요IP Fragmentation
IP 패킷을 작은 패킷으로 나눠 전송하고 목적지에서 재조합Maximum Transimission Unit
MTU
IP 패킷을 전송할 수 있는 최대 크기
12 - Parameter Problem : IP 옵션을 잘못 사용하여 라우터에서 패킷이 폐기된 경우에요.