traceroute是类Unix的命令工具,用于测试网络联通情况。其运行原理是,通过发送指定TTL的*ICMP包(网络层,用了IP协议)给目的主机即host
,由于TTL比较小,所以包走到半路的某个网关G
就会返回,这样就能得到G
的IP和距离(以跳数、时间衡量)了。traceroute默认每次发送3个包出去,
使用方法
打印出traceroute的用法如下:
Usage:
traceroute [ -46dFITnreAUD ]
[ -f first_ttl ] [ -g gate,... ]
[ -i device ] [ -m max_ttl ]
[ -N squeries ] [ -p port ]
[ -t tos ] [ -l flow_label ]
[ -w waittime ] [ -q nqueries ]
[ -s src_addr ] [ -z sendwait ]
[ --fwmark=num ]
host
[ packetlen ]
使用方法比较直观,看第一部分的[-46dFITnreAUDV]
,因为这部分选项不需要带参数,所以可以连着写。其他的都是有参数的,不能连着写。倒数第二行的host
就是要追踪的主机,比如可以是www.baidu.com
。最后一个参数[packetlen]
是可选的,表示包的长度,我的ubuntu默认是60B,一般不用太关心。具体参数意义如下:
-4
ipv4。
-6
ipv6。
-d
打开socket层的debug,正常情况下没有任何效果。
-F
禁止分片。
-I
使用ICMP ECHO。
-T
使用TCP,默认端口80。
-n
不打印domaim。
-r
-e
显示ICMP扩展。
-A
在每个地址后面加个AS(autonomous system)标识,如果没有就显示[*]。
-U
使用UDP请求,默认端口53。
-D
使用DCCP(数据报拥塞控制协议)请求,默认端口33434。