나무모에 미러 (일반/밝은 화면)
최근 수정 시각 : 2024-10-04 16:50:02

ICMP

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

1. 개요

2. 메시지 종류

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

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]하는 용도로 사용하거나, 아니면 대량의 핑 자체를 듬뿍 이용해서 공격에 사용하기도 한다. 이를 ICMP Flooding이라고 한다. 그래서, 보안 관계로 대다수의 PC 등은 핑을 받아도 reply 를 보내지 않는다. 상용 서버의 경우에도 보안을 위해서 핑에 대해서 응답하지 않는 경우가 많다.

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


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

분류