본문 바로가기
I T/Network

tracert 와 traceroute 의 동작원리 및 차이

by 루솨 2015. 8. 30.
tracert 와 traceroute 의 동작원리 및 차이  
traceroute 는 목적지까지 이르는 네트워크의 경로(라우터)를 보여주는 것으로 목적지에 이르는 outbound 경로만 보여줄 뿐, 돌아오는 inbound 경로는 네트워크 구조와 사정에 따라 같을 수도 있고 다를 수도 있습니다. 


traceroute 가 사용하는 원리는 동일하지만 구현 방법은 시스템에 따라 다소 상이한데, 일반적인 *nix 계열 및 cisco 계열 라우터의 경우 목적지 시스템의 33434~38000 포트로 TTL 값을 1씩 늘려가면서 udp 패킷을 발송하여 TTL 값의 만기(expiration)로 인하여 돌아오는 "ICMP time exceed" 메시지를 이용합니다. 반면 Windows 계열의 tracert 는 목적지 시스템에 TTL값을 1씩 늘려가면서 ICMP echo request 패킷을 발송하여 역시 TTL 값의 만기로 돌아오는 "ICMP time exceed" 메시지를 이용합니다. 


아래는 traceroute 와 tracert 의 패킷을 잡은 예입니다. 


Tracer.com.62615 > target.com.33456:udp 12 (DF) (ttl 1) Router.com > tracer.com:icmp time exceed in-transit 



그런데, traceroute 중간 경로(hop)에서 * (asterisk) 가 보이는 경우가 있는데, 단지 * 이 보인다고 해서 네트워크에 문제가 있는 것은 아닙니다. 즉, 결론적으로 * 이 보인다는 것은 해당 hop 으로부터 "ICMP time exceed" 를 받지 못하였다는 뜻인데, 이는 다음과 같은 이유가 있을 수 있기 때문입니다. 


(1) 가장 많은 경우로 라우터의 관리자가 보안등의 이유로 
외부에서의 traceroute 요청이나 이에 대한 응답을 필터링하였기 때문입니다. 


(2) 실제로 네트워크의 과부하등으로 traceroute 요청패킷이나 
응답패킷이 사라졌을 수도 있기 때문입니다. 통상적으로 icmp 패킷은 패킷 처리 우선도 측면에서 가장 낮게 되어 있는 경우가 있습니다. 



보내주신 결과의 경우 중간 경로에서만 * 가 잠깐 나타날 뿐 이후 경로를 통해 최종 목적지까지 도착하였으므로 (1)번의 경우라고 추측할 수 있습니다. 


참고로 traceroute 와 유사한 다른 경로추적 프로그램도 많은데, whois 나 AS 정보등 부가 기능을 제공하면서 추적시 udp 나 icmp 를 사용하지 않고 tcp 를 사용하는 lft 라는 프로그램도 권장할 만 합니다.