본문 바로가기

카테고리 없음

ICMP(Internet Control Message Protocol)을 알아보자

   네트워크 계층에 해당하는 프로토콜 중 하나이다. 네트워크 계층에 있는 대표적인 프로토콜은 ARP, IP, ICMP등이 있는데 여기서 ICMP는 에러를 보고하기 위한 용도로 사용된다. IP는 에러가 발생 시 에러 보고를 하지 아니하기 때문에 ICMP가 필요하다.  발생하는 에러가 종류별로 여러가지 있는데 각각에 대해서 ICMP의 타입이 다르다. 대표적으로 3,4,11,12,5번 타입이 있다. 

  • Destination Unreachable(Type 3) : 목적지에 도달하지 못하는 경우 그 패킷이 drop되고 그 패킷이 sorce로 ICMP를 전송한다. 
  • Source Quench(Type 4) : 라우터가 다 차가지고 여유 공간이 없는 경우이다. 이는 패킷이 들어오는 속도가 나가는 속도보다 더 빠른 경우 발생한다. 
  • Time exceeded( Type 11) : TTL이 0이 되어서 패킷이 drop되는 경우이다. 
  •  Parameter problems(Type 12) : 해더 파일에 문제가 생긴 경우이다. 
  • Redirection (Type 5) : 만약, A가 B에 데이터를 전송할 때 라우터 R1을 이용한다고 가정한다. 그런데 같은 네트웍에 있는 다른 라우터 R2를 이용하는 것이 더 좋다고 R1이 판단하면 R1이 Redirection message를 A에게 보내고 데이터(IP 패킷)은 R2로 보내준다. 

ICMP 규칙이 몇 가지 있는데 간단히 4개를 알아보자 

  • ICMP 패킷은 ICMP 패킷에 대해서 생성되지 않는다. 
  • ICMP는 멀티캐스트 패킷(불특정 다수에게 보내는 경우)에 대해서는 생성되지 않는다. 
  • Fragmented packets에 대해서는 제일 앞의 fragment에 대해서만 ICMP 패킷이 생성된다. 
  • 127.0.0.1이나 0.0.0.0과 같은 특별한 IP로 가는 패킷은 ICMP가 생성되지 않는다.  

ICMP는 에러 보고 이외에도 다른 기능이 또 있다. 바로 쿼리의 기능을 갖고 있다. 대표적으로 몇 가지만 살펴보면 다음과 같다. 

  • Echo request and reply : 핑을 이용해서 목적지 혹은 도달하고 싶은 곳에 전송 가능 여부를 확인 
  • Time stamp request and reply : 목적지까지의 round-trip time을 확인 
  • Address-mask request and reply : IP주소는 알고 있지만, subnet mask를 몰라서 확인하고 싶은 경우 
  • Router solicitation and advertisement : 호스트가 네트웍에 어떤 라우터들이 있는 지 확인하고 싶은 경우