Wireshark TS | 诡异的光猫网络问题

前言

来自于朋友分享的一个案例,最后定位的原因是光猫问题,而类似这类的设备所产生的网络问题,也曾碰到过两三次,但这一次的数据包现象挺特别,分析思路和过程也有所不同,故记录分享一下。

问题背景

用户所反馈的故障现象就是网页打不开,经过现场工程师的初步排查及整理,反馈如下:

  1. 用户使用光猫的 Wifi 访问个别公网域名打不开;
  2. 用户使用有线网络访问没有问题;
  3. 网络拓扑示意:笔记本终端 -> 光猫 -> 交换机 -> 互联网设备;
  4. 其中光猫简单看成是无线路由器,Wifi+DHCP+Nat;
  5. 捕获数据包的节点:笔记本终端、光猫出口和互联网出口

问题分析

笔记本终端

既然是笔记本终端打不开域名的故障现象,那么就可以先从笔记本捕获数据包开始入手。客户端 IP 192.168.0.1 和服务器端 IP 222.1.1.1 在标准的 TCP 三次握手和 TLS 握手完成之后,可见正常传输了一段时间后出现了大量的异常,通过专家信息统计,也可以看到出现了包括疑似虚假重传/重传,以及 Dup ACK 等问题。

直接跳转至异常处,可以看见从数据包 No.101 开始至最后,连续出现了 TCP Spurious Retransmission + TCP Dup ACK 的问题组合。

实际上有经验的工程师单从客户端的捕获文件,就已经可以初步判断出现了什么问题,说明如下:

  1. 因为是在客户端 192.168.0.1 本地抓包,所以从服务器端发给客户端的数据分段,如果出现 TCP Spurious Retransmission 标识,说明在之前客户端曾经收到过同样 Seq Num 的数据分段,并响应了 ACK ,所以当再次收到相同 Seq Num 的数据分段时,会标记成 TCP 虚假重传(所表达的意思就是:我收到了,也确认过了,但你还发同样的数据,所以我认为是虚假重传,我不需要);

  1. 由于客户端收到了所谓的重复数据分段,因此也不能默默承受不做些什么,所以每收到一个重复数据分段,它就会响应一个 Dup ACK,其中 ACK Num 91925,表明说已经确认收到了 Seq Num 91925 之前的所有数据分段,希望下一次接收 Seq Num 从 91925 开始的数据分段,所以 No.101-106 6 个 TCP 数据分段对应 No.107-112 6 个 TCP Dup ACK,而再往后一样的重复现象,3 个 TCP 数据分段对应 3 个 TCP Dup ACK;
  2. 但为什么服务器端会一直重传报文呢?实际上如果能在服务器端上抓包,就会很明显的发现,在这段异常期间,在服务器端是收不到客户端所发送的 ACK 数据包,既然服务器端正常发送了数据分段,在超时时间内没有收到 ACK 确认,因此就会产生重传。

因此故障的根本原因是客户端的 ACK 无法传输至服务器端,导致服务器端无法正常发送之后的数据,因此反映在客户端应用现象上,就是打不开访问的域名。

一般来说类似的问题可能就这样结束了,因为访问公网域名走的互联网环境,很难有中间网络的权限和排障信息,客户端发了,服务器端没收到,丢在中间网络了,丢在哪,无从得知。但由于现场工程师也同时捕获了本地其他两个节点的数据包文件,光猫出口和互联网出口,因此也就可以继续分析一波。

互联网出口

先看互联网出口数据包文件,客户端 IP 111.1.1.1(互联网设备 SNAT)和服务器端 IP 222.1.1.1,仍是在文件最后出现了一堆异常。

根据数据包所显示的异常现象,结合上述客户端分析,说明如下:

  1. No.74 为最后一次看到的从客户端发送给服务器端的 ACK ,其 Seq Num 为 63335;
  2. 服务器端实际所发送的数据分段,其 Seq Num 已经到了 91925;
  3. No.74 客户端 ACK 正常传输到了服务器端,由于没有包括 SACK 以及 3 个 Dup ACK 的支撑,服务器端一直等到 RTO 超时后,才进行了 No.86 Seq Num 63335 至之后的所有数据分段的超时重传。

该数据包文件的异常现象,说明在本地的互联网出口时就已经没有捕获到客户端发给服务器端的 ACK 数据包,ACK 丢失在内部网络,而不是互联网,因此继续研究下一个捕获节点,光猫出口。

光猫出口

光猫出口数据客户端 IP 10.1.1.1(光猫 SNAT)和服务器端 IP 222.1.1.1,直奔异常处,可以看到数据包现象与在客户端上所捕获的数据包现象基本一致,光猫出口有 ACK,而互联网出口 无 ACK,初步说明 ACK 丢失在光猫至互联网出口中间的网络上。

除了已有的三个数据包文件之外,在没有其他输入信息的情况下,需要继续深入光猫出口数据包文件,找寻下可能的问题原因。

大多数情况下的问题,在数据包上都会或多或少有些迹象。通过观察服务器端发送数据分段的重传现象,会发现是从 Seq Num 63335 开始,说明客户端所响应的 ACK 都没有正常返回至服务器端,因此可以过滤源 IP 为客户端 10.1.1.1 的数据包,如下。

可以看到相关的异常数据包现象,说明如下:

  1. 同样是客户端源 IP 10.1.1.1 发送的 ACK,但从 No.79 开始,ACK Len 长度由之前的 68 变为了 122,而 TCP Len 均为 0;
  2. 最后一个 Len 为 68 的 ACK 是 No.73,它的 ACK Num 即为 63335,所以之后 Len 为 122 的 ACK 都发生了问题,没有正常到达服务器端;
  3. 而从 No.107 开始之后的 ACK 数据包,ACK Num 均为 91925,全部标识为 Dup ACK,说明收到了重复的数据分段,也就是上图中的 No.101 开始的 TCP 虚假重传数据分段。

TCP Len 为 0 的纯 ACK ,为什么整个数据包长度会由 68 变成了 122,通过对比 No.73 和 No.79 两个 ACK 数据包详情发现了问题所在,除了正常 ACK 满足数据帧最小长度 64 字节所填充的 Padding 全 0 数据之外,在 No.79 这个异常 ACK 中又多出现了一段 Trailer 全 0 数据,长度为 54 字节

因此从 No.79 开始所出现的 Len 为 122 的 ACK 异常数据包,也就是被光猫额外填充了 54 字节的全 0 数据,在到达互联网出口设备的这一段路径上,发生了丢弃。

问题总结

将这个现象反馈至现场后,进一步排查,发现在光猫至互联网出口设备之间,还有一个防火墙设备,通过检查和测试,确认了是防火墙设备的包长度检测功能阻断了这些异常 ACK ,至此找到了导致问题发生的根本原因,诡异的光猫,不是嘛 🙄

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913079.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913079.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac mini m4安装node.js@16以下版本方法

设备:mac mini m4 目的:使用nvm 安装 node.js14.x 版本 结果:安装不上 原因:Node.js 14 发布时,Apple Silicon(M1/M2)尚未普及,因此 没有官方预编译的 macOS ARM64 版本 处理方案&am…

系统安全设计方案,软件系统安全设计方案

1.1 总体设计 1.1.1 设计原则 1.2 物理层安全 1.2.1 机房建设安全 1.2.2 电气安全特性 1.2.3 设备安全 1.2.4 介质安全措施 1.3 网络层安全 1.3.1 网络结构安全 1.3.2 划分子网络 1.3.3 异常流量管理 1.3.4 网络安全审计 1.3.5 网络访问控制 1.3.6 完整性检查 1.…

Python入门Day3

Python的基础数据类型 1.Python中提供了六种内置的数据类型,一般用于存储数据: –数值Number –字符串String –列表List –元组Tuple –字典Dictionary –集合Set 2.Python中的数据类型可以做以下几个分类: –有序:可以使用下标…

前端富文本添加录音功能方案

为富文本编辑器添加录音功能可以增强内容创作的多样性。以下是几种实现方案: 方案一:基于Web Audio API原生实现 实现步骤获取用户麦克风权限 navigator.mediaDevices.getUserMedia({ audio: true }).then(stream > { /* 处理音频流 */ }).catch(err …

解锁阿里云Hologres:开启实时数据分析新时代

引言在当今这个数字化浪潮汹涌澎湃的大数据时代,数据就如同企业和组织的 “数字石油”,成为了最具价值的资产之一。随着信息技术的飞速发展,各行业所产生和收集的数据量正以指数级的速度增长,从社交媒体上的用户互动信息&#xff…

python学习打卡day59

DAY 59 经典时序预测模型3 知识点回顾: SARIMA模型的参数和用法:SARIMA(p, d, q)(P, D, Q)m模型结果的检验可视化(昨天说的是摘要表怎么看,今天是对这个内容可视化)多变量数据的理解:内生变量和外部变量多变…

java中agent的作用

一 java中agent1.1 agent-javaagent 是 Java 虚拟机 (JVM) 提供的一个启动参数,用于在 Java 程序 main 方法执行之前,加载一个特殊的 Java 代理程序(Java Agent)。它的核心作用是对运行中的 Java 程序进行字节码层面的动态修改、监…

[C/C++内存安全]_[中级]_[如何避免数组访问越界]

场景 C/C的标准在C26以前还没支持内存安全的访问连续内存的类或特性。在开发分析内存数据或文件数据的程序时,经常需要把一段内存数据复制到另一个堆空间里。 这时目标内存空间由于起始地址的移动,剩余大小的计算错误,经常会导致访问越界错误…

rabbitmq 与 Erlang 的版本对照表 win10 安装方法

win10 64位系统 安装的版本 otp_win64_27.3.3.exe rabbitmq-server-4.1.1.exe rabbitmq 与 Erlang 的版本对照表 Erlang Version Requirements This guide covers Erlang/OTP version requirements https://www.rabbitmq.com/docs/which-erlang Erlang 28 is not currently…

kali安装教程

kali教程 我下载的是kali的集成环境,可以直接进行打开,无需进行安装。 Get Kali | Kali Linux, 官网下载路径 直接按enter键 安装完成 生成一个小皮安装链接 会给你生成一个外网和内网地址, 可以进行浏览 点击我同意这个协议…

微信小程序入门实例_____快速搭建一个快递查询小程序​

🌷🌷之前几篇博文我们一起开发了天气查询、单词速记和待办事项小程序,这次我们来对生活中常用的功能 —— 快递查询来探索相关的小程序。网购已经成为大家生活的一部分,有了自己的快递查询小程序,不用切换多个应用&…

【防火墙基础之传统墙到 UTM 到 NGFW 再到 AI 的变化】

防火墙技术演进与未来趋势:从传统防御到AI驱动的智能安全 防火墙技术历经数十年发展,已从早期的简单包过滤演进为融合AI的智能安全平台。当前,传统爬虫防护技术如频率限制和人机校验已无法应对现代攻击,而全面风控体系通过多维协同…

【仿muduo库实现并发服务器】Poller模块

仿muduo库实现并发服务器 1.Poller模块成员变量创建epoll模型对于一个描述符添加或修改事件监控对于一个描述符移除事件监控启动epoll事件监控,获取所有活跃连接 1.Poller模块 Poller模块主要是对任意的描述符进行IO事件监控。 它是对epoll的封装,可以让…

小程序学习笔记:使用 MobX 实现全局数据共享,实例创建、计算属性与 Actions 方法

在小程序开发过程中,组件间的数据共享是一个常见且关键的问题。今天,我们就来深入探讨一下如何在小程序中实现全局数据共享,借助 MobX 相关的包,让数据管理变得更加高效便捷。 什么是全局数据共享 全局数据共享,也被…

观测云 × AWS SSO:权限治理可观测实践

AWS IAM Identity Center 介绍 AWS IAM Identity Center(原 AWS Single Sign-On)是 AWS 提供的一项云原生身份与访问管理(IAM)服务,旨在集中简化多 AWS 账户、多业务应用的安全访问控制。 观测云 观测云是一款专为 …

springboot整合配置swagger3

一. swagger3介绍 Swagger 3 是基于 OpenAPI 规范 3.0 的 API 文档工具,用于设计、构建和消费 RESTful API。它通过标准化描述 API 的接口、参数、响应等元数据,实现以下核心功能: 自动生成交互式文档API 测试与调试代码生成(客…

RabbitMQ 4.1.1初体验

为什么选择 RabbitMQ?* RabbitMQ 是一款可靠且成熟的消息代理和流处理中间件,可轻松部署在云端、本地数据中心或您的开发机上,目前已被全球数百万用户使用。 优势在哪里 互操作性 RabbitMQ 支持多种开放标准协议,包括 AMQP 1.0 和…

【精华】QPS限流等场景,Redis其他数据结构优劣势对比

下面是一个详细的 Redis 数据结构对比表,比较它们在实现 QPS 限流 / 滑动窗口统计 / 查定比监控等场景中的适用性: ✅ Redis 数据结构对比表(用于接口限流 / QPS 监控) 维度String INCR 固定窗口List 滑动窗口Hash 计数器ZSet 滑…

顶层设计:支持单元化、灰度化的应用架构

一、顶层目标 业务连续性:任何单元故障不影响整体弹性伸缩:根据业务流量横向扩展灵活灰度:任何发布都可逐步平滑上线成本可控:单元化带来的资源冗余最小 二、核心理念 设计目标核心理念单元化垂直拆分,分而治之&…

MacOS Safari 如何打开F12 开发者工具 Developer Tools

背景 If you’re a web develper, the Safari Develop menu provides tools you can use to make sure your website works well with all standards-based web browsers. 解决 If you don’t see the Develop menu in menu bar, Choose Safari > settingsClick Advanced…