数据包分析思路方法分享

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 面对越来越复杂的网络环境,每天发生着数以万亿的数据交互,一旦出现问题我们就需要快速去定位解决,那么我们就必须储备丰富的知识,利用手头各种工具帮助我们来分析问题。但有时应用日志、网管平台等看起来一切都没有异常,分析变得一筹莫展,这是就需要使用数据包分析技术,来深入探索每一个 TCP 连接及上层应用,最终来定位问题。

面对越来越复杂的网络环境,每天发生着数以万亿的数据交互,一旦出现问题我们就需要快速去定位解决,那么我们就必须储备丰富的知识,利用手头各种工具帮助我们来分析问题。


但有时应用日志、网管平台等看起来一切都没有异常,分析变得一筹莫展,这是就需要使用数据包分析技术,来深入探索每一个 TCP 连接及上层应用,最终来定位问题。


数据包分析的切入点很大程度上取决于具体的问题现象,也就是说并没有一个绝对固定不变的流程。那么如何去做好数据分析,分享下我的一些心得供大家来进行参考。


1、明确故障现象

针对我们要分析的问题首先需要有个全面的了解,了解的也详细对我们分析根因越有帮忙。这里就像我们写记叙文一样要掌握这个故障问题的时间地点人物事件四要素。

  • 时间:问题发生的准确时间点是第一要素,数据流交互过程以毫米、微秒、纳秒计算,需要在海量数据中提取数据需要明确的时间范围。
  • 地点:在网络拓扑上,问题发生在哪里,涉及哪些设备和路径。
  • 事件: 故障现象的真实描述,还原现场,真实的现场还原描述是分析问题的基础,任何一个细节都有可能是突破口。
  • 人物:受到影响的用户是谁?或者波及的范围有多大?问题波及的用户面可以快速帮助我们判断问题发生的层次、位置。


2、获取有效数据

是否能够获取有效的数据,对我们分析起到至关重要的影响。有效的数据往往就是事半功倍。我们在实际环境中,主要通过以下四个步骤。

  1. 逻辑拓扑:了解应用逻辑和数据路径,以及物理拓扑
  • 对于多层架构的应用,发生问题不再是请求/响应这样单一的过程。
  • 了解业务逻辑拓扑是为了获取有效数据包、制定下一步的分析策略。
  1. 关键节点:把握数据路径上的关键环节
  • 网络层:防火墙、应用交付类设施,这些设施可以改变、控制业务数据流,即有可能影响到业务交互。
  • 应用层:按照逻辑架构(Web、App、DB...),结合问题现象,列出关键节点。
  • 客户端:影响到终端的问题,在客户端进行模拟测试可以获得真实现象信息。


在这里可能会涉及到流量镜像位置的选择,一般会基于以下的策略:

1)根据故障或者异常现象,首先确认用户到应用服务器的数据访问路径。

2)从靠近应用服务器的一端开始,定位问题发生的层面(应用服务自身层面的原因?还是网络传输层面的原因?)。

3)在网络层面,重点关注防火墙、负载均衡类设备(当有负载均衡类设备或者负载均衡链路时,要注意可能需要同时捕获多个端口的流量才能获得完整的TCP 会话数据)。

4)在数据路径上多点同时捕获数据,进行对比分析。

5)根据故障或者异常现象发生的范围特征,灵活选取数据捕获的关键点。


  1. 捕获数据:完整、少重复、时间同步
  • 确保完整性,不丢包,不乱序。
  • SPAN策略
  • 活动端口,全单向,封闭(Port Channel 除外)
  • 负载均衡汇聚
  • 高负载两个Session 分摊
  • 级联端口Both镜像
  • 广域网出口,IN/OUT分开
  • 避免数据繁冗,尽量少的重复。
  • 在多点捕获情况下确保时间同步。


  1. 过滤数据:排除干扰,在海量数据中找到最能反映问题的数据
  • 疑难杂症往往最终是通过极少数的数据分析诊断出来的,能够快速过滤出目标数据可以大大提高故障诊断效率。
  • 定义过滤器常用的条件包括:时间、IP地址、协议、端口号、Vlan、QoS、特征值等等,以及用以上条件组合而成的复合条件。
  • 过滤器可以在捕获前设置,只捕获相关的目标数据;也可以在捕获之后设置 ,从捕获到到全部数据中提取出目标数据。
  • 现有的流量分析工具通常使用逻辑表达式的方式进行过滤器定义,有些具有图形化的定义界面。


3、深入分析数据

虽然问题现象千差万别,但总体上我们可以用排除法判断在哪些层次没有发生问题,快速把分析的重点找到,大概可以划分为如下三层:

  • 网络层
  • 指标是相对通用化的。
  • 多点对比分析常常用于网络设备层设备故障排查。
  • 传输层

通常我们利用通用的 TCP /UDP模型,分析其通信过程和具体行为。

  • TCP:1)反应系统层问题——扩大因子、Nagle、Delayed Ack等。

 2)反映应用层问题——窗口、响应时间、状态机变迁等。

  • UDP:主要涉及应用层分析。
  • 应用层
  • 应用层指标则是专用的,应对于各种业务应用。
  • 可以识别的,包括应用层代码、响应时间、连接分析等。
  • 正常/异常时的对比是分析行为的有效方法。


4、重在千锤百炼

分析数据包是一项耗时耗力的精细活,不是一朝一夕可以全部掌握,重点在积累,分析的多了无师也能自通。那么如何获取经验,然后成为他人口中的高手,总结几点如下:

  • 经验获得
  • 在现场做故障诊断,往往受到很多外界因素影响。
  • 每个案例分析过后再回顾,一定可以发现并归纳出一些技术、技巧以及思路上的优化方法。
  • 行业化的应用模式具有通用性,特别是金融行业,应用通信模式有很多相似性。
  • 只有类似的案例,没有一模一样的案例,在回顾和思考中深入理解知识点和其应用模式。
  • 经验可贵,但不是全部,走投无路的时候要放弃经验。
  • 成为高手
  • 熟悉TCP/IP理论
  • 熟练分析工具的使用方法,事半功倍
  • 精通网络架构和业务架构
  • 了解操作系统的TCP配置及影响
  • 形成分析问题的思路
  • 多看案例分析
  • 多动手多分析多总结
  • 书籍推荐
  • 经典之作
  • TCP/IP详解卷一
  • 图解TCP/IP
  • 程序是怎么跑起来的
  • 计算机是怎么跑起来的
  • 网络是怎么连接的
  • HTTP权威指南
  • Wireshark
  • Wireshark网络分析就这么简单
  • Wireshark网络分析的艺术
  • Wireshark数据包分析实战 第3版


如果在实际工作中遇到网络故障问题,或者你怀疑是网络引起的问题,那么也是很好的机会。可以参考下以上内容进行抓包分析。关于如何分析数据包的分享就到这里了,希望可以给你带来一点点帮助。附注上整理的思维导图。

数据包分析思路1 (1).png

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
4月前
|
算法
Baum-Welch算法的目的
Baum-Welch算法的目的
|
5月前
|
存储 算法 NoSQL
数据结构和算法——哈希查找冲突处理方法(开放地址法-线性探测、平方探测、双散列探测、再散列,分离链接法)
数据结构和算法——哈希查找冲突处理方法(开放地址法-线性探测、平方探测、双散列探测、再散列,分离链接法)
128 1
|
5月前
|
存储 网络协议 网络安全
逆向学习网络篇:数据传输和交换过程
逆向学习网络篇:数据传输和交换过程
47 0
|
6月前
|
分布式计算 JavaScript 前端开发
给大家讲讲过滤查询的思路(一点就通)
给大家讲讲过滤查询的思路(一点就通)
56 1
|
算法 Java API
逆向的流程和思路
逆向的流程和思路
|
JSON 分布式计算 数据处理
IP 转换_思路梳理 | 学习笔记
快速学习 IP 转换_思路梳理
107 0
IP 转换_思路梳理 | 学习笔记
|
数据采集 消息中间件 分布式计算
爬虫识别-IP 段统计-需求及思路|学习笔记
快速学习爬虫识别-IP 段统计-需求及思路。
129 0
爬虫识别-IP 段统计-需求及思路|学习笔记
|
算法 测试技术
【算法作业】实验三:划分集合-贪心 & 可能的IP地址-回溯
【算法作业】实验三:划分集合-贪心 & 可能的IP地址-回溯
156 0
【算法作业】实验三:划分集合-贪心 & 可能的IP地址-回溯
|
安全 网络协议 数据安全/隐私保护
域前置通信过程和溯源思路
域前置通信过程和溯源思路
1090 0
域前置通信过程和溯源思路
|
网络协议 测试技术 Go
服务端转发消息思路分析|学习笔记
快速学习服务端转发消息思路分析
下一篇
无影云桌面