개요
Van Jacobson에 의해 개발
host에서 다른 host로의 datagram의 흐름(route)을 표시.
ICMP와 IP header내의 TTL(time to live)를 이용.
traceroute에 사용되는 ICMP는 type 11의 Time Exceeded Message, type 3의 Port Unreachable Message.
목적지까지 찾아가는 경로를 파악할 수 있음. 그러나 귀환경로를 알려주는 것은 아님.
Win95/98/NT에서는 tracert를 이용. Cisco router나 Linux에서는 traceroute를 이용.
TRACERT 명령어 구문 tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name
option설명 -d hostname을 표시하지 않고 ip address만 표시 -h maximum_hops : 대상 호스트까지 검색할 수 있는 최대 홉의 수 -j host-list : Loose source route along host-list -w timeout : wait tumeout millisecounf for each reply
동작원리
1.1.1.1에서 목적지 10.10.10.10에 대해 TTL=1인 ICMP echo request를 생성/전달
첫번째 IP네트웍장비가 TTL을 1을 감소시키고 TTL=0이 되므로 TTL이 모자라 더 이상 packet을 전달할 수 없다는 ICMP time exceed를 1.1.1.1에게 전달
1.1.1.1에서는 이 ICMP time exceed를 보고 목적지까지 가는 경로상의 첫번째 장비 ip address와 delay를 알아냄.
1.1.1.1에서 TTL=2인 ICMP echo request를 던짐. 목적지까지 가는 경로상의 두번째 장비가 ICMP time
exceed를 발생시키고 1.1.1.1에서는 이것으로 두번째 장비까지의 delay를 알아냄.
이것이 목적지까지 계속됨
분석방법
종종 목적지 중간경로에 있는 장비에서 timeout 현상(별표 *가 나타나는 현상)이 발생하는데 이것이 source와 destination간의 네트웍상태를 정확히 알려주는 것은 아님.
몇몇 IP네트웍장비에서는 ICMP packet이 아닌 다른 일반적인 packet에 보다 많은 시간을 할애하도록 설계된 경우가 있는데 해당 IP네트웍장비가 매우 바쁠경우에는 TTL=0인 packet에 대해서 ICMP time exceed등을 생성 /전달하지 않는 경우가 많음.
다른 경우는 중간경로에 있는 IP네트웍장비가 아예 ICMP echo reply 혹은 ICMP time exceed를 발생하지 않는 경우인데 주로 이러한 장비들은 Firewall 인 경우가 많음. 그러나 Firewall이라고 해서 ICMP echo reply, ICMP time exceed를 생성하지 않는 것은 아니며, 관리자의 설정에 따라 좌우됨.
이러한 이유로 traceroute 수행시 중간경로상의 timeout 현상에 대해서는 무시해도 좋으며, 최종목적지와 ping의 상태가 좋은지를 파악하는 것이 보다 중요함
Traceroute Program Operation
Intermediate 라우터에 특별한 option이 요하지 않으며( IP RR경우 모든 라우터에 동작되는 것은 아니며, 어떤 path에서도 사용 불가)
어느 특정한 server application 없이 원하는 목적지에 UDP모듈이 동작하고 있으면 된다.
ICMP + TTL( IP header ) 를 사용
TTL ▷송신시 특정한 값으로 초기화 (권고 : 64 ) ▷Datagram를 다루는 각 라우터가 datagram을 처리하는1초나 수초만큼 TTL 감소 ▷대부분의 라우터가 1초 이내로 datagram을 처리하기 때문에 TTL은 HOP Counter로 이용되며, 각 라우터마다 1씩 감소. ▷목적 : 라우팅 변환 도중 발생할 수 있는 무한 loop상태로datagram 전송이 끝나버리는 것을 방지.
TTL이 “0” 또는 “1”인 datagram을 수신한 라우터는 이 datagram을 forward 하는 대신(목적지 호스트경우는 이 datagram을 application으로 전달한다), datagram를 폐기시키고는 송신 호스트에 ICMP “time exceeded” message를 되돌려 보낸다.)
이 ICMP message를 포함하고 있는 IP datagram엔 해당 라우터의 IP 주소가 포함되어 있는데, Traceroute는 이를 이용하여 route를 추적한다
동작순서 ① TTL=1인 Datagram을 목적지 호스트로 송신하면 ② 첫번째 라우터가 TTL=0으로 감소시키고, 목적지 호스트가 아닐 경우datagram를 폐기하고는 ICMP time exceeded message를 되돌려 보낸다. 목적지일 경우는 datagram를 폐기하지 않으며, ICMP time exceeded message는 되돌려 보낸다.(송신 호스트는 이를 통해 목적지 호스트까지의 route중 첫번째 라우터임을 인지) ③ TTL=2 인 datagram를 두번째 라우터에게 전송 ④ 목적지 호스트가 아닐경우 ②와 동일하게 동작 ⑤ 목적지 호스트까지 다달를 때까지 TTL를 증가시키며 route를 추적
언제 목적지에 도착했는지 어떻게 알 수 있나? ▷Traceroute는 UDP datagram를 목적지 호스트에 송신하며, ▷이때 목적지 UDP port number는 목적지 호스트의 application에 사용하지 않을 만한 30,000이상의 번호를 선택한다. ▷이는 목적지 호스트의 UDP모듈에 이 datagram이 도착할 때 ICMP “port unreacheable error를 발생케 하며, 이로써 송신지 호스트는 목적지에 도달했음을 알게 된다.
Tracert 명령어 실행예
|