traceroute程序是一个能更深入探索TCP/IP协议的方便可用的工具。
尽管不能够保证从源端发往目的端的两份连续的IP数据包具有相同的路由, 但是大所述情况下是这样的。
Traceroute 程序可以让我们看到IP数据包从一台主机传到另一台主机经过的路由。
Traceroute 程序可以让我们使用IP源路由选项。
8.2 Traceroute程序的操作
为什么不适用IP记录路由选项(RR)
原因:
1)原先并不是所有的路由器都支持记录路由选项, 因此该选项在某些路径上不能使用(Traceroute 程序不需要中间路由器具备任何特殊的或可选的功能)
2)记录路由一般是单向的选项。 发送端设置了该选项,那么接收端不得不从收到的IP首部中提取所有的信息, 然后全部返回给发送端。
3)IP首部留给选项的空间有限, 不能够存放当前大多数的路径。
Traceroute 程序使用ICMP报文和IP首部中的TTL字段(生存周期)。TTL字段是由发送端初始设置8bit字段。推荐的初始值由分配数字的RFC指定,当前值为64. (一些ping程序例子可以看到,发送ICMP回显应答时经常吧TTL设为最大值255)
每个处理数据报的罗油漆都需要把TTL的值减1或者减去数据包的时延超过1秒。 由于大多数路由器转发数据报的时延都小于1秒钟,因此TTL最终成为一个跳站的计数器,所经过的每个路由器都 将其值减1.
TTL 字段的目的是防止数据包在选路时无休止地在网络中流动。 (例如,当路由器瘫痪或 者两个路由器之间的连接丢失时,选路协议有时会去检测丢失的路由并一直进行下去。在这 段时间内,数据报可能在循环回路被终止。 T T L 字 段 就 是 在 这 些 循 环 传 递 的 数 据 报 上 加 上 一 个生存上限。)
当路由器手收到一份IP数据报, 如果其TTL字段是0或1, 则路由器不转发数据报(一般是TTL为1的时候,路由器将该数据报丢弃,并给源主机发送一份ICMP超时信息。 Traceroute陈旭的关键在于包含这份ICMP信息的IP报文的信源地址是改路由器的IP地址。)
8.3 局域网输出
输出的第一行没有标号给出了目的主机名以及它的IP地址, 指出traceroute 程序最大的TTL字段值为30。 40字节的数据报包含20字节IP首部、8字节的UDP首部和12字节的用户数据。( 12个字节的用户数据包每发一个数据报就加1的序列号, 送出TTL的副本以及发送数据报的时间)
输出的后面两行以TTL开始, 接下来是主机或路由器名以及IP地址。 对于每个TTL值, 发送3份数据报。每接收到一份ICMP报文, 就计算并打印出往返时间。如果在5S钟内没有手打搜3分数据报的任意一份的响应, 则打印一个星号, 并发送下一份数据报。
往返时间是由发送主机的 t r a c e r o u t e 程序计算的。它是指从 t r a c e r o u t e 程 序 到 该 路 由 器 的 总 往 返 时 间 。 如 果 我 们 对 每 段 路 径 的 时 间 感 兴 趣 , 可 以 用 T T L 字段为 N + 1 所 打 印 出 来 的
时间减去 T T L 字段为 N的时间。
网友评论