ICMP(Internet Control Message Protocol)는 IP(Internet Protocol) 데이터그램을 처리하다 생긴 오류를 알리는 프로토콜이다.[1] 진단에 쓰는 메시지도 주고받는다.[2] IPv4용 ICMP는 RFC 792가 정한다.[1][3] ICMP는 IP의 일부로 모든 IP 모듈이 구현해야 한다.[1] ICMP 메시지는 IP 데이터그램에 실리고, IP 헤더의 Protocol 값 1로 표시된다.[1][4]

ICMP는 IP를 신뢰성 있게 만들지 않는다. 데이터그램이 사라져도 ICMP 메시지가 반드시 나오지는 않는다.[1]

메시지 형식

ICMP 메시지는 8비트 Type, 8비트 Code, 16비트 Checksum으로 시작하고, 그 뒤의 내용은 Type마다 다르다.[1] Type은 메시지의 종류를 가리키고, Code의 값과 뜻은 Type마다 따로 정해진다.[1][5]

오류 메시지는 오류를 일으킨 데이터그램의 IP 헤더와, 데이터에서 적어도 앞 8바이트를 담는다.[2][6] 받는 호스트는 이것으로 오류가 어느 프로세스의 것인지 가려낸다.[1]

주요 메시지

이 RFC가 정한 주요 메시지는 아래와 같다.[1]

Type이름쓰는 곳
0Echo ReplyEcho에 대한 응답
3Destination Unreachable데이터그램을 목적지에 전달할 수 없음
5Redirect더 나은 다음 홉 라우터를 알림
8Echo받은 데이터를 그대로 돌려 달라는 요청
11Time ExceededTime to Live가 0이 되었거나 재조립 시간이 지남
12Parameter Problem헤더의 값이 잘못되어 데이터그램을 처리할 수 없음

Type 4인 Source Quench는 혼잡 제어 수단으로 정의된 메시지였으나 RFC 6633이 폐기했다.[5][7]

Destination Unreachable의 Code는 닿을 수 없는 사유를 가른다. RFC 792가 정한 Code는 아래와 같다.[1]

Code사유
0네트워크에 닿을 수 없음
1호스트에 닿을 수 없음
2프로토콜에 닿을 수 없음
3포트에 닿을 수 없음
4나눠야 하는데 DF(Don’t Fragment) 플래그가 서 있음
5소스 라우팅 실패

Echo와 ping

Echo를 받은 쪽은 Type을 0으로 바꾼 Echo Reply에 받은 데이터를 그대로 담아 돌려보낸다.[1] RFC 2151에 따르면 ping 도구는 ICMP Echo 메시지로 상대 호스트가 살아 있는지와 왕복 지연을 잰다.[8]

오류 메시지를 보내지 않는 경우

ICMP 오류 메시지에 대해서는 ICMP 오류 메시지를 보내지 않는다.[2][6] 메시지에 대한 메시지가 끝없이 이어지는 것을 막기 위해서다.[1] 브로드캐스트나 멀티캐스트 주소로 온 데이터그램에 대해서도 오류 메시지를 보내지 않는다.[2][6]

ICMPv6와의 차이

IPv6용은 ICMPv6이며 RFC 4443이 정한다. ICMPv6는 바로 앞 헤더의 Next Header 값 58로 표시된다.[3][4]

ICMPv6는 오류 보고와 진단 말고도 Neighbor Discovery 메시지를 싣는다(ARP 참고).[3][9]

[1]
IETF, “RFC 792 Internet Control Message Protocol.” 1981. Accessed: Sep. 29, 2026. [Online]. Available: https://www.rfc-editor.org/rfc/rfc792
[2]
IETF, “RFC 1812 Requirements for IP Version 4 Routers.” 1995. Accessed: Sep. 29, 2026. [Online]. Available: https://www.rfc-editor.org/rfc/rfc1812
[3]
IETF, “RFC 4443 Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification.” 2006. Accessed: Sep. 29, 2026. [Online]. Available: https://www.rfc-editor.org/rfc/rfc4443
[4]
IANA, “Protocol Numbers.” 2026. Accessed: Sep. 29, 2026. [Online]. Available: https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml
[5]
IANA, “Internet Control Message Protocol (ICMP) Parameters.” 2026. Accessed: Sep. 29, 2026. [Online]. Available: https://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml
[6]
IETF, “RFC 1122 Requirements for Internet Hosts — Communication Layers.” 1989. Accessed: Sep. 26, 2026. [Online]. Available: https://www.rfc-editor.org/rfc/rfc1122
[7]
IETF, “RFC 6633 Deprecation of ICMP Source Quench Messages.” 2012. Accessed: Sep. 29, 2026. [Online]. Available: https://www.rfc-editor.org/rfc/rfc6633
[8]
IETF, “RFC 2151 A Primer On Internet and TCP/IP Tools and Utilities.” 1997. Accessed: Sep. 29, 2026. [Online]. Available: https://www.rfc-editor.org/rfc/rfc2151
[9]
IETF, “RFC 4861 Neighbor Discovery for IP version 6 (IPv6).” 2007. Accessed: Sep. 29, 2026. [Online]. Available: https://www.rfc-editor.org/rfc/rfc4861