TCP/IP之Traceroute程序

TCP/IP之Traceroute程序定义:Traceroute程序时一个能更深入探索TCP/IP协议的方便可用的工具。功能:Traceroute程序可以让我们看到IP数据报从一台主机传到另一台主机所经过的路由。 Traceroute程序还可以让我们使用IP源路由选项。存在意义:不是所有路由器都支持记录路由选项 记录路由一般是单向的选项,记录地址翻了一番(一来一回) IP首部中留给选项的空间有限,不能存放当前大多…

大家好,又见面了,我是你们的朋友全栈君。

定义:

  • 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源站选路选项

  • 源站选路
  • 思想:由发送者指定路由
  • 形式:
  1. 严格的源路由选择。发送端指明IP数据报所必须采用的确切路由。如果一个路由器发现源路由所指定的下一个路由器不在其直接连接的网络上,那么它就返回一个“源站路由失败”的I C M P差错报文。
  2. 宽松的源站选路。发送端指明了一个数据报经过的IP地址清单,但是数据报在清单上指明的任意两个地址之间可以通过其它路由器。
  • Tr a c e r o u t e程序提供了一个查看源站选路的方法,我们可以在选项中指明源站路由,然后检查其运行情况。
  • 标准版中没有,有些补丁支持源站路由选项

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151531.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql — 清空表中数据

    mysql — 清空表中数据

    2021年6月2日
    83
  • ps2无线手柄连接arduino的使用方法

    ps2无线手柄连接arduino的使用方法首先在https://github.com/madsci1016/Arduino-PS2X这里下载ps2x的库文件。将PS2X_lib放到库文件目录下。接线方法如下,代码部分#definepressurestrue的意思是让上下左右的按键可以度数,按下时analogRead值为255.#definerumbletrue的意思是开启震动…

    2022年5月20日
    306
  • hikaripool信息_HikariPool源码(三)资源池动态伸缩「建议收藏」

    hikaripool信息_HikariPool源码(三)资源池动态伸缩「建议收藏」Java极客|作者/铿然一叶这是Java极客的第54篇原创文章1.资源池的动态伸缩1.为了提升资源池的性能,需要设置最小闲置资源数量,在资源池初始化时完成初始化;而当使用的资源超过最小闲置资源数,消费者释放回池中超过一定时间后要收缩到最小闲置资源数。2.为了避免无限申请资源导致超出负载,需要设置最大资源数,池中资源不能超出最大资源数。2.动态伸缩相关类结构职责说明:类职责Hou…

    2022年6月23日
    29
  • SQL Server中SET QUOTED_IDENTIFIER的使用

    SQL Server中SET QUOTED_IDENTIFIER的使用

    2022年3月5日
    38
  • servlet的运行原理_高铁怎么运行的原理

    servlet的运行原理_高铁怎么运行的原理Servlet在容器中的执行过程1.浏览器向服务器发出GET请求2.服务器上的Tomcat接收到该url,根据该url判断为Servlet请求,此时Tomcat将产生两个对象:请求对象(HttpServletRequest)和响应对象(HttpServletResponce)3.Tomcat根据url找到目标Servlet,且创建一个线程4.Tomcat将刚才创建的请求对象和响应对象传递…

    2022年10月1日
    0
  • 使用@Profiled注解或自定义AOP拦截打印日志json序列化失败

    使用@Profiled注解或自定义AOP拦截打印日志json序列化失败项目中使用@Profiled注解方式进行统一日志打印输出fastjson踩坑记录一下1:@Profiled注解方式如上图:方法上使用注解@Profiled,因为我的入参有HttpServletResponse,日志打印时会对所有入参进行序列化操作,所对以HttpServletResponse进行JSON.toJSONString()转换会抛出以上异常,此时要么干掉HttpServletResponse,或者换一种方式手动注入HttpServletResponse即可解决以上异常,如下图:

    2022年6月6日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号