traceroute和tracert原理

traceroute和tracert原理一、Traceroutetraceroute命令用IP生存时间(TTL)字段和ICMP错误消息来确定从一个主机到网络上其他主机的路由。路由器收到TTL为1的包文减1后直接丢弃,然后回复ICMP(type=11,code=0,TTLequals0duringtransit——传输期间生存时间为0)。目标主机收到traceroute的UDP探测包回复ICMP(type=3,code=3,端口不可达)。Linux上称之为traceroute,Windos类似的功能为trace

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、Traceroute

traceroute 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。
路由器收到TTL为1的包文减1后直接丢弃,然后回复 ICMP(type=11,code=0,TTL equals 0 during transit——传输期间生存时间为0)。
目标主机收到traceroute 的UDP探测包回复ICMP(type=3,code = 3,端口不可达)。Linux上称之为 traceroute,Windos类似的功能为tracert。

linux 上 traceroute 运行过程:
traceroute 连续发送TTL从1开始递增的UDP包,目标端口 30000+,相同的目标地址,每个TTL相同的UDP包默认发送三个,端口依次递增。当收到目标地址回的 ICMP包(端口不可达),traceroute 停止发包,否则继续发送,默认最多发送 30 个,每个包大小 60Byte(IP+UDP+Data)。

[root@localhost sbc]# traceroute 10.228.90.70
traceroute to 10.228.90.70 (10.228.90.70), 30 hops max, 60 byte packets
 1  10.228.113.1 (10.228.113.1)  1.513 ms  2.367 ms  3.182 ms
 2  10.228.2.173 (10.228.2.173)  1.709 ms  2.584 ms  3.338 ms
 3  10.228.1.37 (10.228.1.37)  1.533 ms  2.233 ms  3.057 ms
 4  10.228.1.26 (10.228.1.26)  1.870 ms  2.652 ms  3.477 ms
 5  10.228.3.162 (10.228.3.162)  1.909 ms  2.728 ms  3.756 ms
 6  10.228.90.70 (10.228.90.70)  0.292 ms  0.266 ms  0.261 ms

在这里插入图片描述

流程分析:
1.连续发送 UDP 包,从seq69到到seq83连续15个报文,每三个包TTL增加1,总共发送五跳网元的探测报文,从上面截图可以看端口是逐渐加1。
在这里插入图片描述
在这里插入图片描述
2.发送seq84包的时候,TTL是6,立马收到ICMP seq85的包,端口不可达响应。但是后面继续发送两个TTL为6的包,仍然收到ICMP的响应。
在这里插入图片描述
3.针对前面发送的15个探测包,全部收到ICMP的响应包,TTL超期。
在这里插入图片描述

二、Tracert

通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议 (ICMP)”回应数据包,Tracert诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。

Tracert 先发送 TTL 为 1 的回应数据包,并随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 Tracert 实用程序中看不到。

Tracert 有一个固定的时间等待响应(ICMP TTL到期消息)。如果这个时间过了,它将打印出一系列的*号表明:在这个路径上,这个设备不能在给定的时间内发出ICMP TTL到期消息的响应。然后,traceroute 给TTL记数器加1,继续进行。

报文监测如下:

1、从10.40.140.97 到 10.43.85.162 经过 3 跳,第 4 跳到达目标主机。
在这里插入图片描述

2、PC机依次发送ICMP请求信息(Type=8,Echo request——回显请求[Ping请求]),收到目标主机的ICMP回的应答信息(type=0,Echo Reply——回显应答[Ping应答])后,停止发送请求信息,注意是三个应答信息都收到之后,才停止发送

在这里插入图片描述

3、当超出设定的跳数,源主机也会停止发送ICMP请求,如下所示设置跳数为3
在这里插入图片描述
在这里插入图片描述

3、小结
tracert 和 traceroute虽然都是路由跟踪,但是两者探测方法及探测的数据类型不同。默认情况下,traceroute是向目的地址的某个端口(大于30000)发送UDP数据报,tracert是向目的地址发出ICMP请求回显数据包。
当出现了tracert可达,但是traceroute不可达时,需要考虑路径的路由器是否对UDP进行了过滤,或者端口限制。

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

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

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


相关推荐

  • 史上最详细的虚拟机VMware12安装Windows7教程「建议收藏」

    摘要:VMware是一个强大的虚拟机,可以在一台电脑上模拟真实的环境,创建出一个虚拟机系统,并且可以在这个系统进行测试和其他的操作,当然你也可以直接网上下载现成的虚拟机镜像或者,网络上有很多的Ghost等文件,这类系统可能经过别人一些优化,但是优化的过程可能阉割了某些系统的文件,或者被植入一些广告等,文本一步步详细说明如何利用VMware12安装一个Win7系统,虚拟机win7镜像文件iso…

    2022年4月12日
    42
  • linux 文件重命名_手机文件重命名

    linux 文件重命名_手机文件重命名没有专门的重命名命令用mvab就可以重命名了=========================================mv:move移动文件(延伸功能:重命名,linux系统没有专门的重命名命令)基本格式:移动文件:mv文件名移动目的地文件名重命名文件:mv文件名修改后的文件名…

    2025年10月18日
    4
  • ASP.NET Session 清除

    ASP.NET Session 清除

    2022年3月7日
    44
  • svn钩子(hooks)自动部署代码到web目录

    svn钩子(hooks)自动部署代码到web目录

    2021年10月29日
    39
  • Linux系统负载LoadAverage详解

    Linux系统负载LoadAverage详解运维工程师在日常运维中经常使用w、top、uptime等命令来查看系统当前运行的负载情况。那么作为运维工程师是如何通过以上命令来判断系统当前负载是否已经达到极限了呢?为此笔者总结了一下如何通过loadaverage返回的数据来判断系统运行情况。什么是Load?什么是LoadAverage?Load用最通俗的语言说就是当前cpu需要干的工作量的多少。简单的说是进程队列的长度。

    2022年7月17日
    14
  • datagrip 2.4 激活_最新在线免费激活

    (datagrip 2.4 激活)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月29日
    130

发表回复

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

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