traceroute 工作原理

traceroute 工作原理文章目录PINGTracerouteTraceroute的工作原理举个“栗子”PINGICMP的一个重要应用就是分组网间探测PING(PacketInterNetGroper),用来测试两台主机之间的连通性。PING使用了ICMP回送请求与回送回答报文。PING是应用层直接使用网络层ICMP的一个例子。他没有通过传输层的TCP或UDP。TracerouteICMP的另一个非常有用的应用是traceroute(这是UNIX操作系统中名字),它用来跟踪一个分组从源点到

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

PING

ICMP 的一个重要应用就是分组网间探测 PING(Packet InterNet Groper),用来测试两台主机之间的连通性。PING 使用了 ICMP 回送请求与回送回答报文。PING 是应用层直接使用网络层 ICMP 的一个例子。他没有通过传输层的 TCP 或 UDP。

Traceroute

ICMP 的另一个非常有用的应用是 traceroute(这是 UNIX 操作系统中名字),它用来跟踪一个分组从源点到终点的路径。在 Windows 操作系统中这个命令是 tracert。下面简单介绍下这个程序的工作原理。

Traceroute 的工作原理

Traceroute 从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的 UDP 用户数据报。第一个数据报 P1 的生存时间 TTL 设置为1。当 P1 到达路径上的第一个路由器 R1 时,路由器 R1 先收下它,接着把 TTL 的值减 1。由于 TTL 等于零了,R1 就把 P1 丢弃了,并向源主机发送一个 ICMP 时间超过 差错报给报文。
源主机接着发送第二个数据报 P2,并把 TTL 设置为 2。P2 先到达路由器 R1 收下后把 TTL 减 1 再转发给路由器 R2。R2 收到 P2 时 TTL 为 1,但减 1 后 TTL 变为零了。R2 就丢弃 P2,并向源主机发送一个 ICMP 时间超过差错报给报文。这样一直继续下去。当最后一个数据报刚刚到达目的主机时,数据报的 TTL 是 1。主机不转发数据报,也不把 TTL 值减 1。但因 IP 数据报中封装的是无法交付的传输层的 UDP 用户数据报,因此目的主机要向源主机发送 ICMP 终点不可达差错报告报文。
这样,源主机达到了自己的目的,因为这些路由器和最后目的主机发来的 ICMP 报文正好给出了源主机想知道的路由信息——到达目的主机所经过的路由器的 IP 地址,以及到达其中的每一个路由器的往返时间。

举个“栗子”

C:\Users\liyongjun>tracert www.baidu.com

通过最多 30 个跃点跟踪
到 www.a.shifen.com [180.101.49.11] 的路由:

  1     5 ms     2 ms     6 ms  10.10.68.1 [10.10.68.1]
  2     *        *        *     请求超时。
  3     3 ms     3 ms     3 ms  49.76.124.1
  4     3 ms     1 ms     3 ms  58.215.68.201
  5     5 ms     6 ms     4 ms  58.215.152.181
  6     5 ms     6 ms     6 ms  58.213.94.106
  7     *        *        6 ms  58.213.94.86
  8     7 ms    45 ms     9 ms  58.213.96.102
  9    11 ms    10 ms    10 ms  10.166.50.6 [10.166.50.6]
 10    10 ms    11 ms    10 ms  10.166.50.8 [10.166.50.8]
 11     *       60 ms    11 ms  10.166.96.4 [10.166.96.4]
 12    11 ms     *        *     10.165.1.17 [10.165.1.17]
 13     5 ms     5 ms     6 ms  180.101.49.11

上面是从一台 Windows PC 向百度服务器 www.baidu.com 发出的 tracert 命令后获得的结果。图中每一行有三个时间出现,是因为对应于每一个 TTL 值,源主机要发送三次同样的 IP 数据报。出现 * 号,可能是该路由器防火墙屏蔽掉了 ICMP 消息,所以我们得不到相关数据包的返回数据。上图说明从 PC 到百度服务器,中间共经历了 12 台路由器,并且能够看到每台路由器的 IP 地址,最终抵达目的IP 180.101.49.11
我们还应该注意到,从原则上讲,IP 数据报经过的路由器越多,所花费的时间也就越多。但从上面示例可以看出,有时正好相反。这是因为互联网的拥塞程度随时都在变化,也很难预料到。因此,完全有这样的可能:经过更多的路由器反而花费更少的时间。

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

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

(0)
上一篇 2022年6月20日 上午9:46
下一篇 2022年6月20日 上午9:46


相关推荐

  • .NET程序的编译和运行

    程序的编译和运行,总得来说大体是:首先写好的程序是源代码,然后编译器编译为本地机器语言,最后在本地操作系统运行。下图为传统代码编译运行过程:.NET的编译和运行过程与之类似,首先编写好的源代码,然

    2021年12月22日
    59
  • 2026大模型扎堆发布:从Kimi到智谱,国产AI如何从“做题家”进化为“实干派”

    2026大模型扎堆发布:从Kimi到智谱,国产AI如何从“做题家”进化为“实干派”

    2026年3月18日
    3
  • 分解质因数算法

    分解质因数算法1 引例博主为双非学校计算机专业的小菜鸡一枚 目前在备战蓝桥杯的省赛 在蓝桥杯的官网上刷题 被如下一道题难住 后来百度了一下 原来这个题考的是分解质因数的算法 只需要将 n 的所有质因数 找出来 然后将素因子相乘 因为题目要求每个素因子的次数不大于 1 因此乘过的就不用再乘了 最后的结果即为所求 当然我今天不是来讲题的 下面我们来看看这个分解质因数的算法 2 定义每个合数都可以写成几个质数相

    2026年3月26日
    2
  • redis有效时间设置及时间过期处理_查看redis状态

    redis有效时间设置及时间过期处理_查看redis状态redis是在内存中进行缓存的,我们在设置redis缓存时,可以设置下过期时间。那么在设置时间到期后redis是如何进行数据删除的。redis清理过期数据。定期清理+惰性清理定期删除:redis数据库默认每隔100ms就会进行随机抽取一些设置过期时间的key进行检测,过期则删除。惰性删除:定期删除还没有来得及删除,就被程序请求到的一个过期key,redis会先检测key是否,过期,如果过期则删…

    2026年4月14日
    4
  • RUST开服教程、常用指令及心得[通俗易懂]

    RUST开服教程、常用指令及心得[通俗易懂]【前言】【开始前你需要了解的事情】①常用网址②更新与删档日期③目前国服环境【服务器硬件的选择】【标准服务器】①下载和更新服务器②制作服务器的启动脚本③选择你的服务器地图④运行服务器【模组服务器】①完成标准服务器的下载和设置②安装Oxide插件平台③下载插件④安装插件⑤调试插件⑥模组服的更新⑦在标准服中使用插件功能【在自己的电脑上运行服务端】①…

    2022年7月14日
    77
  • 如何用matlab画圆

    如何用matlab画圆用matlab画一个以(40,40)为圆心,以20位半径的圆r=20;%设置半径为20theta=0:pi/100:2*pi;%以pi/100为圆心角画圆x=40+r*cos(theta);…

    2022年6月19日
    33

发表回复

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

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