TCP/IP之Traceroute程序
2023-06-13 09:12:01 时间
大家好,又见面了,我是你们的朋友全栈君。
定义:
- 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
相关文章
- TCP/ip详解_TCP/IP详解
- 第三章 TCP/IP ip地址概念与应用
- 小程序推动本地生活服务实现用户增量
- tcp网络模型_TCP/IP协议模型
- 小程序 flex_fly app
- 小程序获取不到用户头像和昵称返回微信用户问题解决,即小程序授权获取用户头像规则调整的最新解决方案
- 小程序容器的神奇之处
- tcp心跳包 - python TCP服务器v1.3 - 服务器抗压测试及关闭套接字处理
- TCP聊天+传输文件服务器服务器套接字v2.8 - 修复已知程序4个问题
- SQLServer 错误 11001 在建立与服务器的连接时出错。 在连接到 SQL Server 时,在默认的设置下 SQL Server 不允许远程连接可能会导致此失败。 (提供程序:TCP 提供程序,错误:0 – 无法识别主机。)(.Net SqlClient 数据提供程序) 故障 处理 修复 支持远程
- Linux下C语言程序编译实践(linux编译c文件)
- Linux下的TCP网络模拟实验(linux模拟tcp)
- 怎么避免Python程序出现死循环(无限循环)?
- Linux查看TCP连接数的命令行技巧(linux查看tcp连接数)
- Linux基础入门:快速开启你的程序之旅(linux基础入门教程)
- 快速切换本地 hosts 的小程序 SwitchHosts
- 报文:Linux网络层TCP报文转发实现(linux转发tcp)
- Linux下的TCP聊天之旅(linux聊天tcp)
- Linux 下 TCP/IP 转发功能实现(tcp转发linux)
- linux下使用TCP命令掌握网络礼仪(linux命令tcp)
- 超时Linux下设置TCP超时时间的方法(linux设置tcp)
- /ipLinux TCP/IP网络编程:掌握网络基础知识(linux网络编程tcp)
- Linux中断程序:实现快速响应(linux中断程序)
- Linux的减法:如何优雅地从系统中减去不必要的程序和文件(linux减法)
- 探究Linux TCP协议实现的发包机制(linux tcp发包)
- Linux TCP缓冲区:提升网络性能的关键(linux tcp缓冲区)
- ASP程序从Oracle数据库精挖宝贵资源(asp取oracle数据)
- Android修改自己程序字体的方法详解