Wireshark TS | Packet Challenge 之 HTTP 案例分析

前言

来自于 Sharkfest Packet Challenge 中的一个数据包案例,Sharkfest 是 Wireshark 官方组织的一年一度的大会,致力于在 Wireshark 开发人员和用户社区之间分享知识、经验和最佳实践。印象中早期是一年一次,近几年发展成一年两次,一次貌似固定在美国,一次会在其他地区,像是欧洲或亚洲。Packet Challenge 是大会其中一个比较有意思的活动环节,通过一系列数据包案例设置关卡,参会人员进行分析挑战,测试综合分析能力。


题目信息

本次案例为 Sharkfest 2015 Packet Challenge 中的第二个题目 GO GO SPEED RACER,数据包跟踪文件为 http‐gogo.pcapng

主要描述如下:

  1. What is the HTTP response time for the GET / request in packet 4?
  2. How many packets have the SYN bit set on in this trace file?
  3. What is the name of the largest HTTP object downloaded to this client?
  4. How long did it take to download the browser tab icon, favicon.ico (include TCP connection setup/teardown)?
  5. Frame 131 is a spurious retransmission. Which previous frame caused this to be marked “spurious”?

数据包信息

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

λ capinfos http-gogo.pcapng
File name:           http-gogo.pcapng
File type:           Wireshark/... - pcapng
File encapsulation:  Ethernet
File timestamp precision:  microseconds (6)
Packet size limit:   file hdr: (not set)
Number of packets:   904
File size:           670 kB
Data size:           639 kB
Capture duration:    25.295004 seconds
First packet time:   2013-05-17 04:34:45.147106
Last packet time:    2013-05-17 04:35:10.442110
Data byte rate:      25 kBps
Data bit rate:       202 kbps
Average packet size: 707.62 bytes
Average packet rate: 35 packets/s
SHA256:              d7206ad61a744fe27a62fc4ee1798f5a925e946dbd18fcf23e53790da23e384d
RIPEMD160:           4a3c95a711886b96fcbdac63c5abbc917ced054e
SHA1:                5888fedc0be380ec14be6e2b79eb1bda889edc35
Strict time order:   True
Capture oper-sys:    64-bit Windows 7 Service Pack 1, build 7601
Capture application: Dumpcap 1.10.0pre1-49307 (SVN Rev 49307 from /trunk-1.10)
Number of interfaces in file: 1
Interface #0 info:
                     Name = \Device\NPF_{6E79FEC0-FF79-4970-96E4-EEFF300A9B9F}
                     Encapsulation = Ethernet (1 - ether)
                     Capture length = 65535
                     Time precision = microseconds (6)
                     Time ticks per second = 1000000
                     Time resolution = 0x06
                     Operating system = 64-bit Windows 7 Service Pack 1, build 7601
                     Number of stat entries = 1
                     Number of packets = 904

λ

Winows 7 系统上直接通过 Wireshark 捕获,无截断,捕获数据包数量 904 个,捕获持续时间为 25.3 秒,平均速率 202 kbps,其中 IPv4 和 TCP 会话信息较多。

HTTP-01

专家信息显示如下,其中告警级别中存在 TCP 零窗口、乱序、分段未捕获到等问题,相对数量不是那么多,需要实际进入数据包分析。

HTTP-02

数据包分析

因题目和问题和 HTTP 相关,简单筛选辨别下数据包信息,通过 tcp.port 过滤出 HTTP 或 HTTPS 相关的数据包数量为 904 ,和此数据包跟踪文件数据包总量一样,另 TCP 流数量经排序去重统计后得知为 51

λ tshark -r http-gogo.pcapng -Y "tcp.port in {80,443}" | wc -l
904

λ tshark -r http-gogo.pcapng -Y "tcp.port in {80,443}" -T fields -e tcp.stream | sort -n | uniq | wc -l
51

考虑到所涉及数据包信息较多,故直接进入各题目实际分析。


1. What is the HTTP response time for the GET / request in packet 4?

数据包 4 中的 GET / request 的 HTTP 响应时间是多少?


分析步骤

No.4 数据包为一个 HTTP GET / request ,在 Packet Details视图中可以看到 Wireshark 提示 [Response in frame:7] ,说明 HTTP Response 数据包在 No.7,同时在 [Packet List] 视图中最左竖边也有两个横向的小箭头标识,一个指向 No.4,另一个指向 No.7 ,同样说明是一对 HTTP 的请求和响应数据包。

HTTP-03

因为要分析的是 HTTP 响应时间的值,所以转向 No.7 数据包细节中,可以看到 [Time since request: 0.204365000 seconds] ,这个就是 Wireshark 根据上下文所关联 HTTP Request 数据包时间所得出的时间间隔。

HTTP-04

分析答案

数据包 4 中的 GET / request 的 HTTP 响应时间是:0.204365000 秒。


2. How many packets have the SYN bit set on in this trace file?

数据包跟踪文件中有多少个数据包包含 SYN 标志位设置。


分析步骤

这个题目比较简单,通过 TCP Flags 过滤即可,但在此想说一点的是在 Wireshark 显示过滤中,tcp.flags.syntcp.flags.syn == 1 这两者是有明显区别的,前者指的是该字段存在与否(包含 0 和 1),而后者才是 SYN 置 1(也就是过滤出 TCP 三次握手中的 SYN 和 SYN/ACK) 。

HTTP-05

通过 tcp.flags.syn == 1 过滤得出所有的 SYN 和 SYN/ACK 数据包共有 101 个,占比 11.2%。

HTTP-06

使用 Tshark 方式过滤如下

λ tshark -r http-gogo.pcapng -Y "tcp.flags.syn==1" | wc -l
101

λ 

分析答案

数据包跟踪文件中有多少个数据包包含 SYN 标志位设置:101 个。


3. What is the name of the largest HTTP object downloaded to this client?

下载到此客户端的最大 HTTP object 的名称是什么?


分析步骤

HTTP object 可以直接通过 Wireshark File -> Export Objects-> HTTP... 得到以下信息。

HTTP-07

之后通过 Size 从大到小排序即可,因为同一个文件可能存在于多个数据包,所以再下拉遍历下数据包文件名和大小,可以看到实际最大一个文件是 OpenSans-Semibold.ttf

HTTP-08

HTTP-09

文件 OpenSans-Semibold.ttf 大小为 221328 字节

HTTP-10

个人来说,本道题用 Tshark 来操作分析可能更加简单,通过 --export-objects 参数导出 HTTP Object 到 test 文件夹中。

tshark -r http-gogo.pcapng -q --export-objects http,test

test 文件夹中所有的 HTTP Object 如下

HTTP-11

HTTP-12

分析答案

下载到此客户端的最大 HTTP object 的名称是:OpenSans-Semibold.ttf 。


4. How long did it take to download the browser tab icon, favicon.ico (include TCP connection setup/teardown)?

下载浏览器标签图标 favicon.ico (包括 TCP 连接设置/拆除)需要多长时间?


分析步骤

因为需要找到包含下载 favicon.ico的 TCP 连接,所以可以先通过 http 过滤 uri 的方式找到该连接

http.request.uri contains "favicon.ico"

HTTP-13

TCP Stream 为 47

HTTP-14

展开该流后,可得相关数据包,共 13 个。

HTTP-15

而此流的时间,可以直接点选 No.846 详细信息,[Timestamps] 中可以得到最后一个数据包和第一个数据包的时间差值。

HTTP-16

同样在会话视图中也可以看到该流的统计时间,0.1462 秒。

HTTP-17

分析答案

下载浏览器标签图标 favicon.ico (包括 TCP 连接设置/拆除)需要:0.146238000 秒。


5. Frame 131 is a spurious retransmission. Which previous frame caused this to be marked “spurious”?

数据帧 131 为一个虚假重传,是哪一个前帧导致这个帧被标记为“虚假”?


分析步骤

虚假重传,简单来说就是在数据包跟踪文件中针对某个 Seq Num 的数据包已经 ACK 确认过,之后却又收到一次同样 Seq Num 的数据包。

根据 No.131 数据帧所在 TCP 流分析,可以看出 No.121、No.126 和 No.127 已经完成了一次 TCP 四次挥手,但服务器却由于某种问题又发送了一次 No.130 ACK,以及 No.131 重传的 FIN/ACK,疑似服务器并没有收到 No.127 而产生的超时重传。

HTTP-18

参考 Wireshark 官网文档对于 TCP Spurious Retransmission 的定义:

TCP Spurious Retransmission

Checks for a retransmission based on analysis data in the reverse direction. Set when all of the following are true:

  • The SYN or FIN flag is set.
  • This is not a keepalive packet.
  • The segment length is greater than zero.
  • Data for this flow has been acknowledged. That is, the last-seen acknowledgement number has been set.
  • The next sequence number is less than or equal to the last-seen acknowledgement number.

Supersedes “Fast Retransmission”, “Out-Of-Order”, and “Retransmission”.

分析答案

数据帧 131 为一个虚假重传,是哪一个前帧导致这个帧被标记为“虚假”:No.127 。

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值