Wireshark 提示和技巧 | Time 时间分析那些事

前言

众所周知,Wireshark 中有很多关于 Time 的字段,譬如 Frame 中的 frame.time、frame.time_delta、frame.time_delta_displayed ,TCP 中的 tcp.time_delta、tcp.time_relative ,HTTP 中的 http.time,DNS 中的 dns.time ,以及包括 TCP IRTT、TCP RTT 等等,以上种种字段在众多网络数据包分析场景下都能起到很好的辅助作用。

本文简要概括下这些不同的 Time 字段功能和使用场景。

Frame

frame.time

frame.time 字段(Absolute time when this frame was captured)表示捕获该数据包的时间戳。它显示了数据包在网络中被抓取到的精确时间,包括日期、小时、分钟、秒、毫秒、微秒甚至纳秒数(依赖于捕获文件实际可用的时间戳精度)。

frame.time 字段很重要,因为它可以告诉我们数据包捕获的确切时间,帮助进行网络故障排除和分析,特别是当需要比较数据包之间的时间间隔时,frame.time 非常有用。

image.png

Packet List 中的 Time 格式,可在 View - Time Display Format 中更改,包括各类时间格式和时间精度。

frame.time_delta

frame.time_delta 字段(Time delta from previous captured frame)表示该数据包相对于前一个数据包捕获时间的差值。换句话说,它表示该数据包及前一个数据包之间的时间间隔。

frame.time_delta 字段对于分析网络通信中的延迟、丢包以及数据包到达顺序等方面非常有用。如果在某个时间段内出现了大量的数据包延迟或者出现丢包,那么这意味着网络可能存在阻塞或者其他故障。

image.png

frame.time_delta_displayed

frame.time_delta_displayed 字段(Time delta from previous displayed frame)与 frame.time_delta 字段的含义类似,也是表示当前数据包和前一个数据包之间的时间间隔。但两者有一个重要区别:frame.time_delta_displayed 字段只计算显示到界面的每个数据包之间的时间间隔,也就是说,如果 Wireshark 应用了显示过滤而没有显示某些数据包,那么这些数据包相对于前后数据包的时间差值将不会计算在内。

image.png

因为在网络数据包分析中,更多的情况会应用各种显示过滤,所以 frame.time_delta_displayed 字段相对于 frame.time_delta 字段会更有用,可以提供更准确的时间间隔。

在之前的文章 《frame.time_delta 和 frame.time_delta_displayed》中也有相关介绍,感兴趣的可以再看看。

frame.time_relative

frame.time_relative 字段(Time relative to time reference or first frame)是指当前数据包的捕获时间和首个数据包的捕获时间的时间差。

frame.time_relative 可以在时间轴上用来更好地理解数据包的相对时间,可以快速判断在不同数据包之间的时间间隔。

image.png

该字段通常配合 Time Reference 功能一起使用,通过 Time Reference 功能可设置任意数据包作为参考时间值。譬如想知道 TCP 四次挥手的第三次 FIN 与第一次 FIN 之间的时间间隔,就可以将 Frame 6 设置成参考,也就是对后面的数据包来说,Frame 6 即为第一个数据帧,那么 Frame 8 中的 frame.time_relative 字段值即为 Frame 8 与 Frame 6 的时间间隔。

image.png

Time Reference,可设置多个数据帧作为不同的参考,也可随时取消设置。

TCP

tcp.time_delta

tcp.time_delta 字段(Time delta from previous frame in this TCP stream)表示当前 TCP 数据包和同一条 TCP 流中前一个 TCP 数据包之间的时间差。如字面意思,这个字段只能在 TCP 协议中使用,并且只记录同一条 TCP 流的数据包,即源和目的 IP 、端口相同,协议为 TCP 的数据包。

image.png

tcp.time_delta 可以用来检测 TCP 连接延迟、流量控制、拥塞控制情况等。例如,如果某些数据包之间的时间差值非常大,那么可能表明数据传输过程中存在阻塞或者其他性能问题,如下显示过滤大于等于 180ms 间隔的 TCP 数据包。

tcp.time_delta >= 0.180

tcp.time_relative

tcp.time_relative 字段(Time relative to first frame in this TCP stream)表示当前 TCP 数据包相对于同一条 TCP 流中第一个 TCP 数据包之间的时间差。如字面意思,这个字段也只能在 TCP 协议中使用,并且只记录同一条 TCP 流的数据包,即源和目的 IP 、端口相同,协议为 TCP 的数据包。

image.png

同样,该字段通常配合 Time Reference 功能一起使用,通过 Time Reference 功能设置任意数据包作为参考时间值后, tcp.time_relative 字段可以快速判断在同一个 TCP 连接上中不同 TCP 数据包之间的时间间隔。

需要注意的是,数据包文件中的一条 TCP 流中的第一个数据包并不一定是 TCP 三次握手中的第一个 SYN 数据包。例如,如果在开始捕获数据包时就没有捕获到这条 TCP 流的连接建立阶段,那么自然这条 TCP 流中的第一个数据包就不会是 SYN 数据包。

tcp.analysis.initial_rtt

tcp.analysis.initial_rtt 字段(How long it took for the SYN to ACK handshake)是指 TCP 三次握手建立的时间间隔,是用来测量 TCP 连接的延迟时间的一个指标。IRTT 表示“初始往返时间”(Initial Round Trip Time),在 TCP 连接刚开始建立的时候,计算 IRTT 就非常重要了,可以作为该条 TCP 流判断后续 TCP 数据包交互 RTT 时间、TCP 传输延迟等情况的一个参考基准。

image.png

当然如果 IRTT 值就始终太高,很有可能是由于网络延迟、拥塞或是系统性能问题所造成,通常就要直接进行故障处理,以查明延迟时间过长的原因并进行改善,如下显示过滤 IRTT 大于等于 100ms 间隔的 TCP 数据包。

tcp.analysis.initial_rtt >= 0.100

区别于通常常说的 RTT 一发一收两个数据包之间的时间间隔,IRTT 是 TCP 建连阶段三个数据包之间的时间间隔。

tcp.analysis.ack_rtt

tcp.analysis.ack_rtt 字段(How long time it took to ACK the segment)是指 TCP 数据包分段和该 TCP 数据包分段的 ACK 确认之间的时间间隔,是用来测量 TCP 连接的延迟时间的一个指标。

image.png

tcp.analysis.ack_rtt 可以用来检测 TCP 连接延迟情况,如果 RTT 值过大,那么可能表明数据传输过程中存在网络阻塞或者其他系统性能问题,如下显示过滤大于等于 100ms 确认间隔的 TCP 数据包。

tcp.analysis.ack_rtt >= 0.100

在不同的捕获点,同一个数据包分段和 ACK 确认的 RTT 值并不一样,譬如捕获点分别在数据包发送方和接收方的区别。

HTTP

http.time

http.time 是 HTTP 协议中的时间字段(Time since the request was sent),表示 HTTP 请求到响应的时间间隔。更具体地说,它是 HTTP 请求的时间戳,到 HTTP响应的时间戳之间的时间差。

image.png

需要注意的是,默认情况下的 Wireshark 对于 HTTP 请求和响应的解析有着不一样的定义,在上图 HTTP 响应(譬如 200 OK),是在包括响应数据全部传输完后的最后一个数据包中定义,这样 http.time 值会相对偏大。而我们日常理解的 HTTP ,响应一般是紧跟请求之后出现的,这样就需要更改 Wireshark 中 TCP 设置,将 Allow subdissector to reassemble TCP streams 选项去除勾选,这样真正的 http.time 就会如下图所示,更容易理解,而值会相对偏小。

image.png

http.time 反映了 HTTP 请求和响应的相对时间以及它们之间的延迟,因此可以找出慢速请求或慢速响应的原因,如下显示过滤大于等于 100ms 间隔的 HTTP 数据包。

http.time >= 0.100

在不同的捕获点,同一个 HTTP 请求和响应的时间间隔值并不一样,譬如捕获点分别在 HTTP 请求方和 HTTP 响应方的区别。

DNS

dns.time

dns.time 是DNS 协议数据包中的时间字段(The time between the Query and the Response),表示 DNS 查询请求到响应的时间间隔。具体而言,它是 DNS 查询请求的时间戳,到 DNS 响应的时间戳之间的时间差。

image.png

使用 dns.time 可以很方便地分析 DNS 查询和响应的时间延迟,以优化网络性能。如果 dns.time 显示的时间较长,说明 DNS 查询响应的延迟很大。这可能是 DNS 服务器故障、网络不稳定、DNS 缓存问题等,如下显示过滤大于等于 100ms 间隔的 DNS 数据包。

dns.time >= 0.100

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux操作系统】探秘Linux奥秘:Linux开发工具的解密与实战

🌈个人主页:Sarapines Programmer🔥 系列专栏:《操作系统实验室》🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS &…

东信免驱系列身份证阅读器串口通讯协议解析示例,适用于单片机、ARM等系统开发集成使用

完整的一次读卡流程包括: 身份证寻卡 > 身份证选卡 > 身份证读卡,三个步骤 缺一不可(见通讯协议)。 寻卡:EA EB EC ED 04 00 B0 B4 BB 返回:EA EB EC ED 05 00 00 B0 B5 BB 选卡:EA …

抖音引流跳转到微信加好友?免费教你创建一个链接!

在抖音想要跳转到微信,现在常规的做法就是通过微信小程序的Url Scheme跳转到微信并打开小程序指定的页面,这个已经有非常成熟的方案。 为了降低大家的门槛,可以使用开源的【引流宝】快速创建一个链接,这个链接生成的二维码&#…

fmincon函数的决策变量可以是二维矩阵,但不建议是高维矩阵

1)二维矩阵代码 clear all clc% 定义目标函数 fun (x) sum(sum(x.^2));% 初始矩阵 x0 2 rand(2, 2);% 定义空的线性不等式约束 A []; b [];% 定义空的线性等式约束 Aeq []; beq [];% 定义变量的上下界 lb ones(2,2); ub [];% 使用 fmincon 求解 options …

yolov5旋转目标检测-遥感图像检测-无人机旋转目标检测-附代码和原理

综述 为了解决旋转目标检测问题,研究者们提出了多种方法和算法。以下是一些常见的旋转目标检测方法: 基于滑动窗口的方法:在图像上以不同的尺度和角度滑动窗口,通过分类器判断窗口中是否存在目标。这种方法简单直观,…

谷达冠楠:抖音小店到底要多久可以做起来

随着移动互联网的发展,短视频平台已经成为了人们日常生活中不可或缺的一部分。抖音作为国内最具影响力的短视频平台之一,吸引了大量的用户和商家。近年来,抖音小店逐渐成为了一种新型的电商模式,让许多创业者和商家看到了新的商机…

【华为机试】2023年真题B卷(python)-计算疫情扩散时间

一、题目 题目描述: 请根据给定的地图计算,多少天以后,全部区域都会被感染。 如果初始地图上所有区域全部都被感染,或者没有被感染区域,返回-1 二、输入输出 输入描述: 一行N*N个数字(只包含0,1&#xff0c…

一文看懂Prometheus告警原理及过程

目录 1. 自定义告警规则 2. 告警规则编写 3. prometheus配置 4. 告警过程 5. 告警解除 5.1 对startsAt和endsAt的处理 5.2 Prometheus告警解除后持续多久重复推送告警解除通知?? 1. 自定义告警规则 基于规则告警是指利用已经采集的监控数据&…

【小沐学NLP】Python实现K-Means聚类算法(nltk、sklearn)

文章目录 1、简介1.1 机器学习1.2 K 均值聚类1.2.1 聚类定义1.2.2 K-Means定义1.2.3 K-Means优缺点1.2.4 K-Means算法步骤 2、测试2.1 K-Means(Python)2.2 K-Means(Sklearn)2.2.1 例子1:数组分类2.2.2 例子2&#xff1…

考研用什么光源比较好?五款好用台灯推荐

人眼对光是非常敏感的,特别是儿童青少年眼睛还在发育的状态来说,光线是至关重要的,于是这次测评就不能马虎,必须要本着专业严谨的态度进行测评,这次测评呢就花了不少钱买下了现在市面上热度很高、或是较有名气的专业款…

我的CSDN 512天创作者纪念日总结:高效、高现

文章目录 512天创作者纪念日:2023年的12月31日CSDN的512天消息提醒第一篇文章,最后一篇文章总计847篇文章,每月发文分布512天,各专栏文章统计512天,互动总成绩 512天创作者纪念日:2023年的12月31日 2023年…

一、医学影像云平台(AI赋能基层的最佳实践)

医学影像云平台,是一个目前影像业务中,各省市级领导比较重视的业务板块。因为,影像平台不但可以直接给原来没有PACS系统的1,2级医院提供PACS服务,还可以提供院间之间的业务,例如发送远程诊断,远程会诊业务&…

【Vue2+3入门到实战】(9)Vue基础之组件的三大组成部分(结构/样式/逻辑) 详细示例

目录 一、学习目标1.组件的三大组成部分(结构/样式/逻辑) 二、scoped解决样式冲突**1.默认情况**:2.代码演示3.scoped原理4.总结 三、data必须是一个函数1、data为什么要写成函数2.代码演示3.总结 一、学习目标 1.组件的三大组成部分&#x…

KBDPL.DLL文件丢失,软件游戏无法启动,修复方法

不少小伙伴,求助说遇到Windows弹窗提示“KBDPL.DLL文件丢失,应用无法启动的问题”,不知道应该怎么修复? 首先,先来了解“KBDPL.DLL文件”是什么? kbdpl.dll是Windows操作系统的一部分,是一个动…

Windows安装MySQL及网络配置

目录 安装MySQL 解压配置my.ini文件 注册mysql服务 初始化 启动MySQL 登入MySQL 修改默认密码 更改自身用户访问权限 安装MySQL 8.0 向日葵的简介 简介 向日葵的作用 优点与缺点 优点 缺点 思维导图 安装MySQL 解压配置my.ini文件 注册mysql服务 命令&#xff1…

WebGL开发模拟器和培训应用

WebGL可以用于开发模拟器和培训应用,提供实时、交互式的图形渲染和模拟环境。以下是在WebGL中开发模拟器和培训应用时的一些建议和常见场景,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。…

《动手学深度学习》学习笔记 第5章 深度学习计算

本系列为《动手学深度学习》学习笔记 书籍链接:动手学深度学习 笔记是从第四章开始,前面三章为基础知道,有需要的可以自己去看看 关于本系列笔记: 书里为了让读者更好的理解,有大篇幅的描述性的文字,内容很…

vue3项目创建

安装node.js vue --version (4.5.0以上) npm install -g vue/cli vue create 项目名称 npm run dev 启动 npm run build 打包 ———————— vite 创建工程 npm create vuelatest npm i npm run dev 启动 npm run build 打包 项目结构…

2024史上最全的 iOS 各种测试工具集锦!

引言: 随着移动互联网的兴起,APP 测试的越来越被重视!Android 系统因为自己的开源性,测试工具和测试方法比较广为流传,但是 iOS 系统的私密性,导致很多测试的执行都有点麻烦。 为了帮助大家更好的执行 iO…

炫酷鼠标悬停随机渐变文本动画效果

如图所示,这是一个很炫酷的鼠标悬停动画效果,卡片的文字随着鼠标的移动不断变化着,且文字的颜色伴随着渐变色跟随鼠标移动,中心部分是突出的LOGO效果,整个交互效果十分引人注目。原效果来源于 evervault.com/customers…