当前位置: 首页 > 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)辐射下…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”

案例&#xff1a; 某医药分销企业&#xff0c;主要经营各类药品的批发与零售。由于药品的特殊性&#xff0c;效期管理至关重要&#xff0c;但该企业一直面临效期问题的困扰。在未使用WMS系统之前&#xff0c;其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...

前端调试HTTP状态码

1xx&#xff08;信息类状态码&#xff09; 这类状态码表示临时响应&#xff0c;需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分&#xff0c;客户端应继续发送剩余部分。 2xx&#xff08;成功类状态码&#xff09; 表示请求已成功被服务器接收、理解并处…...