ICMP
최근 수정 시각: (5년 전)
분류
1. 개요 [편집]
Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜
IP 네트워크에서 사용하는 가장 기본적인 프로토콜이며, 네트워크 제어를 위한 각종 메시지가 규정되어 있다.
IP 네트워크에서 사용하는 가장 기본적인 프로토콜이며, 네트워크 제어를 위한 각종 메시지가 규정되어 있다.
2. 메시지 종류 [편집]
ICMPv4 기준이며, () 안은 실제 부여된 메시지 번호이다.
- Echo request (8) : 해당 수신자가 이 메시지를 받으면 응답을 해 달라는 요청이다.
- Echo reply (0): Echo request 를 받은 수신자가 보내주는 응답.
- Destination Unreachable (3) : 네트워크가 끊겨 있거나, 장비가 꺼져 있거나, 경로가 없거나 등 여러 이유로 최종 목적지에 도달할 수 없을때 보내지는 메시지이다.
- Time Exceeded (11) : TTL 값이 감소하여 0 이 되었을때 이 메시지를 송신자에게 돌려 준다.
3. 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 을 증가시키며 패킷을 쏜다.
이를 이용하면 최종 목적지까지 가는 경로를 모두 확인 할 수 있다.
간략히 설명하면 모든 라우터는 패킷을 수신하면 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]를 한다.
트레이스라우트(traceroute) 또한 공격 대상을 검색하려는 용도로 사용되기에, 이 역시 보안을 위해서 time exceeded 를 보내지 않도록 설정하는 경우가 많다. 이 경우 트레이스라우트에서는 * * * 등의 형태로 출력하며, 핑 타임아웃 처리[2]를 한다.
라이선스를 별도로 명시하지 않은 문서는 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다.
기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권을 갖습니다.
문서의 기여자는 역사 탭에서 확인할 수 있습니다.
접두어의 N: - 나무위키 사용자, R: - 리그베다 위키의 사용자를 뜻합니다.
자세한 사항은 나무위키에서 동일한 문서의 역사를 참고하시기 바랍니다.