ICMP(Internet Control Message Protocol)


ICMP(인터넷 제어 메세지 프로토콜)

1. ICMP 란?

2. 계층(layer) 모델에서 ICMP 위치

  • ICMP는 L3 network와 L4 transport에서 작동한다.
    L4에서 작동한다고 하는 이유는 type 3 code 3 port unreachable이 있기 때문이다.
[출처: 정보통신기술용어해설]

3. IP 패킷에 캡슐화된 ICMP 메세지 구성

[출처: 정보통신기술용어해설]
  • IPv4 헤더의 protocol type이 1이면 ICMP packet임을 나타낸다.
  • ICMPv6은 ICMPv4 와는 달리, 기존의 'ICMP 기능'에다가, 'IGMP 기능', 'ARP 기능'까지도 모두 포괄하도록 만들어졌다. 따라서, 모든 IPv6 패킷 제어 기능이 ICMPv6에 통합 수용되었다.

4. ICMP 메세지의 일반적인 포멧

[출처: 정보통신기술용어해설]

5. ICMP 메세지의 유형 분류

  • 크게 오류 메시지와 정보 메시지로 구분된다.

ICMP 오류 메세지 (Error Reporting Message)

TypeCodeDesc
3 Destination Unreachable
목적지 도달 불가
0 = Network unreachable
1 = Host unreachable
2 = Protocol unreachable
3 = Port unreachable
4 = Fragmentation needed and DF set
5 = Source route failed 13 = Communication Administratively Prohibited
Codes 0, 1, 4, and 5 may be received from a router.
Codes 2 and 3 may be received from a host.
도달할 수 없는 목적지에 계속하여 패킷을 보내지 않도록 송신측에 주의를 줌
Code 0: 목적지 네트워크로 가는 경로 없음
. 목적지 주소가 라우팅 테이블에 없을 경우 및 디폴트 라우트가 없을 경우
Code 1: 최종 목적지 호스트에 도달할 수 없을 때
Code 2: 목적지 시스템에서 특정 프로토콜을 사용할 수 없다는 사실을 통보
Code 3: 목적지 호스트에서 특정 포트번호가 사용될 수 없음을 알림
Code 4: 단편화 필요하지만 DF 설정됨 (Fragmentation Required but DF bit is set)
- IP 데이터그램이 MTU가 작은 네트워크를 통과하려면 단편화되야 하는데,
- 라우터는 DF 비트가 셋팅된 것을 확인하고 그냥 폐기하고 송신측에 이를 통보
Code 13: 목적지와의 통신이 관리적으로 금지됨
- 어떤 이유든지 목적지가 통신을 원하지 않을 경우
- 예를들면, 방화벽은 운용 정책에 위배되는 데이터그램을 의도적으로 폐기함
. 이때, 이 오류메세지를 원천지에 보낼수도 아닐수도 있음
4 Source Quench
발신 억제
(표준에서 제외됨)
0 Code 0 may be received from a router or a host.
폭주가 발생한 상황을 송신측에 알려서 송신측이 전송을 잠시 중단하거나 전송률을 줄이는 등의 조치를 취하도록 알리는 역할을 하는 에러메세지
5 Redirect
재지정
0 = Redirect datagrams for the Network
1 = Redirect datagrams for the Host
2 = Redirect datagrams for the Type of Service and Network
3 = Redirect datagrams for the Type of Service and Host
Codes 0, 1, 2, and 3 may be received from a router.
- 송신측으로부터 패킷을 수신 받은 라우터가 특정 목적지로 가는 더 짧은 경로가 있음을 알리고자할 때 사용하는 에러메세지
- 이는 동일 서브넷에 여러 라우터가 존재하고 디폴트 라우터가 잘못 설정된 경우에 사용
11 Time Exceeded
시간초과
0 = time to live exceeded in transit
1 = fragment reassembly time exceeded
Code 0 may be received from a router.
Code 1 may be received from a host.
- 패킷이 루프를 돌거나, 과밀 발생, 타이머 값이 너무 낮게 설정된 경우
- Time to Live Exceeded in Transit
  . 목적지 시스템에 도달하기 이전에 TTL 값이 0 에 이르렀음 ☞ traceroute
- Fragment Reassembly Time Exceeded
  . traceroute가 중간에 거치는 라우터들을 확인할 때 사용
12 Parameter Problem
매개변수 문제
0 = pointer indicates the error Code 0 may be received from a router or a host.
15 Information Request
16 Information Reply
0 Code 0 may be received from a router or a host.

ICMP 정보성 메세지 (Informational Message) / 질의 메세지 (Query Message)

송수신 간 양방향으로 질의-응답 형태이다. 즉, 네트워크 상태를 요청하고, 이를 응답 받는 것

TypeCodeDesc
8 Echo Request 요청
0 Echo Reply 응답
0 Code 0 may be received from a router or a host.
Ping 명령어가 이 두개를 조합하여 활용
9 Router Advertisement
라우터 정보 알림
0 - 자신이 라우터 임을 알려주기 위해 응답 또는 주기적으로 방송하는 메세지 패킷
- 자신의 존재 뿐 만 아니라, 자신이 알고있는 동일 네트워크 내 모든 라우터의 존재도 알림
- 패킷 내부에 MAC 주소가 실리게됨 (따라서, 별도의 ARP 기능 수행 불필요)
10 Router Solicitation
라우터 정보 요청
0 라우터 탐색 프로토콜(IRDP,ICMP 라우터 탐색 프로토콜)를 갖는 장비가 네트워크에 진입시, RS(Router Solicitation) 라는 ICMP 질의메세지를 방송
라우터는 RA(Router Advertisement)로써 이에 응답하거나 또는 주기적으로 방송하여, 사용 가능한 라우터에 대한 정보를 알려줌
13 Timestamp Request
14 Timestamp Reply
0 Code 0 may be received from a router or a host.
- ICMP 질의메세지가 두 시스템간에 왕복하는데 소요된 시간 또는 시간차를 파악
* (지금은 거의 사용 안함)
17 Address Mask Request
18 Address Mask Reply
0 - 서브넷 마스크를 얻는데 사용
* (지금은 거의 사용 안함)

6. ICMP 메세지의 통지 및 처리

  • IP를 구현하는 모든 호스트 및 라우터는 오류 또는 상태 보고에 대한 ICMP 메세지 의 수신 및 발생 기능을 가지고 있어야 함
  • 각 장비에서 발견한 오류 등에 대한 통지는 그러한 패킷을 발생시킨 송신측 에게 보내는 것이 원칙임

7. ICMP를 활용하는 대표적인 응용

  • Ping 명령어: 반향 요청(Echo Request), 반향 응답(Echo Reply)을 활용
  • Traceroute 명령어: 목적지까지의 라우팅 경로를 추적하기 위해 사용되는 TCP/IP 프로토콜 디버깅 도구
    • Time Exceeded을 활용
    • UNIX: UDP 패킷의 TTL 필드를 사용하여 구현
    • MS사의 윈도우즈: UDP 대신에 ICMP를 사용하여 구현.
      윈도우즈에서의 명령어는 tracert 라고함.
    • [정보통신기술용어해설] traceroute

8. 관련 주요 표준

  • ICMPv4 : RFC 792, 1122, 1812
  • ICMPv6 : RFC 2461, 2894, 3122, 3810, 4443, 4620

Email 답글이 올라오면 이메일로 알려드리겠습니다.