ICMP

덤프버전 :

1. 개요
2. 메시지 종류
3. ICMPv6
4. 이를 사용하는 유틸리티
4.1. (Ping)
4.2. 트레이스라우트(traceroute)
5. 보안 문제



1. 개요[편집]


Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜

IP 네트워크에서 사용하는 가장 기본적인 프로토콜이며, 네트워크 제어를 위한 각종 메시지가 규정되어 있다.


2. 메시지 종류[편집]


ICMPv4 기준이며, () 안은 실제 부여된 메시지 번호이다.

  • Echo request (8) : 해당 수신자가 이 메시지를 받으면 응답을 해 달라는 요청이다.
  • Echo reply (0): Echo request 를 받은 수신자가 보내주는 응답.
  • Destination Unreachable (3) : 네트워크가 끊겨 있거나, 장비가 꺼져 있거나, 경로가 없거나 등 여러 이유로 최종 목적지에 도달할 수 없을때 보내지는 메시지이다.
  • Time Exceeded (11) : TTL 값이 감소하여 0 이 되었을때 이 메시지를 송신자에게 돌려 준다.


3. ICMPv6[편집]


Internet Control Message Protocol version 6
IPv6 가 등장함에 따라 ICMP 도 IPv6 에 맞도록 새로 규정되었다.

Echo Request. Echo Reply, Destination Unreachable, Time Exceeded 등 주로 쓰는 메시지는 그대로 이름을 이어 받았지만, 메시지 번호 등은 모두 새로 지정되었다.

또한, ARP 의 IPv6 버전인 NDP는 ICMPv6 를 이용하여 동작한다.

4. 이를 사용하는 유틸리티[편집]



4.1. (Ping)[편집]


해당 IP 를 가진 장비에 접속 가능한지 확인하는 프로그램이며 위에 언급한 echo request 를 던지고, 이로 부터 받은 echo reply 를 확인한다. 정상적으로 echo reply 를 수신하는 경우 수신까지 걸릴 시간을 계산하여 해당 장비까지 회선 속도를 가늠해 볼 수 있다. 반대로 reply 를 수신하지 못하거나, destination unreachable 을 수신하게 되면 해당 장비에 도달할 수 없다는 것을 알 수 있다.


4.2. 트레이스라우트(traceroute)[편집]


해당 장비까지 가는 경로를 추척하는 프로그램이다.

간략히 설명하면 모든 라우터는 패킷을 수신하면 TTL 을 1을 감소시키고 전달해야 하는데, 만약 TTL 이 0 이 되면 패킷을 버리고, 대신 time exceeded 메시지를 송신측에게 돌려 주게 된다. 이런 특성을 이용해서 처음에는 TTL = 1 로 설정하고 패킷을 쏘면, 제일 처음 만나는 라우터가 time exceeded 메시지를 보내기에 이 라우터의 IP 주소를 알 수 있게 된다. 그 다음 TTL = 2 로 패킷을 쏘고, 그 다음에는 TTL = 3, 4, 5, 6 ... 으로 최종 목적지에 도달할 때까지 TTL 을 증가시키며 패킷을 쏜다.

이를 이용하면 최종 목적지까지 가는 경로를 모두 확인 할 수 있다.


5. 보안 문제[편집]


핑은 DDOS 공격등을 하려 할때, 공격할 대상을 검색[1]하는 용도로 사용하거나, 아니면 대량의 핑 자체를 듬뿍 이용해서 공격에 사용하기도 한다. 그래서, 보안 관계로 대다수의 PC 등은 핑을 받아도 reply 를 보내지 않는다. 상용 서버의 경우에도 보안을 위해서 핑에 대해서 응답하지 않는 경우가 많다.

트레이스라우트(traceroute) 또한 공격 대상을 검색하려는 용도로 사용되기에, 이 역시 보안을 위해서 time exceeded 를 보내지 않도록 설정하는 경우가 많다. 이 경우 트레이스라우트에서는 * * * 등의 형태로 출력하며, 핑 타임아웃 처리[2]를 한다.


파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-10-27 15:48:08에 나무위키 ICMP 문서에서 가져왔습니다.

[1] 주로 DNS서버, L3 라우터 등. 목적지 서버의 IP는 traceroute를 하지 않아도 금방 알 수 있으니까.[2] windows의 cmd의 tracert 달리, 리눅스 등을 기반으로 만들어진 다양한 traceroute프로그램들은 핑 타임아웃과 핑 카운트 자체를 조절할 수도 있다.