前言

一句话概括,Google DNS 8.8.8.8 会对 Ping 响应数据包长度做截断,在系统上会有不同的结果提示,但 Wireshark 抓包结果会显示 Ping 无响应。

163 示例

先以 www.163.com 为例,Windows 默认 Ping ,数据长度 32。

$ ping www.163.com正在 Ping z163picipv6.v.bsgslb.cn [180.97.232.124] 具有 32 字节的数据:
来自 180.97.232.124 的回复: 字节=32 时间=8ms TTL=53
来自 180.97.232.124 的回复: 字节=32 时间=8ms TTL=53
来自 180.97.232.124 的回复: 字节=32 时间=8ms TTL=53
来自 180.97.232.124 的回复: 字节=32 时间=8ms TTL=53180.97.232.124 的 Ping 统计信息:数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 8ms,最长 = 8ms,平均 = 8ms


Windows Ping 数据长度 1472,抓包结果显示总长度为 1514 ,ETH 14 + IP 20 + ICMP 1480(8+1472) = 1514,正好满足 MTU 1500

$ ping -l 1472 www.163.com正在 Ping z163picipv6.v.bsgslb.cn [180.97.232.124] 具有 1472 字节的数据:
来自 180.97.232.124 的回复: 字节=1472 时间=9ms TTL=53
来自 180.97.232.124 的回复: 字节=1472 时间=9ms TTL=53
来自 180.97.232.124 的回复: 字节=1472 时间=8ms TTL=53180.97.232.124 的 Ping 统计信息:数据包: 已发送 = 3,已接收 = 3,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 8ms,最长 = 9ms,平均 = 8ms

Windows Ping 字节长度 1473,因超过最大 MTU , IP 产生分片,但 Ping 结果仍是正常。

$ ping -l 1473 www.163.com正在 Ping z163picipv6.v.bsgslb.cn [180.97.232.125] 具有 1473 字节的数据:
来自 180.97.232.125 的回复: 字节=1473 时间=7ms TTL=53
来自 180.97.232.125 的回复: 字节=1473 时间=7ms TTL=53
来自 180.97.232.125 的回复: 字节=1473 时间=7ms TTL=53180.97.232.125 的 Ping 统计信息:数据包: 已发送 = 3,已接收 = 3,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 7ms,最长 = 7ms,平均 = 7ms

可以看到 Ping request 3 个包,分片成 6 个数据包,同样 reply 3 个包,也由于分片变成 6 个数据包。

Google 示例

Google DNS 8.8.8.8,Windows 默认 Ping ,数据长度 32。

$ ping 8.8.8.8正在 Ping 8.8.8.8 具有 32 字节的数据:
来自 8.8.8.8 的回复: 字节=32 时间=35ms TTL=114
来自 8.8.8.8 的回复: 字节=32 时间=35ms TTL=114
来自 8.8.8.8 的回复: 字节=32 时间=36ms TTL=114
来自 8.8.8.8 的回复: 字节=32 时间=36ms TTL=1148.8.8.8 的 Ping 统计信息:数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 35ms,最长 = 36ms,平均 = 35ms

Google DNS 8.8.8.8,Windows Ping 数据长度 68 和 69 。注意不同之处,Ping 69 在系统上会显示为 字节=68 (已发送 69) ,结果仍是 Ping 成功。

$ ping -l 68 8.8.8.8正在 Ping 8.8.8.8 具有 68 字节的数据:
来自 8.8.8.8 的回复: 字节=68 时间=65ms TTL=49
来自 8.8.8.8 的回复: 字节=68 时间=64ms TTL=49
来自 8.8.8.8 的回复: 字节=68 时间=64ms TTL=498.8.8.8 的 Ping 统计信息:数据包: 已发送 = 3,已接收 = 3,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 64ms,最长 = 65ms,平均 = 64ms$ ping -l 69 8.8.8.8正在 Ping 8.8.8.8 具有 69 字节的数据:
来自 8.8.8.8 的回复: 字节=68 (已发送 69) 时间=64ms TTL=49
来自 8.8.8.8 的回复: 字节=68 (已发送 69) 时间=64ms TTL=49
来自 8.8.8.8 的回复: 字节=68 (已发送 69) 时间=64ms TTL=49
来自 8.8.8.8 的回复: 字节=68 (已发送 69) 时间=64ms TTL=498.8.8.8 的 Ping 统计信息:数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 64ms,最长 = 64ms,平均 = 64ms


Wireshark 实际抓包结果如下图

Windows Ping 数据长度 69 ,ICMP Request 数据包长度仍是 111(14+20+8+69),但是 Google DNS 8.8.8.8 会将 Ping ICMP Reply 数据长度截断为 68,使得整个数据包长度变为了 110。

由于在 RFC 792 中针对 Echo or Echo Reply Message 定义说明了以下两点:

The data received in the echo message must be returned in the echo reply message.
The identifier and sequence number may be used by the echo sender to aid in matching the replies with the echo requests.

因为 Echo reply 数据长度 68 与 Echo request 数据长度 69 不一致,因此在 Wireshark 中会遵循 RFC ,从而显示 no response found! 信息,而在 Windows 系统( macOS 系统类似)的判断逻辑会因为 id 和 seq num 相同,再加上部分长度数据匹配,从而认为是对应的一组 echo request 和 echo reply ,所以显示为 Ping 成功,并会友情提示 字节=68 (已发送 69)

继续 Google DNS 8.8.8.8,Windows Ping 数据长度 1472 和 1473 。

$ ping -l 1472 8.8.8.8正在 Ping 8.8.8.8 具有 1472 字节的数据:
来自 8.8.8.8 的回复: 字节=68 (已发送 1472) 时间=35ms TTL=114
来自 8.8.8.8 的回复: 字节=68 (已发送 1472) 时间=35ms TTL=114
来自 8.8.8.8 的回复: 字节=68 (已发送 1472) 时间=36ms TTL=1148.8.8.8 的 Ping 统计信息:数据包: 已发送 = 3,已接收 = 3,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 35ms,最长 = 36ms,平均 = 35ms$ ping -l 1473 8.8.8.8正在 Ping 8.8.8.8 具有 1473 字节的数据:
请求超时。
请求超时。
请求超时。8.8.8.8 的 Ping 统计信息:数据包: 已发送 = 3,已接收 = 0,丢失 = 3 (100% 丢失),


Wireshark 实际抓包结果如下图

虽然都是 no response found! ,但是 Ping 1472 和 1473 完全是不一样的含义。1472 如上述分析是因为 Echo reply 长度截断,系统里仍是显示 Ping 成功,而 1473 是因为超过了最大 MTU,产生了 IP 分片,由于 Google 安全防护种种缘故,阻断了相关报文,因此并不会有 Echo reply 消息返回,所以是真正的 Ping 不通。

总结

各种奇奇怪怪的 Ping 结果,考虑到不同的客户端、服务器、Ping 程序以及抓包工具等等,需结合实际环境,具体分析。


感谢阅读,更多技术文章可关注个人公众号:Echo Reply ,谢谢。

Wireshark TS | Ping Google DNS 8.8.8.8 特殊结果解析相关推荐

  1. WireShark实战笔记之DNS协议分析

    DNS协议分析 DNS协议概述 DNS工作机理概述 dns报文 WireSahrk分析DNS协议 查看第一个包: 查看第四个包(响应包) DNS协议概述 DNS协议也可以称为DNS服务,全称是Doma ...

  2. linux可平通网关但不能上网,redhat问题:能ping通网关和本网段的IP,但是不能ping通DNS,也不能上网...

    redhat问题:能ping通网关和本网段的IP,但是不能ping通DNS,也不能上网 (2011-12-20 06:11:51) 标签: 上网 杂谈 redhat问题:能ping通网关和本网段的IP ...

  3. Wireshark对ping报文的解码显示(BE与LE) 转自作者:易隐者

    Wireshark对ping报文的解码显示(BE与LE) 我们非常熟悉ping报文的封装结构,但是,在这个报文解码里,我们发现wireshark的解码多了几个参数:Identifier(BE).Ide ...

  4. opendns_如何使用OpenDNS或Google DNS设置Verizon FIOS路由器

    opendns Are you still using your service provider's DNS servers? You might have heard about Comcast' ...

  5. google dns 怎么用 ,google dns 的ip 设置 方法介绍

    google dns 怎么用? 首先看图片 没错,你只要把google dns的ip 8.8.8.8 8.8.4.4 设置即可

  6. google dns

    为什么80%的码农都做不了架构师?>>>    google dns nameserver 8.8.8.8 nameserver 8.8.4.4 转载于:https://my.osc ...

  7. google dns 的好处

    1. 什么是google dns? 消费者使用Google作为他们的DNS服务提供商 2.Google Public DNS的两大好处 1.理论上更快速.更稳定的浏览体验, 2.针对恶意网站的更多安全 ...

  8. DNS与ARP的关系与原理解析

    DNS与ARP的关系与原理解析 "计算机之间进行通信的只靠IP地址不能完成吗?" 01 前言 我们在上网查询某一个网站的时候,比如谷歌搜索,一般都是输入www .google.co ...

  9. DNS(域名系统)介绍,深入解析DNS解析失败发生的原因及解决方法

    域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS使用TCP和UDP端口53. ...

最新文章

  1. ML之KMeans:利用KMeans算法对Boston房价数据集(两特征+归一化)进行二聚类分析
  2. LeetCode 86分割链表87扰乱字符串
  3. Android Studio 约束布局[ConstraintLayout]
  4. android之修改CheckBox左侧图标样式
  5. 解决StreamReader读取中文出现乱码的问题
  6. PHP cURL应用实现模拟登录与采集使用方法详解
  7. python字典的常用方法_python操作字典类型的常用方法(推荐)
  8. P1601高精度加法
  9. z-index 绝对定位的盒子居中
  10. python后端程序例子_Python MR程序示例
  11. 使用Freetype发现的问题记录
  12. OpenGL超级宝典(第7版)之第八章基元处理
  13. 网络丢包怎么办?这些解决办法
  14. 软件测试工程师需要具备哪些能力?
  15. 2021最新外卖霸王餐小程序、H5、微信公众号版外系统源码|霸王餐美团/饿了么系统 粉丝裂变玩源码下载
  16. vijos P1263 单挑女飞贼
  17. 如何在GitHub上建立一个自己的网站
  18. PTA 7-2 评委打分
  19. 汇编语言程序设计IV-贺利坚-专题视频课程
  20. 大数据之Python数据分析 实训 信用卡客户风险评价之二、构建信用卡客户风险评价关键特征

热门文章

  1. 基于TqSDK的vnpy实盘初始化数据获取
  2. Android.mk基础知识
  3. UAC2.0 Audio-class-specific request
  4. 工行网银查询接口完整版ssl
  5. android.os.FileUriExposedException: file:///storage/emulated/0/myimage/15115
  6. Burpsuite工具的证书安装
  7. HTML5 WebSocket的入门使用
  8. 思念是一种病(转载)
  9. 计算机网络核心概念——名词解释
  10. linux查询日志命令加过滤,Linux记录-筛选日志sed、find、tail,du,awk命令