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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 玩转挖矿:家庭矿机组装全攻略!

    玩转挖矿:家庭矿机组装全攻略!离上次发挖矿的教程已经过去两个多月了。这两个多月发生了什么事情呢?特斯拉买入15亿美刀BTC美图也不修图买BTC和ETH去了美国一大波ETF申请中加密币交易所coinbase快要上市了20多万一枚的比特币冲到了40万2100一张的二手1660s涨到4000多了…..这段时间我也没有闲着,断断续续收了十几张卡,装了三台矿机。趁着第一波投入已经回本的好心情,给大家分享一下装显卡矿机的经验。(不做投资建议,不送显卡,要不要高位站岗完全看你们自己!)我本来是没时间来.

    2022年10月22日
  • TCP和UDP的特点_TCP和UDP位于

    TCP和UDP的特点_TCP和UDP位于原文链接:https://www.jianshu.com/p/ef1811b3b44eOSI参考模型和TCP/IP协议群1.TCP/IP协议群的具体含义从字面意义上讲,有人可能会认为TCP/IP是指TCP和IP两种协议.实际生活中有时也确实就是指这两种协议.然而在很多情况下,它只是利用IP进行通信时所必须用到的协议群的统称.具体来说,IP或ICMP,TCP或U…

    2022年9月20日
  • hadoop2.0的datanode数据存储文件夹策略的多个副本

    hadoop2.0的datanode数据存储文件夹策略的多个副本

    2022年1月8日
  • 关于ubuntu kill 硬盘问题

    关于ubuntu kill 硬盘问题

    2021年5月3日
  • 转换流实现了字节流和字符流之间的互相转换_java输出流输出文件

    转换流实现了字节流和字符流之间的互相转换_java输出流输出文件1、转换流–OutputStreamWriter简介:OutputStreamWriterextendsWriter,转换流也是继承自超类Writer,因此可以使用Writer中的共性方法:write(intc),write(char[]ch),…,flash(),close(),…OutputStreamWriter常用的构造方法:1)OutputStreamWr…

    2022年9月3日
  • ubuntu设置中文输入法_ubuntu如何使用中文输入法

    ubuntu设置中文输入法_ubuntu如何使用中文输入法找到设置 选择区域和语言点击ManageInstalledLanguagees,提示安装的话安装即可4.点击图示内容。5.将Chinese(simplified)勾选上右键点击住,将汉语拖到第一位重启Ubuntu6.在输入源中点击+号,选中里面的汉语,再选中里面的汉语(IntelligentPinyin),添加即可,并将其移动到第一位。在输入源中点击+号,…

    2022年9月26日

发表回复

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

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