문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. [[분류:네트워크 계층]] == 개요 == ICMP(Internet Control Message Protocol, 인터넷 제어 메시지 프로토콜)는 인터넷 프로토콜 스위트에 기록된 주요 프로토콜 가운데 하나이다. 네트워크 컴퓨터 위에서 돌아가는 운영체제에서 오류 메시지(Requested service is not available 등)를 전송받는 데 주로 쓰이며 인터넷 프로토콜의 주요 구성원 중 하나로 인터넷 프로토콜에 의존하여 작업을 수행한다. 프로토콜 번호 1로 할당되고 시스템 사이에 데이터를 교환하지 않거나 최종 사용자에 적용되지 않는다는 점에서 [[TCP]]와 [[UDP]]와는 다르다.([[ping]] 이나 [[traceroute]] 같은 몇몇 진단 프로그램 제외) 인터넷 프로토콜 버전 4([[IPv4]]) 용 ICMP는 ICMPv4로 알려져 있고, 유사하게 [[IPv6]]은 ICMPv6이다. == 메시지 종류 == ICMPv4 기준이며, () 안은 실제 부여된 메시지 번호이다. # Echo request (8) : 해당 수신자가 이 메시지를 받으면 응답을 해 달라는 요청이다. # Echo reply (0): Echo request 를 받은 수신자가 보내주는 응답. # Destination Unreachable (3) : 네트워크가 끊겨 있거나, 장비가 꺼져 있거나, 경로가 없거나 등 여러 이유로 최종 목적지에 도달할 수 없을때 보내지는 메시지이다. # Time Exceeded (11) : TTL 값이 감소하여 0 이 되었을때 이 메시지를 송신자에게 돌려 준다. == 이를 사용하는 유틸리티 == === 핑(Ping) === 해당 IP 를 가진 장비에 접속 가능한지 확인하는 프로그램이며 위에 언급한 echo request 를 던지고, 이로 부터 받은 echo reply 를 확인한다. 정상적으로 echo reply 를 수신하는 경우 수신까지 걸릴 시간을 계산하여 해당 장비까지 회선 속도를 가늠해 볼 수 있다. 반대로 reply 를 수신하지 못하거나, destination unreachable 을 수신하게 되면 해당 장비에 도달할 수 없다는 것을 알 수 있다. >>ping google.com === 트레이스라우트(traceroute) === 해당 장비까지 가는 경로를 추척하는 프로그램이다. 간략히 설명하면 모든 라우터는 패킷을 수신하면 [[TTL]] 을 1을 감소시키고 전달해야 하는데, 만약 TTL 이 0 이 되면 패킷을 버리고, 대신 time exceeded 메시지를 송신측에게 돌려 주게 된다. 이런 특성을 이용해서 처음에는 TTL = 1 로 설정하고 패킷을 쏘면, 제일 처음 만나는 라우터가 time exceeded 메시지를 보내기에 이 라우터의 IP 주소를 알 수 있게 된다. 그 다음 TTL = 2 로 패킷을 쏘고, 그 다음에는 TTL = 3, 4, 5, 6 ... 으로 최종 목적지에 도달할 때까지 TTL 을 증가시키며 패킷을 쏜다. 이를 이용하면 최종 목적지까지 가는 경로를 모두 확인 할 수 있다. >>traceroute naver.com == 보안 문제 == 핑은 [[DDOS]] 공격등을 하려 할때 대상을 검색하는 용도로 사용하거나, 아니면 핑 자체를 이용해서 공격에 사용하기도 한다. 그래서, 보안 관계로 대다수의 PC 등은 핑을 받아도 reply 를 보내지 않는다. 상용 서버의 경우에도 보안을 위해서 핑에 대해서 응답하지 않는 경우가 많다. 트레이스라우트 또한 공격 대상을 검색하려는 용도로 사용되기에, 이 역시 보안을 위해서 time exceeded 를 보내지 않도록 설정하는 경우가 많다. 이 경우 트레이스라우트에서는 * * * 을 출력하며 타임아웃 처리를 한다. >>ping naver.com => 응답없음 Internet control message protocol 문서로 돌아갑니다.