Traceroute程序
window系统可直接在命令行下使用tracert,如tracert www.baidu.com。Ubuntu12.04安装traceroute后第一跳之后都是输出的*,网上说是路由器禁了相关功能,但是win7下的tracert能正常使用。。。。原因是我用的虚拟机网络模式是NAT网络模式,后面虚拟机设置成使用桥接模式。
1、引言
Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。
2、Traceroute程序的操作
Traceroute的实现过程:
- 发送一份TTL字段为1的IP数据报给目的主机。
- 处理此数据报的第一个路由器将TTL减1,丢弃该数据报,发回一个超时ICMP报文,得到路径中第一个路由地址。
- 发送一份TTL字段为2的IP数据报,得到第二个路由地址。
- 循环往复。
- 判断报文已经到达主机;
判断报文是否已经到达主机方法:
目的主机即使得到TTL为1的IP报,也不会丢弃该数据报,故发送一份UDP数据报给目的主机,它选择一个不可能的值作为UDP端口号(大于30000),目的主机的任何应用都不可能使用此端口。当数据报到达时,目的主机UDP报文产生一份“端口不可达”错误的ICMP报文。收到此端口不可达的ICMP报文,以判断结束。
3、局域网输出
在这里介绍了ICMP超时报文有两种:
- 传输期间生存时间为0,对应code为0。
- 在数据报组装期间生存时间为0,对应code为1。(11.5节讨论)
此小节简单介绍了计算SLIP链路的往返时间的方法。
注意事项:
- 并不能保证现在的路由也是将来所采用的路由,甚至两份连续的IP数据报都可能采用不同的路由
- 不能保证ICMP报文的路由与traceroute程序发送的UDP数据报采用同一路由。
- 返回的ICMP报文中的信源IP地址是UDP数据报到达路由器接口的IP地址
4、广域网输出
- 当出现在摸个路由上数据报变慢时,并不能区分是发出的还是返回的ICMP差错报文被拦截
- 相同TTL字段的第一个RTT探测值可能比第二个RTT探测值还小。
5、IP源站选路选项
源站选路(source routing)的原则由发送者指定路由。有两种形式:
- 严格的源路由选择。发送端指明IP数据报所必须采用的确切路由。如果一个路由器发现源路由所指定的下一个路由器不在其直接连接的网络上,它就返回一个“源站路由失败”的ICMP差错报文。(code:0x89)
- 宽松的源站选路。发送端指明了一个数据报经过的IP地址清单,但是数据报在清单上指明的任意两个地址之间可以通过其他路由器。(code:0x83)
小结:
本章说明了IP选路调试工具的使用及相关原理。个人感觉在看完IP选路和动态选路协议后可能更容易理解吧。