大家好,又见面了,我是你们的朋友全栈君。
定义:
- Traceroute程序时一个能更深入探索TCP/IP协议的方便可用的工具。
功能:
- Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。
- Traceroute程序还可以让我们使用IP源路由选项。
存在意义:
- 不是所有路由器都支持记录路由选项
- 记录路由一般是单向的选项,记录地址翻了一番(一来一回)
- IP首部中留给选项的空间有限,不能存放当前大多数的路径
操作:
- Traceroute程序使用ICMP报文和IP首部中的TTL字段(生存周期)。
- TTL字段是由发送端初始设置一个8bit字段
- 每个处理数据报的路由器都需要把TTL的值减1,即跳站计数器
- 源主机发送TTL为1的IP数据报给目的主机,处理该数据报的第一个路由器将TTL值减1,丢弃该数据报,并发回一份超时ICMP报文,这样就得到了该路径的第一个路由器的地址。
- 为区分目的主机和路径中路由器的地址,Traceroute程序发送一份UDP数据报给目的主机,但选择一个不可能的值作为UDP端口(大于30000),使目的主机的任何一个应用程序都不可能使用该端口。因此,当该数据报到达时,目的主机的UDP模块产生一份“端口不可达” 错误的ICMP报文。Traceroute程序需做的就是区分接收到的ICMP报文是超时还是端口不可达,以判断什么时候结束
局域网输出
- 输出的第1个无标号行给出了目的主机名和其I P地址,指出t r a c e r o u t e程序最大的T T L字段值为3 0。4 0字节的数据报包含2 0字节I P首部、8字节的U D P首部和1 2字节的用户数据。
- 输出的后面两行以T T L开始,接下来是主机或路由器名以及其I P地址。对于每个T T L值,发送3份数据报。每接收到一份I C M P报文,就计算并打印出往返时间。
Traceroute程序注意事项
- 不能保证现在的路由也是将来所要采用的路由,甚至两份连续的IP数据报都可能采用不同路由
- 不能保证ICMP报文的路由与traceroute程序发送的UDP数据报采用统一路由
- 返回的ICMP报文中的信源IP地址是UDP数据报到达的路由器接口的IP地址
广域网输出
IP源站选路选项
- 源站选路
- 思想:由发送者指定路由
- 形式:
- 严格的源路由选择。发送端指明IP数据报所必须采用的确切路由。如果一个路由器发现源路由所指定的下一个路由器不在其直接连接的网络上,那么它就返回一个“源站路由失败”的I C M P差错报文。
- 宽松的源站选路。发送端指明了一个数据报经过的IP地址清单,但是数据报在清单上指明的任意两个地址之间可以通过其它路由器。
- Tr a c e r o u t e程序提供了一个查看源站选路的方法,我们可以在选项中指明源站路由,然后检查其运行情况。
- 标准版中没有,有些补丁支持源站路由选项
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151531.html原文链接:https://javaforall.cn