ping 与 traceroute 的工作原理分析

ping 与 traceroute 的工作原理分析一、ping    ping程序的主要目的是测试主机是否可达,它发送 ICMP回显请求报文给目的主机,并等待返回ICMP回显应答    ping程序一般会周期性持续地发送ICMP请求报文,除非用户手动终止,或指定了发送报文个数    回显请求和回显应答通过序列号(icmp_seq)进行匹配,下图中序列号依次为1、2、3、4…    pi…

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

一、ping

       ping 程序的主要目的是测试主机是否可达,它发送 ICMP 回显请求报文给目的主机,并等待返回 ICMP 回显应答

       ping 程序一般会周期性持续地发送 ICMP 请求报文,除非用户手动终止,或指定了发送报文个数

       回显请求和回显应答通过序列号(icmp_seq)进行匹配,下图中序列号依次为 1、2、3、4 …

       ping 程序通过数据报中记录的发送请求时间值接收到回显应答报文的当前时间值,计算往返耗时(time)

       ping 与 traceroute 的工作原理分析

常见问题:

1.  为什么 ping 第一次一般会产生更多耗时?

     因为 ping 第一次的时候,需要首先进行 ARP 解析,获取 IP 地址对应的 MAC 地址(同时将映射关系缓存),

     而下次 ping 的时候会直接从 ARP 高速缓存读取,少了一个步骤,自然时间就缩短了!

二、traceroute 

       traceroute 程序的主要目的是获取从当前主机到目的主机所经过的路由

       官方方案(TCP/IP详解里提供的基于 UDP 的方案):通过封装一份 UDP 数据报(指定一个不可能使用的端口,30000以上)依次将数据报的 TTL 值置为 1、2、3…,并发送给目的主机。当路径上第一个路由器收到 TTL 值为 1 的数据报时,首先将该数据报的 TTL 值减 1,发现 TTL 值为 0,而自己并非该数据报的目的主机,就会向源主机发送一个 ICMP 超时报文,traceroute 收到该超时报文,就得到了路径上第一台路由器的地址;然后照此原理,traceroute 发送 TTL 为 2 的数据报时,会收到路径上第二台路由器返回的 ICMP 超时报文,记录第二台路由器的地址;直到报文到达目的主机,目的主机不会返回 ICMP 超时,但由于端口无法使用,就会返回一份端口不可达报文给源主机,源主机收到端口不可达报文,证明数据报已经到达了目的地,停止后续的 UDP 数据报发送,将记录的路径依次打印出来,使命完成,结束任务。

      注意:目的主机端口号最开始设置为 33435,且每发送一个数据报加 1,可以通过命令行选项来改变开始的端口号

       ping 与 traceroute 的工作原理分析

      约束:

      1. 不能保证现在的路由也是将来所要采用的路由,甚至两份连续的 IP 数据报都可能采用不同的路由;

      2. 不能保证 ICMP 报文的路由与 traceoute 程序发送的 UDP 数据报采用同一路由,时间测量可能不准;

      3. 返回的 ICMP 报文中的信源 IP 地址是 UDP 数据报到达的路由器接口的 IP 地址;

      ping 与 traceroute 的工作原理分析

          当从网络1某主机执行 traceroute 程序到网络3某主机,返回的路径将是 if1 和 if3 的地址;

          而反方向,将打印出 if4 和 if2 的地址

缺陷:

       1. 中间路由器有可能做了限制,不返回 ICMP 超时报文,traceroute 就无法获得其地址了,

           只能打印出 * 或 no reply

       2. 目的主机可能由于安全原因不会向源主机返回端口不可达的 ICMP 报文

            尽管探测数据报已经到达了目的主机,但 traceroute 程序收不到端口不可达报文,就仍会持续发送请求 …

       ping 与 traceroute 的工作原理分析

 

 

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

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

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


相关推荐

  • 计算机桌面锁写快捷,锁定计算机快捷键_锁定计算机的快捷键

    计算机桌面锁写快捷,锁定计算机快捷键_锁定计算机的快捷键2017-01-0515:11:14当有事需暂时离开,又不想他人动用电脑时,可采取锁定桌面的办法。1、首先要在电脑中设置好一个用户帐户密码(开机密码)。在锁定桌面时,只需按Win十L键(即按住那个有微软视窗图标的键…2016-12-1814:43:081在电脑上键盘上找到Windows键和L键,这两个键就是快速锁定计算机的关键所在步骤阅读2两只手一只手按Windows键,另一只手按L键,…

    2022年7月21日
    14
  • 数据仓库分层DWD、DWB、DWS[通俗易懂]

    数据仓库分层DWD、DWB、DWS[通俗易懂]DW:datawarehouse翻译成数据仓库DW数据分层,由下到上为DWD,DWB,DWSDWD:datawarehousedetail细节数据层,有的也称为ODS层,是业务层与数据仓库的隔离层DWB:datawarehousebase基础数据层,存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层。DWS:datawarehouseservice服务数据层,基于DWB上的基础数据,整合汇总成分析某一个主题域的服务数据,一般是宽表。零、数据加载层:ETL(Ex

    2022年6月26日
    557
  • idea插件Tabnine激活码_在线激活

    (idea插件Tabnine激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~MLZPB5EL5Q-eyJsaWNlb…

    2022年3月21日
    615
  • 全局钩子注入

    全局钩子注入全局钩子介绍hook,指利用api来提前拦截并处理windows消息的一种技术。如键盘钩子,许多木马都有这东西,监视你的键盘操作。全局钩子是系统钩子的一种,当指定的一些消息被系统中任

    2021年12月13日
    44
  • 圆周率两千万亿位_圆周率后3000万亿位

    圆周率两千万亿位_圆周率后3000万亿位网友一:对于我们日常生活应用来说,π=3.14就够用了,这就是小学毕业的要求。如果是工程上用,π=3.1415927也足够用了,也就是计算器的精度。那么如果继续计算圆周率,到100位、1万位,其实已经不是实用价值,而是数学研究价值了。1,信念,验证无限不循环π肯定是无限不循环的,不需要验证了。但是,作为数学的信念,我们就想验证一下。这种信念不仅仅在数学家中有,在其他学科领域、行业领域也有。2,研究…

    2022年9月12日
    2
  • UML时序图总结

    UML时序图总结序列图主要用于展示对象之间交互的顺序。  序列图将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。  消息用从一个对象的生命线到另一个对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。   序列图中涉及的元素:  1. 生命线:

    2022年6月24日
    36

发表回复

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

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