본 제품에 대한 문서 세트는 편견 없는 언어를 사용하기 위해 노력합니다. 본 설명서 세트의 목적상, 편견 없는 언어는 나이, 장애, 성별, 인종 정체성, 민족 정체성, 성적 지향성, 사회 경제적 지위 및 교차성에 기초한 차별을 의미하지 않는 언어로 정의됩니다. 제품 소프트웨어의 사용자 인터페이스에서 하드코딩된 언어, RFP 설명서에 기초한 언어 또는 참조된 서드파티 제품에서 사용하는 언어로 인해 설명서에 예외가 있을 수 있습니다. 시스코에서 어떤 방식으로 포용적인 언어를 사용하고 있는지 자세히 알아보세요.
Cisco는 전 세계 사용자에게 다양한 언어로 지원 콘텐츠를 제공하기 위해 기계 번역 기술과 수작업 번역을 병행하여 이 문서를 번역했습니다. 아무리 품질이 높은 기계 번역이라도 전문 번역가의 번역 결과물만큼 정확하지는 않습니다. Cisco Systems, Inc.는 이 같은 번역에 대해 어떠한 책임도 지지 않으며 항상 원본 영문 문서(링크 제공됨)를 참조할 것을 권장합니다.
이 문서에서는 명령이 다른 시스템에서 어떻게 traceroute
작동하는지 설명합니다.
이 문서의 독자는 다음 운영 체제 중 하나에 대한 기본 지식을 갖추고 있어야 합니다.
Cisco IOS® 소프트웨어
Linux
Microsoft Windows
본 문서의 정보는 다음 소프트웨어 및 하드웨어 버전에 적용됩니다.
Cisco IOS Software 릴리스 12를 실행하는 Cisco 라우터
Red Hat Linux를 실행하는 PC
MS Windows를 실행하는 PC
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참조하십시오.
이 traceroute
명령을 사용하면 패킷이 이동한 홉 시퀀스를 반환하여 지정된 소스에서 목적지로 가기 위해 패킷이 사용하는 경로를 결정할 수 있습니다. 이 유틸리티는 호스트 운영 체제(예: Linux 또는 Microsoft(MS) Windows) 및 Cisco IOS Software와 함께 제공됩니다.
소스 디바이스(예: 호스트 또는 호스트 역할을 하는 라우터)에서 명령을 실행할 경우 traceroute ip-address
지정된 최대 홉 수까지 증가하는 TTL(Time To Live) 값을 사용하여 목적지로 IP 패킷을 전송합니다. 기본값은 30입니다. 일반적으로 대상에 대한 경로의 각 라우터는 이러한 패킷을 전달하는 동안 TTL 필드의 단위를 1씩 줄입니다. 경로 중간에 있는 라우터가 TTL = 1인 패킷을 발견하면 ICMP(Internet Control Message Protocol) "시간 초과" 메시지로 소스에 응답합니다. 이 메시지는 패킷이 특정 라우터를 홉으로 통과함을 소스에 알립니다.
이 문서에서 설명하는 다양한 운영 체제에서 traceroute
명령이 구현되는 방식에는 몇 가지 차이점이 있습니다.
초기 UDP(User Datagram Protocol) 데이터그램 프로브의 TTL은 1(또는 extended 명령에서 사용자가 지정한 최소 TTL)로 traceroute
설정됩니다. 초기 데이터그램 프로브의 대상 UDP 포트가 33434(또는 확장 traceroute
명령 출력에 지정된 대로)로 설정됩니다. extended traceroute
명령은 TTL 및 목적지 포트 번호와 같은 작업에서 사용되는 매개변수의 기본값을 traceroute
수정할 수 있도록 하는 일반 traceroute
명령의 변형입니다. extended 명령을 사용하는 방법에 대한 자세한 traceroute
내용은 Extended ping 및 Extended traceroute 명령 이해를 참조하십시오. 초기 데이터그램 프로브의 소스 UDP 포트는 임의로 지정되며 논리 연산자 OR과 0x8000을 사용합니다(최소 소스 포트는 0x8000). 다음 단계에서는 UDP 데이터그램이 실행될 때 발생하는 상황을 설명합니다.
참고: 매개변수를 구성할 수 있습니다. 이 예는 n = 1로 시작하고 n = 3으로 끝납니다.
UDP 데이터그램은 TTL = 1, 대상 UDP 포트 = 33434, 소스 포트가 임의 지정되어 발송됩니다.
UDP 대상 포트가 증가하고 소스 UDP 포트가 임의로 지정되고 두 번째 데이터그램이 전달됩니다.
2단계는 최대 3개의 프로브(또는 확장 traceroute
명령 출력에서 요청된 횟수) 동안 반복됩니다. 전송된 각 프로브의 경우 대상 호스트에 대한 단계별 경로를 구축하는 데 사용되는 "TTL 초과" 메시지가 수신됩니다.
ICMP 시간 초과 메시지가 수신되면 TTL이 증가하며 이 주기가 증분 대상 포트 번호와 함께 반복됩니다. 다음 메시지 중 하나가 수신될 수 있습니다.
호스트에 도달했음을 나타내는 ICMP 유형 3, 코드 3(destination unreachable, port unreachable) 메시지.
호스트에 연결할 수 없음, net에 연결할 수 없음, maximum TTL exceeded 또는 프로브가 재전송되었음을 의미하는 시간 초과 유형의 메시지입니다.
Cisco Router가 여러 프로브를 구별하기 위해 임의의 소스 포트 및 증가하는 대상 포트가 포함된 UDP 프로브 패킷을 전송합니다. Cisco 라우터는 ICMP 메시지 시간 초과를 UDP/ICMP 패킷이 수신된 소스로 다시 전송합니다.
Linux traceroute
명령은 Cisco 라우터 구현과 유사합니다. 그러나 고정 소스 포트를 사용합니다. 명령의 -n
옵션 traceroute
은 이름 서버에 대한 요청을 방지하는 데 사용됩니다.
MS Windows 명령tracert
은 UDP 데이터그램 대신 ICMP 에코 요청 데이터그램을 프로브로 사용합니다. ICMP 에코 요청은 TTL이 증가하면서 시작되며 Cisco IOS 및 Linux에 설명된 것과 동일한 작업이 수행됩니다. ICMP 에코 요청 데이터그램 사용의 중요성은 최종 홉이 대상 호스트에서 오는 ICMP 도달 불가 메시지의 응답에 의존하지 않는다는 것입니다. 대신 ICMP 에코 응답 메시지를 사용합니다.
명령 구문은 다음과 같습니다.
tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name
이 표에서는 명령 매개변수에 대해 설명합니다.
매개변수 | 설명 |
---|---|
-d | 주소를 컴퓨터 이름으로 처리하지 않도록 지정합니다. |
-h maximum_hops | 대상을 검색할 최대 홉 수를 지정합니다. |
-j computer-list | 컴퓨터 목록과 함께 느슨한 소스 경로를 지정합니다. |
-w timeout | 각 응답의 시간 초과에 의해 지정된 시간(밀리초) 동안 대기합니다. |
target_name | 대상 컴퓨터의 이름입니다. |
ICMP 연결 불가 항목은 Cisco Router에서 DoS(Denial of Service) 공격에 대한 보호로 500ms당 하나의 패킷으로 제한됩니다. Cisco IOS Software Release 12.1 이상부터 이 속도 값을 구성할 수 있습니다. 사용된 명령은 다음과 같습니다.
Router(config)#ip icmp rate-limit unreachable ? <1-4294967295> Once per milliseconds DF code 4, fragmentation needed and DF set
이 출력에 나와 있는 것처럼 이 제한은 모든 ICMP 연결 불가 항목의 집계 속도에 적용됩니다. 자세한 내용은 RFC 792를 참조하십시오.
type = 3, code 0 = net unreachable; 1 = host unreachable; 2 = protocol unreachable; 3 = port unreachable; 4 = fragmentation needed and DF set; 5 = source route failed.
이 제한은 ICMP 에코 요청 또는 ICMP 시간 초과 메시지와 같은 다른 패킷에는 영향을 주지 않습니다.
이 네트워크 토폴로지는 다음 예에서 사용됩니다.
세 가지 예에서 각각 다른 디바이스 A가 사용됩니다. 디바이스 A에서, traceroute 10.1.4.2
명령은 디바이스 7C로 실행된다.
각 예에서 명령은 debug ip packet detail
디바이스 11A에서 실행됩니다.
이 확장 traceroute
명령 예에서는 Cisco 라우터에서 명령을 실행할 때 변경할 수 있는 traceroute
옵션을 보여줍니다. 이 예에서는 모든 것이 기본값으로 유지됩니다.
rp-10c-2611#traceroute Protocol [ip]: Target IP address: 10.1.4.2 Source address: 10.1.1.1 Numeric display [n]: Timeout in seconds [3]: Probe count [3]: Minimum Time to Live [1]: Maximum Time to Live [30]: Port Number [33434]: Loose, Strict, Record, Timestamp, Verbose[none]: Type escape sequence to abort. Tracing the route to 10.1.4.2 1 10.1.1.2 4 msec 0 msec 4 msec 2 10.1.2.2 4 msec 4 msec 0 msec 3 10.1.3.2 0 msec 0 msec 4 msec 4 10.1.4.2 4 msec * 0 msec rp-11a-7204# *Dec 29 13:13:57.060: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Dec 29 13:13:57.060: ICMP type=11, code=0 *Dec 29 13:13:57.064: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Dec 29 13:13:57.064: ICMP type=11, code=0 *Dec 29 13:13:57.064: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Dec 29 13:13:57.068: ICMP type=11, code=0
이 디버그 출력에서 디바이스 11A는 ICMP 시간 초과 메시지를 프로브의 소스(10.1.1.1)로 전송합니다. 이러한 ICMP 메시지는 TTL=1이 있는 초기 프로브에 대한 응답입니다. 디바이스 11A는 TTL을 0으로 줄이고 시간 초과 메시지로 응답합니다.
참고: 다음과 같은 두 가지 이유로 인해 이 디버그 출력에 UDP 프로브가 표시되지 않습니다.
디바이스 11A가 UDP 프로브의 대상이 아닙니다.
TTL이 0으로 감소하며 패킷이 라우팅되지 않습니다. 따라서 디버그가 패킷을 인식하지 못합니다.
*Dec 29 13:13:57.068: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.068: UDP src=40309, dst=33437 *Dec 29 13:13:57.068: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:13:57.068: ICMP type=11, code=0 *Dec 29 13:13:57.072: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.072: UDP src=37277, dst=33438 *Dec 29 13:13:57.072: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:13:57.072: ICMP type=11, code=0 *Dec 29 13:13:57.076: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.076: UDP src=36884, dst=33439 *Dec 29 13:13:57.076: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:13:57.076: ICMP type=11, code=0
이 디버그 출력은 소스 10.1.1.1에서 10.1.4.2로 향하는 UDP 프로브를 보여줍니다.
참고: 이러한 프로브에서는 TTL = 2(디버그에서 확인할 수 없음)입니다. 디바이스 11A는 TTL을 1로 줄이고 UDP 패킷을 디바이스 7A에 전달합니다. 디바이스 7A는 TTL을 0으로 줄이고 ICMP 시간 초과 메시지로 응답합니다.
*Dec 29 13:13:57.080: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.080: UDP src=37479, dst=33440 *Dec 29 13:13:57.080: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:13:57.080: ICMP type=11, code=0 *Dec 29 13:13:57.084: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.084: UDP src=40631, dst=33441 *Dec 29 13:13:57.084: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:13:57.084: ICMP type=11, code=0 *Dec 29 13:13:57.084: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.088: UDP src=39881, dst=33442 *Dec 29 13:13:57.088: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:13:57.088: ICMP type=11, code=0
이 디버그 출력에 다음 3개의 UDP 프로브가 표시됩니다. 이러한 프로브의 TTL은 3입니다. 디바이스 11A는 TTL을 2로 줄이고 디바이스 7A로 전달합니다. 디바이스 7A는 TTL을 1로 줄이고 패킷을 디바이스 7B로 전달합니다. 그러면 TTL이 0으로 감소하고 ICMP 시간 초과 메시지로 응답합니다.
*Dec 29 13:13:57.088: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.088: UDP src=39217, dst=33443 *Dec 29 13:13:57.092: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:13:57.092: ICMP type=3, code=3 *Dec 29 13:13:57.092: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:13:57.096: UDP src=34357, dst=33444 *Dec 29 13:14:00.092: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 28, forward *Dec 29 13:14:00.092: UDP src=39587, dst=33445 *Dec 29 13:14:00.092: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 13:14:00.092: ICMP type=3, code=3
이 디버그 출력에 마지막 3개의 UDP 프로브가 표시됩니다. 이 프로브의 원래 TTL은 4입니다. TTL은 디바이스 11A에서 3으로, 디바이스 7A에 의해 2로 감소한 다음 디바이스 7B에 의해 1로 감소되었습니다. 디바이스 7C는 프로브의 대상이었으므로 ICMP 포트 도달 불가 메시지로 응답합니다.
참고: 디바이스 7C는 속도 제한 때문에 두 개의 ICMP 포트 도달 불가 메시지만 전송합니다.
[root#linux-pc]#traceroute -n 10.1.4.2 traceroute to 10.1.4.2 (10.1.4.2), 30 hops max, 40 byte packets 1. 10.1.1.2 1.140 ms 0.793 ms 0.778 ms 2. 10.1.2.2 2.213 ms 2.105 ms 3.491 ms 1. 10.1.3.2 3.146 ms 2.314 ms 2.347 ms 1. 10.1.4.2 3.579 ms * 2.954 ms rp-11a-7204# *Jan 2 07:17:27.894: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Jan 2 07:17:27.894: ICMP type=11, code=0 *Jan 2 07:17:27.894: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Jan 2 07:17:27.894: ICMP type=11, code=0 *Jan 2 07:17:27.894: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Jan 2 07:17:27.894: ICMP type=11, code=0
이 디버그 출력에서 디바이스 11A는 ICMP 시간 초과 메시지를 프로브의 소스(10.1.1.1)로 전송합니다. 이러한 ICMP 메시지는 TTL=1이 있는 초기 프로브에 대한 응답입니다. 디바이스 11A는 TTL을 0으로 줄이고 시간 초과 메시지로 응답합니다.
다음과 같은 두 가지 이유로 인해 이 디버그 출력에 UDP 프로브가 표시되지 않습니다.
디바이스 11A가 UDP 프로브의 대상이 아닙니다.
TTL이 0으로 감소하며 패킷이 라우팅되지 않습니다. 따라서 디버그가 패킷을 인식하지 못합니다.
*Jan 2 07:17:27.894: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.894: UDP src=33302, dst=33438 *Jan 2 07:17:27.898: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:27.898: ICMP type=11, code=0 *Jan 2 07:17:27.898: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.898: UDP src=33302, dst=33439 *Jan 2 07:17:27.898: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:27.898: ICMP type=11, code=0 *Jan 2 07:17:27.898: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.898: UDP src=33302, dst=33440 *Jan 2 07:17:27.902: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:27.902: ICMP type=11, code=0
참고: 이 디버그 출력에서 소스 10.1.1.1의 UDP 프로브가 10.1.4.2로 지정됩니다.
참고: 이러한 프로브에서는 TTL = 2(디버그에서 확인할 수 없음)입니다. 디바이스 11A는 TTL을 1로 줄이고 UDP 패킷을 디바이스 7A에 전달합니다. 디바이스 7A는 TTL을 0으로 줄이고 ICMP 시간 초과 메시지로 응답합니다.
*Jan 2 07:17:27.902: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.902: UDP src=33302, dst=33441 *Jan 2 07:17:27.906: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:27.906: ICMP type=11, code=0 *Jan 2 07:17:27.906: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.906: UDP src=33302, dst=33442 *Jan 2 07:17:27.910: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:27.910: ICMP type=11, code=0 *Jan 2 07:17:27.910: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.910: UDP src=33302, dst=33443 *Jan 2 07:17:27.910: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:27.910: ICMP type=11, code=0
다음 3개의 UDP 프로브가 이 디버그 출력에 표시됩니다. 이러한 프로브의 TTL은 3입니다. 디바이스 11A는 TTL을 2로 줄이고 디바이스 7A로 전달합니다. 디바이스 7A는 TTL을 1로 줄이고 패킷을 디바이스 7B로 전달합니다. 그러면 TTL이 0으로 감소하고 ICMP 시간 초과 메시지로 응답합니다.
*Jan 2 07:17:27.910: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.910: UDP src=33302, dst=33444 *Jan 2 07:17:27.914: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:27.914: ICMP type=3, code=3 *Jan 2 07:17:27.914: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:27.914: UDP src=33302, dst=33445 *Jan 2 07:17:32.910: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2(FastEthernet0/0), g=10.1.2.2, len 40, forward *Jan 2 07:17:32.910: UDP src=33302, dst=33446 *Jan 2 07:17:32.914: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1(Ethernet4/0), g=10.1.1.1, len 56, forward *Jan 2 07:17:32.914: ICMP type=3, code=3
이 디버그 출력에는 마지막 3개의 UDP 프로브가 표시됩니다. 이 프로브의 원래 TTL은 4입니다. TTL은 디바이스 11A에서 3으로, 디바이스 7A에 의해 2로 감소한 다음 디바이스 7B에 의해 1로 감소되었습니다.
그러면 디바이스 7C가 프로브의 대상이었으므로 ICMP 포트 도달 불가 메시지로 응답합니다.
참고: 장치 7C는 속도 제한 때문에 두 개의 ICMP 포트 도달 불가 메시지만 전송합니다.
C:\>tracert 10.1.4.2 1 <10 ms <10 ms <10 ms 10.1.1.2 1 <10 ms <10 ms <10 ms 10.1.2.2 1 <10 ms <10 ms <10 ms 10.1.3.2 1 <10 ms 10 ms 10 ms 10.1.4.2 Trace complete rp-11a-7204# *Dec 29 14:02:22.236: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 78, forward *Dec 29 14:02:22.236: UDP src=137, dst=137 *Dec 29 14:02:22.240: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:22.240: ICMP type=3, code=3 *Dec 29 14:02:23.732: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 78, forward *Dec 29 14:02:23.732: UDP src=137, dst=137 *Dec 29 14:02:23.736: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:23.736: ICMP type=3, code=3 *Dec 29 14:02:25.236: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 78, forward *Dec 29 14:02:25.236: UDP src=137, dst=137 *Dec 29 14:02:25.236: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:25.240: ICMP type=3, code=3 *Dec 29 14:02:26.748: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Dec 29 14:02:26.748: ICMP type=11, code=0 *Dec 29 14:02:26.752: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Dec 29 14:02:26.752: ICMP type=11, code=0 *Dec 29 14:02:26.752: IP: s=10.1.1.2 (local), d=10.1.1.1 (Ethernet4/0), len 56, sending *Dec 29 14:02:26.752: ICMP type=11, code=0
이 디버그 출력에서 디바이스 11A는 ICMP 시간 초과 메시지를 프로브의 소스(10.1.1.1)로 전송합니다. 이러한 ICMP 메시지는 TTL=1인 ICMP 에코 요청 패킷인 초기 프로브에 대한 응답입니다. 디바이스 11A는 TTL을 0으로 줄이고 ICMP 메시지로 응답합니다.
참고: 상단에는 NETBIOS 이름 요청이 표시됩니다. 이러한 요청은 소스 및 대상 포트가 137인 UDP 패킷으로 표시됩니다. 명확성을 위해 디버그 출력의 나머지 부분에서는 NETBIOS 패킷이 제거됩니다. NETBIOS 동작을 -d
비활성화하려면 명령의 tracert
옵션을 사용할 수 있습니다.
다음 두 가지 이유로 인해 이 디버그 출력에서 ICMP 프로브가 표시되지 않습니다.
디바이스 11A는 ICMP 프로브의 대상이 아닙니다.
TTL이 0으로 감소하며 패킷이 라우팅되지 않습니다. 따라서 디버그가 패킷을 인식하지 못합니다.
*Dec 29 14:02:32.256: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:32.256: ICMP type=8, code=0 *Dec 29 14:02:32.260: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:32.260: ICMP type=11, code=0 *Dec 29 14:02:32.260: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:32.260: ICMP type=8, code=0 *Dec 29 14:02:32.260: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:32.260: ICMP type=11, code=0 *Dec 29 14:02:32.264: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:32.264: ICMP type=8, code=0 *Dec 29 14:02:32.264: IP: s=10.1.2.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:32.264: ICMP type=11, code=0
이 디버그 출력에서는 이제 소스 10.1.1.1에서 10.1.4.2로 향하는 ICMP 프로브를 확인할 수 있습니다.
참고: 이러한 프로브에서는 TTL=2(디버그에서는 이 값을 볼 수 없음)입니다. 디바이스 11A는 TTL을 1로 줄이고 UDP 패킷을 디바이스 7A에 전달합니다. 디바이스 7A는 TTL을 0으로 줄이고 ICMP 시간 초과 메시지로 응답합니다.
*Dec 29 14:02:37.776: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:37.776: ICMP type=8, code=0 *Dec 29 14:02:37.776: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:37.776: ICMP type=11, code=0 *Dec 29 14:02:37.780: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:37.780: ICMP type=8, code=0 *Dec 29 14:02:37.780: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:37.780: ICMP type=11, code=0 *Dec 29 14:02:37.780: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:37.780: ICMP type=8, code=0 *Dec 29 14:02:37.784: IP: s=10.1.3.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 56, forward *Dec 29 14:02:37.784: ICMP type=11, code=0
이 디버그 출력에 다음 3개의 ICMP 프로브가 표시됩니다. 이러한 프로브의 TTL은 3입니다. 디바이스 11A는 TTL을 2로 줄이고 디바이스 7A로 전달합니다. 디바이스 7A는 TTL을 1로 줄이고 패킷을 디바이스 7B로 전달합니다. 그러면 TTL이 0으로 감소하고 ICMP 시간 초과 메시지로 응답합니다.
*Dec 29 14:02:43.292: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:43.292: ICMP type=8, code=0 *Dec 29 14:02:43.296: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 92, forward *Dec 29 14:02:43.296: ICMP type=0, code=0 *Dec 29 14:02:43.296: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:43.296: ICMP type=8, code=0 *Dec 29 14:02:43.300: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 92, forward *Dec 29 14:02:43.300: ICMP type=0, code=0 *Dec 29 14:02:43.300: IP: s=10.1.1.1 (Ethernet4/0), d=10.1.4.2 (FastEthernet0/0), g=10.1.2.2, len 92, forward *Dec 29 14:02:43.300: ICMP type=8, code=0 *Dec 29 14:02:43.304: IP: s=10.1.4.2 (FastEthernet0/0), d=10.1.1.1 (Ethernet4/0), g=10.1.1.1, len 92, forward *Dec 29 14:02:43.304: ICMP type=0, code=0
이 디버그 출력에는 마지막 3개의 ICMP 프로브가 표시됩니다. 이 프로브의 원래 TTL은 4입니다. TTL은 디바이스 11A에서 3으로, 디바이스 7A에 의해 2로 감소한 다음 디바이스 7B에 의해 1로 감소되었습니다. 디바이스 7C는 프로브의 대상이었으므로 ICMP 에코 응답 메시지(type=0, code=0)로 응답합니다.
참고: ICMP 에코 응답 메시지는 ICMP 포트 도달 불가 메시지이므로 속도 제한이 없습니다. 이 경우에는 3개의 ICMP 에코 응답 메시지가 모두 전송된 것을 확인할 수 있습니다.
Cisco 라우터에서 명령 회신에 대한 코드는 traceroute
다음과 같습니다.
! -- success * -- time out N -- network unreachable H -- host unreachable P -- protocol unreachable A -- admin denied Q -- source quench received (congestion) ? -- unknown (any other ICMP message)
UNIX에서 명령을 traceroute
실행하는 경우 다음 항목에 유의하십시오.
메시지를 받을 수 traceroute: icmp socket: Permission denied
있습니다.
프로그램은 traceroute
NIT(Network Interface Tap)를 사용하여 네트워크를 스누핑합니다. 이 디바이스는 루트에서만 액세스할 수 있습니다. 프로그램을 루트로 실행하거나 루트의 사용자 ID를 설정해야 합니다.
이 문서에서는 UDP 및 ICMP 패킷을 traceroute
사용하여 패킷이 지정된 소스에서 지정된 목적지로 이동하는 경로를 명령에서 결정하는 방법을 살펴보았습니다. 출력에서 가능한 ICMP 메시지 유형은 다음과 같습니다.
TTL이 전송 중에 초과되면(type=11, code=0) 패킷이 대상에 도달하기 전에 프로브 패킷의 TTL이 만료되는 모든 경우 전송 라우터가 패킷을 다시 전송합니다.
포트에 연결할 수 없는 경우(type=3, code=3) 패킷이 대상에 도달하면 UDP 프로브 패킷에 대한 응답으로 패킷이 다시 전송됩니다(UDP 애플리케이션이 정의되지 않음). 이러한 패킷은 500ms당 하나의 패킷으로 제한됩니다. 따라서 대상의 응답(Cisco Router 및 Linux의 출력 참조)이 짝수 응답에서 실패합니다. 디바이스 7C는 ICMP 메시지를 생성하지 않고, 각 디바이스의 traceroute
명령 출력은 1초 이상 기다린다. MS Windows tracert
명령 출력의 경우 UDP 포트 137이 Cisco 라우터에 없기 때문에 ICMP 메시지가 생성됩니다.
에코가 있는 경우(type=8, code=0), MS Windows PC에서 에코 프로브 패킷을 전송합니다.
에코 응답이 있는 경우(type=0, code=0), 대상에 도달하면 이전 패킷에 대한 응답이 전송됩니다. 이는 MS Windows tracert
명령에만 적용됩니다.
개정 | 게시 날짜 | 의견 |
---|---|---|
2.0 |
16-Oct-2023 |
재인증 |
1.0 |
11-Apr-2002 |
최초 릴리스 |