Wireshark关于Time相关详解分析实例

WiresharkWireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
在过去,网络封包分析软件是非常昂贵的,或是专门属于盈利用的软件。Ethereal的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的途径取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Ethereal是全世界最广泛的网络封包分析软件之一

Wireshark官网下载的地址:https://www.wireshark.org

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 等等,以上种种字段在众多网络数据包分析场景下都能起到很好的辅助作用

一,Frame.time

  • frame.time 字段(Absolute time when this frame was captured)表示捕获该数据包的时间戳。它显示了数据包在网络中被抓取到的精确时间,包括日期、小时、分钟、秒、毫秒、微秒甚至纳秒数(依赖于捕获文件实际可用的时间戳精度)frame.time 字段很重要,因为它可以告诉我们数据包捕获的确切时间,帮助进行网络故障排除和分析,特别是当需要比较数据包之间的时间间隔时,frame.time 非常有用
Wireshark关于Time相关详解分析实例

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

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

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

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

下面我们通过筛选数据包,去掉Frame2,也就是TCP3次握手的第二次握手包,看下Time值,如下图:

Wireshark关于Time相关详解分析实例

通过frame.number !=2过滤掉Frame2帧,frame.time_delta_displayed 字段相对于 frame.time_delta就会不同了,在网络数据包分析中,更多的情况会应用各种显示过滤,所以 frame.time_delta_displayed 字段相对于 frame.time_delta 字段会更有用,可以提供更准确的时间间隔。

  • frame.time_relative 字段(Time relative to time reference or first frame)是指当前数据包的捕获时间和首个数据包的捕获时间的时间差。frame.time_relative 可以在时间轴上用来更好地理解数据包的相对时间,可以快速判断在不同数据包之间的时间间隔。
Wireshark关于Time相关详解分析实例

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

Wireshark关于Time相关详解分析实例
Wireshark关于Time相关详解分析实例

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

二,TCP相关

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

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

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

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

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

  • 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 传输延迟等情况的一个参考基准。

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

tcp.analysis.ack_rtt >= 0.100

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

三,HTTP相关

  • http.time 是 HTTP 协议中的时间字段(Time since the request was sent),表示 HTTP 请求到响应的时间间隔。更具体地说,它是 HTTP 请求的时间戳,到 HTTP响应的时间戳之间的时间差。
Wireshark关于Time相关详解分析实例

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

Wireshark关于Time相关详解分析实例

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

http.time >= 0.100

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

四,DNS相关

  • dns.time 是DNS 协议数据包中的时间字段(The time between the Query and the Response),表示 DNS 查询请求到响应的时间间隔。具体而言,它是 DNS 查询请求的时间戳,到 DNS 响应的时间戳之间的时间差
Wireshark关于Time相关详解分析实例
Wireshark关于Time相关详解分析实例

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

dns.time >= 0.100

WireShark抓包深度分析IP协议包:https://www.hao0564.com/4456.html

惠普电脑U盘启动引导设置:https://www.hao0564.com/4714.html

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注