[네트워크] ICMP (Internet Control Message Protocol)

나뭇잎으로코딩·2024년 8월 19일

네트워크

목록 보기
6/7

ICMP

  • IP 프로토콜의 한계: IP는 자체적으로 오류를 보고하는 메커니즘이 없다.
    • 패킷이 드롭되는 경우 (에러, TTL이 0이 됨, fragment 중 하나를 잃어버림), IP는 이를 감지하지 못한다.
  • ICMP의 목적: Source에게 에러를 보고하여, 네트워크 문제를 진단하고 해결할 수 있게 하는 것
  • ICMP는 Network layer 프로토콜이다.
  • ICMP Format:
  • ICMP의 기능
    1. Error reporting
    2. Query

ICMP: Error reporting

ICMP는 이러한 경우에 소스 IP 주소로 보고한다

  • Destination unreachable: 목적지로 가기 위한 다음 노드를 찾을 수 없음
  • Source quench: 라우터나 호스트의 큐가 가득 차서 드롭됨.
  • Time exceeded: 패킷의 TTL이 0이 되어 버려짐
  • Parameter problems: 헤더 필드 문제
  • Redirection: 네트워크에 여러 개의 게이트웨이 라우터가 있는 경우 발생
    • 호스트가 종종 최적의 경로를 계산하지 않고 기본 게이트웨이를 할당한다
    • 라우터가 더 나은 경로를 찾으면, 소스노드에게 게이트웨이 라우터를 재할당하라고 알려준다.
  • Redirection 예제
  • 라우터 R1과 R2가 호스트 A와 동일한 네트워크에 있다.
  • 호스트 A의 기본 게이트웨이는 R1이다 (수동으로 할당됨).
  • 호스트 A에서 R1로 데이터를 전송할 때, 목적지 호스트 B로 가기 위해서는 패킷을 R2로 보내는 것이 더 낫다는 것이 발견된다
  • R1은 데이터를 R2로 전송하고, 동시에 호스트 A에게 리다이렉션 보고를 보낸다

ICMP Rules

  1. ICMP 패킷은 ICMP 패킷에 대해서는 생성되지 않는다.
  2. fragmented 패킷의 경우, ICMP 패킷은 첫번째 fragment에 대해서만 생성된다.
    (즉, IP헤더의 fragmentation offset이 0인 패킷)
  3. ICMP는 멀티캐스트 패킷에 대해서는 생성되지 않는다.
  4. ICMP는 특정 목적지 주소를 가진 패킷에 대해서는 생성되지 않는다. (127.0.0.1 or 0.0.0.0 등)

ICMP: Query

ICMP는 정보를 질의하기 위해 사용될 수도 있다.

  • Echo request & reply
    • ping
    • 목적지가 사용 가능한지, 호스트가 목적지에 도달할 수 있는지를 확인
  • Time stamp request & reply
    • 목적지까지의 왕복 시간 (round-trip time)을 측정하기 위해 사용
  • Address-mask request & reply
    • 호스트가 자신의 IP는 알지만 서브넷 마스크는 모를 때 사용
    • address-mask request를 브로드캐스트
    • 아무 노드나 address-mask reply로 응답
  • Router solicitation(탐색) and advertisement
    • 호스트가 네트워크에 어떤 라우터가 있는지 확인하기 위해 Router solicitation을 보냄
    • 라우터는 네트워크에 존재함을 알리기 위해 Router advertisement를 보냄

IP-level debugging tools

  • ICMP를 디버깅 목적으로 사용
    1. ping
    2. traceroute

Ping

  • 목적지 호스트가 사용 가능한지 알아내기 위해 ICMP 메시지를 보내는 애플리케이션
  • ICMP echo request / reply를 사용

Traceroute (tracert)

  • 출발지와 목적지 호스트 간의 라우터를 추적하기 위한 애플리케이션
  • 동작
  • A는 TTL=1로 설정해 B로 UDP 패킷을 보낸다.
  • 패킷은 R1에서 드롭되고, ICMP가 A에게 전송된다 (time exceeded).
  • 이 ICMP 패킷을 통해 A는 R1의 IP주소, R1까지의 왕복시간을 알게 된다.
  • 평균 왕복시간을 알기 위해 여러 개의 UDP 패킷을 전송한다.
  • 이 과정이 끝나면, TTL 값을 1씩 증가시키며 반복한다.
  • 목적지 호스트에서는 ICMP(time exceeded)가 A에게 전송되지 않는다.
  • 그러나, 목적지 호스트에는 traceroute 패킷을 받을 UDP 포트가 없다.
    (목적지까지 갔지만, 목적지가 듣지 않고 있어 드롭된다)
  • 따라서, ICMP (destination unreachable)이 생성되어 A로 전송된다.
  • 이를 통해, 목적지까지의 경로를 추적할 수 있다.

0개의 댓글