当前位置: 首页 > news >正文

Wireshark TS | 网络路径不一致传输丢包问题

问题背景

网络路径不一致,或者说是网络路径来回不一致,再专业点可以说是网络路径不对称,以上种种说法,做网络方向的工程师肯定会更清楚些,用简单的描述就是:

A 与 B 通讯场景,C 和 D 代表中间路径可能存在的 N 个不同设备
A -> B 方向经过了这样的路径,A — C — B
B -> A 方向经过了这样的路径,B — D — A

以上网络场景实际挺常见的,正常通讯没有任何问题。

开篇明义,此案例就是一个上述场景下的丢包问题,原因已明,简单分享下分析过程。

案例取自 SharkFest 2011《Packet Trace Whispering》


问题信息

数据包跟踪文件基本信息如下:

λ capinfos Session-I1-Case2-pktloss.pcap
File name:           Session-I1-Case2-pktloss.pcap
File type:           Wireshark/tcpdump/... - pcap
File encapsulation:  Ethernet
File timestamp precision:  microseconds (6)
Packet size limit:   file hdr: 65535 bytes
Packet size limit:   inferred: 67 bytes
Number of packets:   71
File size:           5883 bytes
Data size:           13 kB
Capture duration:    11.639492 seconds
First packet time:   2011-02-18 04:26:07.508816
Last packet time:    2011-02-18 04:26:19.148308
Data byte rate:      1141 bytes/s
Data bit rate:       9135 bits/s
Average packet size: 187.20 bytes
Average packet rate: 6 packets/s
SHA256:              9c9e5cd8c6c2ef892efcd5d0302b17407b3943bbc02f6cc676d7457ade452e42
RIPEMD160:           de6dde6f5460acb52f399cc491c8cad81c0f5ab3
SHA1:                7e9de2c390e85874cc234a40c33c1f1e2cbc94ae
Strict time order:   True
Number of interfaces in file: 1
Interface #0 info:Encapsulation = Ethernet (1 - ether)Capture length = 65535Time precision = microseconds (6)Time ticks per second = 1000000Number of stat entries = 0Number of packets = 71

跟踪文件在 linux 上通过 tcpdump 所捕获,数据包数量并不多,只有 71 个,长度截断为 67 字节,文件数据大小 13K 字节,捕获时长 11.64 秒,平均速率 9135 bps。

统计会话信息中,可见 TCP 流 1 条,客户端 192.168.1.1 -> 服务器端 10.10.10.10 。

image.png

专家信息如下,可以看到存在一定数量的(疑似)重传和(疑似)虚假重传现象,符合丢包现象。

image.png


问题分析

展开数据包跟踪文件数据包详情如下,

image.png

image.png

可以看出 TCP Stream 0 并没有捕获到 TCP 三次握手阶段的数据包,但通过 TTL 字段值 128 可判断出捕获点在服务器端上或者靠近服务器端的地方,而 RTT 约为 0.1ms ,并且数据传输的规律是一个数据分段一个 ACK 确认不断交互。

通过点选右下黑色位置,可直接快速跳转到问题所在,可见 TCP 重传和疑似重传等问题。

image.png

也可以通过以下显示过滤表达式,快速筛选 TCP 分析中的异常问题,这也是比较常用的技巧。

tcp.analysis.flags

可以看到总共有 10 个匹配数据包,包括来自于服务器端 10.10.10.10 的 TCP 重传,以及来自于客户端 192.168.1.1 的 TCP 虚假重传,为什么会有如此泾渭分明的重传现象呢?

image.png

展开 TCP 详细分析,主要如下:

image.png

  1. 服务器端 10.10.10.10 的 TCP 重传

可以看到包括 No.47-48 以及之前的数据包,均正常交互。但从 No.49 Seq 2904 开始,由于一直未收到 ACK ,在约 300ms 左右发生了超时重传 No.50,之后同样一直未收到 ACK,产生了不断超时重传现象,间隔 300ms、600ms、1.2s 、1.2s、1.2s 和 2.4s。

特殊的地方在于,每一次超时重传的时候有时还会带上新的数据分段,TCP Len 不断变大,但同样没有收到任何确认。

image.png

  1. 客户端 192.168.1.1 的 TCP 虚假重传

不同于最初一个数据分段一个 ACK 确认不断交互的传输规律,经过服务器 10.10.10.10 的连续单方向数据传输无响应后,客户端 192.168.1.1 在 No.58 发送了一个数据分段 Len 11 ,并且可以看到服务器端 10.10.10.10 正常回复了 ACK 确认收到,但是在 200ms 后,客户端 192.168.1.1 仍然产生了超时重传现象,之后的现象依旧,不断重传,间隔 200ms、400ms、800ms 和 1.6s。

为什么是 TCP 虚假重传? 这是因为在数据包跟踪文件中,有数据分段,也有 ACK 确认,所以 Wireshark 基于上下文综合判断,该重传属于 TCP 虚假重传现象。

image.png

image.png

实际上再想到开篇提到的网络路径不一致问题,就可以明白整个过程。

  1. 由于服务器端发送的数据分段无法正常收到 ACK 确认,因此产生了 TCP 超时重传,注意这里丢失的是服务器端发送方向的数据分段;
  2. 而客户端 -> 服务器端传输方向,数据分段可以正常发送且能收到,但服务器端返回的 ACK 数据包同样无法返回至客户端,所以客户端产生了 TCP 超时重传,注意这里丢失的是服务器端发送方向的 ACK;
  3. 因此根本原因出现在服务器端 -> 客户端传输的方向,在某一个时点开始,传输的任何数据包均无法正常到达客户端。

经过长时间的不断跟踪,最后查明问题是在单向路径上的一台交换机引擎软件 BUG 引起。


问题总结

我们可能无法确定根因,但数据包分析可以为我们指明正确的方向。

相关文章:

Wireshark TS | 网络路径不一致传输丢包问题

问题背景 网络路径不一致,或者说是网络路径来回不一致,再专业点可以说是网络路径不对称,以上种种说法,做网络方向的工程师肯定会更清楚些,用简单的描述就是: A 与 B 通讯场景,C 和 D 代表中间…...

CMake高级用法实例分析(学习paddle官方的CMakeLists)

cmake基础学习教程 https://juejin.cn/post/6844903557183832078 官方完整CMakeLists cmake_minimum_required(VERSION 3.0) project(PaddleObjectDetector CXX C)option(WITH_MKL "Compile demo with MKL/OpenBlas support,defaultuseMKL." ON) o…...

数据采集: selenium 自动翻页接口调用时的验证码处理

写在前面 工作中遇到,简单整理理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大…...

IDEA安装翻译插件

IDEA安装翻译插件 File->Settings->Plugins 在Marketplace中,找到Translation,点击Install 更换翻译引擎 勾选自动翻译文档 翻译 鼠标右击->点击Translate...

DBeaver使用

一、导出表结构 二、导出数据CSV 导出数据时DBeaver并没有导出表结构,所以表结构需要额外保存; 导入数据CSV 导入数据时会因外键、字段长度导致失败;...

Nougat:一种用于科学文档OCR的Transformer 模型

随着人工智能领域的不断进步,其子领域,包括自然语言处理,自然语言生成,计算机视觉等,由于其广泛的用例而迅速获得了大量的普及。光学字符识别(OCR)是计算机视觉中一个成熟且被广泛研究的领域。它有许多用途&#xff0c…...

redis八股1

参考Redis连环60问(八股文背诵版) - 知乎 (zhihu.com) 1.是什么 本质上是一个key-val数据库,把整个数据库加载到内存中操作,定期通过异步操作把数据flush到硬盘持久化。因为纯内存操作,所以性能很出色,每秒可以超过10…...

人工智能基础-趋势-架构

在过去的几周里,我花了一些时间来了解生成式人工智能基础设施的前景。在这篇文章中,我的目标是清晰概述关键组成部分、新兴趋势,并重点介绍推动创新的早期行业参与者。我将解释基础模型、计算、框架、计算、编排和矢量数据库、微调、标签、合…...

Date日期工具类(数据库日期区间问题)

文章目录 前言DateUtils日期工具类总结 前言 在我们日常开发过程中,当涉及到处理日期和时间的操作时,字符串与Date日期类往往要经过相互转换,且在SQL语句的动态查询中,往往月份的格式不正确,SQL语句执行的效果是不同的…...

为什么需要 TIME_WAIT 状态

还是用一下上一篇文章画的图 TCP 的 11 个状态,每一个状态都缺一不可,自然 TIME_WAIT 状态被赋予的意义也是相当重要,咱们直接结论先行 上文我们提到 tcp 中,主动关闭的一边会进入 TIME_WAIT 状态, 另外 Tcp 中的有 …...

Linux——(第七章)文件权限管理

目录 一、基本介绍 二、文件/目录的所有者 1.查看文件的所有者 2.修改文件所有者 三、文件/目录的所在组 1.修改文件/目录所在组 2.修改用户所在组 四、权限的基本介绍 五、rwx权限详解 1.rwx作用到文件 2.rwx作用到目录 六、修改权限 一、基本介绍 在Linux中&…...

Scala在大数据领域的崛起:当前趋势和未来前景

文章首发地址 Scala在大数据领域有着广阔的前景和现状。以下是一些关键点: Scala是一种具有强大静态类型系统的多范式编程语言,它结合了面向对象编程和函数式编程的特性。这使得Scala非常适合处理大数据,因为它能够处理并发、高吞吐量和复杂…...

前端面试经典题--页面布局

题目 假设高度已知&#xff0c;请写出三栏布局&#xff0c;其中左、右栏宽度各为300px&#xff0c;中间自适应。 五种解决方式代码 浮动解决方式 绝对定位解决方式 flexbox解决方式 表格布局 网格布局 源代码 <!DOCTYPE html> <html lang"en"> <…...

【webrtc】接收/发送的rtp包、编解码的VCM包、CopyOnWriteBuffer

收到的rtp包RtpPacketReceived 经过RtpDepacketizer 解析后变为ParsedPayloadRtpPacketReceived 分配内存,执行memcpy拷贝:然后把 RtpPacketReceived 给到OnRtpPacket 传递:uint8_t* media_payload = media_packet.AllocatePayload(rtx_payload.size());RTC...

Bash常见快捷键

生活在 Bash Shell 中&#xff0c;熟记以下快捷键&#xff0c;将极大的提高你的命令行操作效率。 编辑命令 Ctrl a &#xff1a;移到命令行首Ctrl e &#xff1a;移到命令行尾Ctrl f &#xff1a;按字符前移&#xff08;右向&#xff09;Ctrl b &#xff1a;按字符后移&a…...

软件验收测试

1. 服务流程 验收测试 2. 服务内容 测试过程中&#xff0c;根据合同要求制定测试方案&#xff0c;验证工程项目是否满足用户需求&#xff0c;软件质量特性是否达到系统的要求。 3. 周期 10-15个工作日 4. 报告用途 可作为进行地方、省级、国家、部委项目的验收&#xff0…...

Java 与零拷贝

零拷贝是由操作系统实现的&#xff0c;使用 Java 中的零拷贝抽象类库在支持零拷贝的操作系统上运行才会实现零拷贝&#xff0c;如果在不支持零拷贝的操作系统上运行&#xff0c;并不会提供零拷贝的功能。 简述内核态和用户态 Linux 的体系结构分为内核态&#xff08;内核空间…...

AI性能指标解析:误触率与错误率

简介&#xff1a;随着人工智能&#xff08;AI&#xff09;技术的不断发展&#xff0c;它越来越多地渗透到我们日常生活的各个方面。从个人助手到自动驾驶&#xff0c;从语音识别到图像识别&#xff0c;AI正不断地改变我们与世界的互动方式。但你有没有想过&#xff0c;如何准确…...

count(*) 和 count(1) 有什么区别?哪个性能最好?

哪种 count 性能最好&#xff1f; count() 是什么&#xff1f; count() 是一个聚合函数&#xff0c;函数的参数不仅可以是字段名&#xff0c;也可以是其他任意表达式&#xff0c;该函数的作用是统计符合查询条件的记录中&#xff0c;函数指定的参数不为 NULL 的记录由多少条。…...

橡胶密封件为什么会老化?

橡胶密封件以其优良的密封性能被广泛应用于各个行业。然而&#xff0c;随着时间的推移&#xff0c;这些橡胶密封件往往会恶化和老化。在这篇文章中&#xff0c;我们将探讨橡胶密封件老化的原因。 1&#xff0c;导致橡胶密封件老化的主要因素之一是暴露在阳光和紫外线(UV)辐射下…...

嵌入式C/C++跨平台可移植性工程实践指南

1. 可移植C/C程序设计工程实践指南在嵌入式系统开发中&#xff0c;可移植性并非附加特性&#xff0c;而是架构设计的底层约束条件。当一个项目需要在ARM Cortex-M系列、RISC-V SoC、x86 Linux工控机甚至裸机环境间迁移时&#xff0c;代码层面的平台耦合度直接决定项目生命周期与…...

python+Django+Vue.js小说推荐系统 小说可视化 小说爬虫 Django框架 大数据毕业设计

1、项目介绍 Django框架、双推荐算法&#xff08;基于用户基于物品&#xff09;、书架、评论收藏、小说阅读、MySQL数据库 、后台管理系统的推荐功能主要通过双推荐算法实现。基于用户的推荐算法根据用户的历史阅读行为和偏好&#xff0c;推荐与其相似的用户喜欢的小说。基于物…...

Qwen2.5-7B-Instruct保姆级教程:模型权重分片加载与显存峰值监控方法

Qwen2.5-7B-Instruct保姆级教程&#xff1a;模型权重分片加载与显存峰值监控方法 1. 引言&#xff1a;当7B大模型遇上有限显存 如果你尝试在个人电脑或显存不那么宽裕的服务器上运行Qwen2.5-7B-Instruct这样的“大家伙”&#xff0c;大概率会遇到一个令人头疼的报错&#xff…...

Vue项目Moment.js引入优化:全局挂载与按需引入的深度解析与最佳实践

在Vue开发中&#xff0c;如何正确引入Moment.js是优化项目性能的关键。本文将详细对比全局挂载和局部按需引入的优劣&#xff0c;探讨Tree Shaking机制在局部引入中的作用。我们推荐优先采用局部按需引入以减少打包体积&#xff0c;并提供通过插件形式优化全局挂载的方案&#…...

OpenClaw批量操作:Qwen3-32B处理千张图片的分类与重命名实战

OpenClaw批量操作&#xff1a;Qwen3-32B处理千张图片的分类与重命名实战 1. 为什么需要自动化图片管理&#xff1f; 作为一名业余摄影师&#xff0c;我每个月都会积累上千张RAW格式照片。过去我的工作流程是这样的&#xff1a;先手动筛选废片&#xff0c;再按"日期主题&…...

如何快速搭建你的在线私人音乐厅:NeteaseCloudWebApp完整指南 [特殊字符]

如何快速搭建你的在线私人音乐厅&#xff1a;NeteaseCloudWebApp完整指南 &#x1f3b5; 【免费下载链接】NeteaseCloudWebApp This is a vue for NeteaseCloud projects! 项目地址: https://gitcode.com/gh_mirrors/ne/NeteaseCloudWebApp 想要拥有一个属于自己的在线音…...

2023年最新OWASP Top 10漏洞解析:这些安全陷阱你踩过吗?

2023年OWASP Top 10漏洞深度防御指南&#xff1a;从原理到实战 在数字化转型加速的今天&#xff0c;Web应用安全已成为企业防护体系中最薄弱的环节之一。根据Verizon《2023年数据泄露调查报告》&#xff0c;Web应用漏洞导致的入侵事件占比高达26%&#xff0c;平均修复周期长达2…...

#AI原生安全,软件供应链安全策略与选型,开发者的最佳选择

随着数字化转型进入深水区&#xff0c;容器、中间件、微服务、DevOps等新技术的演进&#xff0c;数字供应链愈发复杂&#xff0c;全链路安全防护难度不断加大。悬镜安全子芽带领公司安全团队攻坚克难近十年&#xff0c;在业界定义了代码疫苗技术&#xff0c;完成代码疫苗技术在…...

VT System连接全攻略:从单机箱到多机箱组网(含VT6000配置避坑指南)

VT System连接全攻略&#xff1a;从单机箱到多机箱组网&#xff08;含VT6000配置避坑指南&#xff09; 在汽车电子测试领域&#xff0c;VT System作为行业标杆级硬件在环&#xff08;HIL&#xff09;测试平台&#xff0c;其稳定可靠的连接配置是确保测试效率的基础。许多工程师…...

vLLM实战:5分钟搞定GLM-4-9B模型的高效推理部署(附避坑指南)

vLLM极速部署GLM-4-9B全流程&#xff1a;从环境配置到生产级优化 当64GB显存的A100服务器上跑起GLM-4-9B模型时&#xff0c;生成速度从3 tokens/s飙升到78 tokens/s——这正是vLLM带来的性能革命。作为当前最高效的开源推理引擎&#xff0c;vLLM通过其独创的PagedAttention技术…...