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)
上一篇 2022年7月21日 下午6:36
下一篇 2022年7月21日 下午6:36


相关推荐

  • C++学习之路—— C++异常处理机制

    C++学习之路—— C++异常处理机制例题:1.设计一个程序,根据输入的三边求三角形面积。2.要求设置异常处理机制,对不符合三角形条件提示错误信息,不做计算;对输入非正数的边提示错误,并重新输入。代码如下:class S{public: double s; S(double x, double y, double z) { a = x; b = y; c = z; } void TryS();pr…

    2022年8月18日
    16
  • 【低功耗蓝牙】⑤ 蓝牙HID协议

    【低功耗蓝牙】⑤ 蓝牙HID协议摘要本文章主要介绍了蓝牙 HID 协议的实现方法 基于 ESP32 平台实现了蓝牙键盘 蓝牙鼠标 蓝牙自拍杆和蓝牙游戏手柄等设备 是初学者学习 BLEHID 协议很好的参考文章 HID 设备 HID HumanInterfa 人体学接口设备 是生活中常见的输入设备 比如键盘鼠标游戏手柄等等 早期的 HID 是设备大部分都是通过 USB 接口来实现 蓝牙技术出现后 通过蓝牙作为传输层 实现了无线 HID 设备 通过低功耗蓝牙实现的 HID 功能一般简称为 HOGP HIDoverGattP

    2026年3月17日
    2
  • 基于 vue 实现的电商后台管理系统

    基于 vue 实现的电商后台管理系统源码地址:https://github.com/Hero601/vue_shop后端接口:https://goal.lanzous.com/b01c5hhsb密码:5ees免费的小星星点一个吧~

    2022年5月6日
    77
  • 电脑计算机丢失msvcp140.dll,电脑丢失msvcp140.dll什么意思

    电脑计算机丢失msvcp140.dll,电脑丢失msvcp140.dll什么意思电脑丢失 msvcp140 dll 什么意思 解决方法 文件 系统 电脑 运行库电脑丢失 msvcp140 dll 什么意思易采站长站 站长之家为您整理了电脑丢失 msvcp140 dll 什么意思的相关内容 电脑丢失 msvcp140 dll 是 VC2015 运行库没有安装导致的 解决方法 首先打开电脑管家 点击右上角按钮切换到经典界面 然后点击 电脑诊所 进入选择 软件硬件 丢失 dll 文件 最后选择相对

    2026年3月16日
    3
  • 解决CentOS网卡重启失败方法

    解决CentOS网卡重启失败方法Linux 网卡重启失败方法

    2025年7月1日
    7
  • 常用前端UI框架

    常用前端UI框架Bootstrap 首先说 Bootstrap 估计你也猜到会先说或者一定会有这个 呵呵了 这是说明它的强大之处 拥有框架一壁江山的势气 自己刚入道的时候本着代码任何一个字母都得自己敲出来挡我者废的决心 来让自己成长 结果受到周围各种基友的引诱开始了 Bootstrap 旅程 本人虽然是个设计 前端的万里有一的人才 但是老天只让我会用 PS 和各种设计工具却不给我跟设计妹子一样的审美 所以这也是我最初选择 Bootstrap 的原因之一 它让我做出来的东西好歹能在妹子面前装个逼 不过时间长了难免觉得

    2026年3月17日
    2

发表回复

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

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