互联网中,信息的传送是通过网中许多段的传输介质和设备(路由器,交换机,服务器,网关等等)从一端到达另一端。每一个连接在Internet上的设备,如主机、路由器、接入服务器等一般情况下都会有一个独立的IP地址。通过Traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。UNIX系统中,我们称之为Traceroute,MS Windows中为Tracert。 Traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备Traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
在大多数情况下,作为网络工程技术人员或者系统管理员会在UNIX主机系统下,直接执行命令行:
Traceroute hostname
而在Windows系统下是执行Tracert的命令:
Tracert hostname
比如在北京地区使用windows NT 主机(已经与北京163建立了点对点的连接后)
使用NT系统中的Tracert命令:(用户可用:开始->运行,输入"command" 调出command窗口使用此命令)traceroute [-46dFITUnrAV] [-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]
host [packetlen]
traceroute6 [options]
tracert [options]
tcptraceroute [options]
说明:
traceroute tracks the route packets take across an IP network on their way to a given host It utilizes
the IP protocol’s time to live (TTL) field and attempts to elicit an ICMP TIME_EXCEEDED response from
each gateway along the path to the host
traceroute6 = traceroute -6
tracert = traceroute -I
tcptraceroute = traceroute -T -p 80
选项说明:
唯一所必须的参数host是目的主机的名字或 IP 地址。在这个参数之后可以选择跟上探测包的大小[packetlen](默认是40)。改变包的大小并使用 -F 参数 可以用于获得个别网络跳的 MTU 信息。(探测包大小的参数对于TCP探测来说无用)。
其余的选项 :
--help 打印帮助信息,并退出。
-4, -6 显示地指定使用IPv4或IPv6 traceroute。默认情况下,traceroute会解析给定的主机名,并自动选择合适的协议。如果解析主机名既得到了IPv4的地址,又得到了IPv6的地址,traceroute会使用IPv4。
-I 使用ICMP ECHO进行探测。
-T 使用TCP SYN进行探测。
-U 使用UDP报文进行探测(默认情况)。显示分组到达目标经过的各个路由器。信息的传送是通过网中许多段的传输介质和设备(路由器,服务器等等)从一端到达另一端。每一个连接在Internet上的设备,如主机、路由器等一般情况下都会有一个独立的IP地址。通过Traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。这就是这个命令的功能。
Traceroute的原理就是 目的主机的IP后,首先给目的主机发送一个TTL=1的UDP数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的ICMP数据报给主机。主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据 报。如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器ip。从而避开了ip头只能记录有限路由IP的问题。说明目标机拒绝响应ICMP的echo而已。
ping的时候,是发一个icmp的echo,目标机相应一个reply。然后就认为是通了。
traceroute也是发icmp echo,但是,把TTL从1开始,逐渐增加。在通路上的节点,收到一个TTL为0的ICMP的时候,就会回一个错误信息。通过这样的方式,获知通路上的节点的情况。
如果某个目标机,不响应icmp echo,却还是响应了icmp echo中TTL为0的情况,就是你这个表现了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)