📡 ICMP: 인터넷 제어 메시지 프로토콜 (Internet Control Message Protocol)

 

인터넷에서 호스트와 라우터가 서로 네트워크 계층 정보를 교환할 때 ICMP(Internet Control Message Protocol) 가 사용됩니다.
ICMP는 네트워크 오류 보고, 진단 및 제어 메시지를 전송하는 역할을 하며, RFC 792에 정의되어 있습니다.

이번 포스팅에서는 ICMP의 개념, 동작 원리, 주요 메시지 유형 및 Traceroute와의 관계에 대해 자세히 알아보겠습니다.

 


 

🧐 ICMP란?

ICMP(Internet Control Message Protocol) 는 네트워크 계층에서 네트워크 문제를 감지하고 보고하는 프로토콜입니다.
일반적으로 라우터와 호스트가 네트워크 오류를 알리거나, 진단 메시지를 주고받을 때 사용됩니다.

 

ex) 웹사이트에 접속할 때의 "Destination network unreachable" 오류

→ 네트워크에서 목적지를 찾을 수 없을 때, 라우터가 ICMP 메시지를 생성하여 오류를 보고

 

🛠 ICMP의 주요 특징

  • IP 프로토콜과 밀접한 관계
    • ICMP 메시지는 IP 패킷 내에서 전송되며, IP 프로토콜 상위 계층에서 동작합니다.
    • TCP/UDP와 마찬가지로 IP 페이로드로 전송됩니다.
  • 비연결형 프로토콜
    • ICMP는 상태를 유지하지 않는 비연결형 프로토콜(connectionless protocol) 입니다.
  • 오류 감지 및 보고
    • 네트워크 오류가 발생하면, 해당 오류를 원래 송신자에게 알리는 역할을 합니다.

 

📜 ICMP 메시지 구조 및 유형

ICMP 메시지는 특정 타입과 코드로 분류됩니다.
각 메시지는 IP 헤더와 문제를 일으킨 원본 IP 패킷의 처음 8바이트를 포함합니다.
이 정보를 바탕으로 송신자는 오류 원인을 분석할 수 있습니다.

 

🔹 주요 ICMP 메시지 유형

메시지 유형(Type) 코드(Code) 설명
0 0 Echo Reply (ping 응답)
3 다양한 코드 Destination Unreachable (목적지 도달 불가)
5 0~1 Redirect (경로 변경 요청)
8 0 Echo Request (ping 요청)
11 0~1 Time Exceeded (TTL 초과)

 

📡 Ping 명령어와 ICMP Echo 메시지

 

📌 Ping이란?

ping 명령어는 네트워크 연결 상태를 테스트하는 데 사용됩니다.
ping을 실행하면 ICMP Echo Request(Type 8, Code 0) 메시지를 전송하고, 상대 호스트가 응답하면 ICMP Echo Reply(Type 0, Code 0) 메시지를 반환합니다.

 

🏓 Ping 동작 방식

  1. 송신자는 대상 IP 주소로 ICMP Echo Request(Type 8, Code 0) 메시지를 전송
  2. 대상 호스트는 수신 후 ICMP Echo Reply(Type 0, Code 0) 메시지를 응답
  3. RTT(Round Trip Time) 측정하여 네트워크 상태 분석 가능

 

🔍 Traceroute와 ICMP Time Exceeded 메시지

 

📌 Traceroute란?

Traceroute는 네트워크 경로를 추적하는 도구입니다.
네트워크 패킷이 목적지까지 가는 모든 라우터를 확인하고, 각 구간의 지연 시간(RTT)을 측정하는 역할을 합니다.

 

🛠 Traceroute의 동작 원리

  1. Traceroute는 UDP 패킷을 전송하지만, TTL(Time To Live) 값을 1부터 증가시키며 전송합니다.
  2. 각 라우터는 TTL이 0이 되면, ICMP Time Exceeded(Type 11, Code 0) 메시지를 반환합니다.
  3. 이를 통해 Traceroute는 각 경로의 라우터 IP 주소와 응답 시간을 확인합니다.
  4. 마지막 패킷이 목적지에 도착하면, ICMP Destination Unreachable(Type 3, Code 3) 메시지를 반환하여 탐색을 종료합니다.


 

🚨 ICMP와 혼잡 제어: Source Quench 메시지

과거에는 혼잡 제어를 위해 ICMP Source Quench 메시지(더 이상 사용되지 않음)를 활용했습니다.

  • 혼잡 발생 시, 라우터가 송신자에게 ICMP Source Quench 메시지를 보내 전송 속도를 줄이도록 유도
  • 하지만, TCP 자체적인 혼잡 제어 메커니즘(예: 슬로우 스타트, AIMD)이 발전하면서 ICMP Source Quench 메시지는 더 이상 사용되지 않음

 

🌍 ICMPv6: IPv6에서의 확장

IPv6에서는 기존 ICMP 메시지를 정리하고, 새로운 기능을 추가한 ICMPv6 (RFC 4443) 가 정의되었습니다.

 

🆕 ICMPv6에서 추가된 주요 기능

  • Packet Too Big: IPv6는 패킷 분할(fragmentation)을 지원하지 않기 때문에, 패킷 크기가 너무 클 경우 "Packet Too Big" 메시지를 전송
  • Neighbor Discovery: ARP(Address Resolution Protocol)를 대체하여 IPv6 주소를 MAC 주소로 변환
  • Router Solicitation & Advertisement: 동적 라우터 설정을 지원

 

+ Recent posts