tcptraceroute 、Traceroute和tracert

1 Traceroute

Traceroute最简单的基本用法是:traceroute hostname

Traceroute 程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field)。首先,traceroute送出一个TTL是1 的IP datagram(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器 (router)收到这个datagram时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个 「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute 收到这个消息后, 便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL是2 的datagram,发现第2 个路由 器...... traceroute 每次将送出的datagram的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个 datagram 抵达目的地。当datagram到达目的地后,该主机并不会送回ICMP time exceeded消息,因为它已是目的地了,那么 traceroute如何得知目的地到达了呢?

Traceroute 在送出UDP datagrams到目的地时,它所选择送达的port number 是一个一般应用程序都不会用的号码(30000 以上),所以当此 UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable」的消息,而当traceroute 收到这个消 息时,便知道目的地已经到达了。所以traceroute 在Server端也是没有所谓的Daemon 程式。

Traceroute提取发 ICMP TTL到期消息设备的IP地址并作域名解析。每次 ,Traceroute都打印出一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。

完整命令选项:

traceroute [-46dFITUnreAV] [-f first_ttl] [-g gate,...]

[-i device] [-m max_ttl] [-p port] [-s src_addr]

[-q nqueries] [-N squeries] [-t tos]

[-l flow_label] [-w waittime] [-z sendwait]

[-UL] [-P proto] [--sport=port] [-M method] [-O mod_options]

[--mtu] [--back]

host [packet_len]

traceroute6 [options]

tcptraceroute [options]

lft [options]

2. tcptraceroute

traceroute6 等价于 traceroute -6。

tcptraceroute 等价于 traceroute -T。

lft:第四层traceroute,执行tcptraceroute,像 traceroute -T,但尝试提供兼容原始的这类实现。

常用选项

-4, -6:显示强制使用IPv4或IPv6。

-I:使用ICMP ECHO进行探测。

-T:使用TCP SYN进行探测。

-F:不要分帧探测包。

-f first_ttl:指定TTL的起始值,默认是1。

-i interface:从指定网络接口来发送探测包。

-m max_ttl:指定TTL的最大值,默认是30。

-N squeries:指定同时发送的探测包数量,默认是16。

-n:不要进行域名解析,以数字形式显示地址。

-w waittime:设置等待探测响应的时间,单位秒,默认是5s。

-q nqueries:设置每个hop(路由跳)的探测包数量,默认是3。

-s source_addr:设置探测包的来源IP地址。

-r:跳过普通的路由表,直接将数据包发送到远程主机。

--mtu:发现跟踪路径上的最大传输单元大小(MTU)

--back:打印返回路径的hop(路由跳),如果看起来跟去的方向的不一样。

3. tracert

tracert 是windows下的traceroute。

用法: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name

选项说明

-d:以数字形式显示地址,不进行域名解析。

-h maximum_hops:指定经过的最大路由跳数量。

-j host-list:指定 Tracert 实用程序数据包所采用路径中的路由器接口列表。

-w timeout:等待探测包响应的毫秒数。

target_name:目标主机的名称或 IP 地址。

举例

跟踪我的VPS的路由情况。

<

pre> C:\Documents and Settings\Administrator>tracert coderbee.net

Tracing route to coderbee.net [198.56.238.193] over a maximum of 30 hops:

1 <1 ms <1 ms <1 ms 192.168.203.1 2 5 ms * 5 ms 120.197.59.129 3 2 ms * 3 ms 120.196.2.125 4 2 ms * 51 ms 120.196.0.233 5 6 ms 2 ms 5 ms 221.176.22.201 6 17 ms * 3 ms 221.176.18.114 7 * 4 ms 5 ms 221.176.24.150 8 9 ms * 9 ms 211.136.1.97 9 178 ms 185 ms 187 ms 223.118.2.34 10 185 ms * * he.net.coresite.com [206.223.143.122] 11 184 ms 190 ms 279 ms 64.71.153.34 12 183 ms * * dc03r01bg02.scalabledns.com [199.48.68.42] 13 187 ms 183 ms 192 ms dc03r01bg02.scalabledns.com [199.48.68.42] 14 * 185 ms 189 ms 198.56.238.193

发表评论