TTL(time
to live): 目的是防止数据报在选路时无休止的在网络中流动。
当路由器收到一份IP数据报,如果其TTL字段是0或1,则路由器不转发该数据报(接收到这种数据的主机可以将他交给应用程序,因为不需要转发数据报),相反,路由器将丢弃该数据报,并给信源机发一份ICMP“超时”信息。Traceroute程序的关键在于这份ICMP信息的IP报文的信源地址是该路由器的IP地址。
Traceroute的操作过程:
1) 发送一份TTL字段为1的数据报(UDP数据报,选择一个不可能的端口号)给目的主机。处理这份数据报的第一个路由器将TTL值减一,丢弃该数据报,并发回一份超时ICMP报文。这样就得到了该路径的第一个路由器的IP地址。
2) 发送一份TTL字段为2的数据报给目的主机。。。。。得到该路径的第二个路由器的IP地址。
3) 继续这个过程。。。。。。。。。直到该数据报到达目的主机。但是,目的主机哪怕接到TTL值为1的IP数据报,也不会丢弃该数据报并产生一份超时ICMP报文,因为数据报已经到达其最终目的地了。那么我们如何判断是否已经达到目的主机了呢?
4) Traceroute程序发送UDP数据报给目的主机,但是它选择一个不可能的值作为UDP端口号,使目的主机的任何一个应用程序都不可能使用该端口。因为该数据报到达时,将使主机的UDP模块产生一份“端口不可达”错误的ICMP报文。这样,traceroute 程序所要做的就是区分接收到的ICMP报文是超时还是端口不可达,以判断什么时候结束。
实现效果:
对于每个TTL,traceroute程序发送3份数据报。每接收到一份ICMP报文,就计算并打印出往返时间。如果在5秒钟内仍未收到3份数据报的任何一份响应,则打印一个星号,并发送下一份数据报.
注意事项:
1) 不能保证现在的路由也是将来的路由(甚至连续的两份IP数据报都可能采用不同的路由)
2) 不能保证ICMP报文的路由与traceroute程序发送的UDP数据报采用同一路由。所以打印出来的往返时间可能并不能真正体现数据报发出和返回的时间差。
3) 返回的ICMP报文中的信息源IP地址是UDP数据报到达的路由器接口的IP地址,这与IP记录路由选项不同,记录的IP地址指的是发送接口的地址(转发出去的那个接口的地址)
声明:文章内容来自《TCP/IP详解》第一卷,部分内容经过本人整理,仅作学习笔记之用。
分享到:
相关推荐
traceroute程序设计与实现
程序代码共享源代码。
traceroute程序设计实现分析.doc
traceroute程序设计及实现.doc
网络编程—Traceroute程序实例.pdf
Tr a c e r o u t e程序是一个能更深入探索T C P / I P协议的方便可用的工具。 尽管不能保证从源端发往目的端的两份连续的 I P数据报具有相同的路由,但是大多数情况下 是这样的
1.已知参数:输入:目的节点IP地址或主机名;输出:从控制台屏幕输出IP报文由本机出发到达目的主机所经过的路由信息。 2.设计要求:通过原始套接字编程,实现Tracert的基本功能 2.1初始化Windows Sockets网络环境;...
本功能是通过linux下的socket实现网络TranceRoute功能,界面是用Qt完成的,帧长可设置,探索次数也可以设置,很适合新手的入门教程,代码有详细的注释!
TCP/IP网络编程知识 基于ICMP的路由跟踪(traceroute)程序!程序代码如果不正确,自己调试!
里面包含课程设计和源代码,代码带有详细注释
(1)编写traceroute程序。要求实现基于ICMP的traceroute探测程序。 (2)对FTP协议进行解析,分析出用户名和密码
这是 Unix traceroute实用程序的图形前端。 它显示 URL 解析到的地理位置。 它是使用 Processing API 编写的。 还使用了这些库:GLGraphics、toxiclibs 和 controlP5。 要求是: traceroute dig Java 项目状态...
Traceroute程序](8. Traceroute程序.md) [9. IP选路](9. IP选路.md) [10. 动态选路协议](10. 动态选路协议.md) [11. UDP:用户数据报协议](11. UDP:用户数据报协议.md) [12. 广播和多播](12. 广播和多播.md) ...
第8章Traceroute程序 第9章IP选路 第10章动态选路协议 第11章UDP:用户数据报协议 第12章广播和多播 第13章IGMP:Internet组管理协议 第14章DNS:域名系统 第15章TFTP:简单文件传送协议 第16章BOOTP:引导程序协议 ...
8.5.3 宽松的源站选路traceroute程序的往返路由 80 8.6 小结 81 第9章 IP选路 83 第10章 动态选路协议 95 第11章 UDP:用户数据报协议 107 第12章 广播和多播 128 第13章 IGMP:Internet组管理协议 136 第14章 DNS:...
实验中发现了基于 UDP 的 traceroute 命令在实际使用时的缺陷,并基于 ICMP 实现了新的 traceroute 程序用于追踪并保存路由路径。基于 python 的 networkx 和matplotlib 库,将这些路由路径最终绘制成了网络拓扑结构...
Tcproute是一个用于Windows的基于TCP的traceroute控制台程序。这个软件需要先安装 .net framework 4.0才可以运行。
第8章 Traceroute程序 第9章 IP选路 第10章 动态选路协议 第11章 UDP:用户数据报协议 第12章 广播和多播 第13章 IGMP:Internet组管理协议 第14章 DNS:域名系统 第15章 TFTP:简单文件传送协议 第16章 BOOTP: 引导...
第8章 Traceroute程序 第9章 IP选路 第10章 动态选路协议 第11章 UDP:用户数据报协议 第12章 广播和多播 第13章 IGMP:Internet组管理协议 第14章 DNS:域名系统 第15章 TFTP:简单文件传送协议 第16章 BOOTP: 引导...