下面按题目顺序给你“一键复刻”的找法。你只需要先把这条连接的 tcp.stream 锁定(用前面讲过的 Follow → TCP Stream;或在过滤器里加
tcp.stream==N),然后照做就能把每一空都填出来。d) 找默认 HTML 页的 GET 请求
过滤器:
在这些 GET 里,选“请求默认 HTML 页”的那一个(通常 URI 为
/ 或主页路径,后续的响应 Content-Type 是 text/html)。填空位置与获取方法:
- Frame number:看列表里的 No. 列(该 GET 的帧号)。
- Full request URI:展开 Hypertext Transfer Protocol →
Full request URI(字段名http.request.full_uri)。
- Size of application layer message (bytes):这题要“应用层报文大小”。对 GET 而言基本只有请求行+头部,直接取该帧的 TCP Segment Len(字段
tcp.len)。
小技巧:把 tcp.len 加为一列更快抄数;或在 TCP 树里看 [TCP segment Len: X]。
e) 找包含 HTML 页的服务器响应(200 OK)
过滤器:
选择出现 HTTP/1.1 200 OK 且
Content-Type: text/html 的第一帧。填空位置与获取方法:
- Frame number:No. 列。
- Size of application layer message (bytes):取该帧的
tcp.len(这一帧里 HTTP 头 + 可能的一小段正文)。
- Size of application layer user data(= 应用层用户数据,不含应用层头):就是实体正文长度,直接读
Hypertext Transfer Protocol →
Content-Length(字段 http.content_length)。若是 chunked,用 File → Export Objects → HTTP 导出该对象看 Size(等于正文大小);或 Follow HTTP Stream 看窗底 “Bytes from server”。- Flag(HTML 里有 16 位 hex):右键这帧 → Follow → HTTP Stream → 将右上角显示方式设为 ASCII(或 Raw),在窗口中 Ctrl+F 搜索
flag/flag is;或搜索正则样式的 16 位十六进制[0-9A-Fa-f]{16},把那 16 位抄出来。
f) 页面里有图片:找图片的 GET
过滤器:
选中请求图片的那一个(URI 末尾通常
.jpg/.jpeg/.png)。填空位置与获取方法:
- Frame number:No. 列。
- Full request URI:HTTP 树里的
Full request URI(http.request.full_uri)。
- Size of application layer message (bytes):该 GET 的
tcp.len。
g) 找包含图片的服务器响应 & 统计段数/大小
过滤器:
定位到图片的 200 OK(第一帧)。从这里开始直到该对象传完,都是“图片的服务器响应数据”。
填空位置与获取方法:
- 包含图片的响应帧号:就是这一个 200 OK 的 No.。
- How many TCP segments were required(传完这张图用了多少段):
- 先记住这张图的 tcp.stream==N 和 server IP;
- 过滤:
从该 200 OK这一帧开始,往下到图片传输结束(直到下一个请求/响应或连接结束)。底部“Displayed: X”就是服务器方向携带图片数据的 TCP 段数(如果第一帧 200 OK 也带正文,它也算一段)。
更保险:选中 200 OK,Shift 点选最后一个 server→client、有数据的包;右下角“n packets marked”= 段数。
- Enter the size of the picture:优先读
Content-Length(http.content_length)。若是 chunked:
File → Export Objects → HTTP → 选中这张图片 → 看右侧 Size;或 Follow → TCP Stream 看窗底 Bytes from server。这就是图片实际大小(字节)。
速记表
- GET/响应帧号:看 No.
- Full URI:HTTP 树里的
Full request URI
- 应用层报文大小:该帧的
tcp.len
- 用户数据大小(不含头):
http.content_length(或 Export Objects/Follow 统计)
- 找 flag:Follow HTTP Stream → 搜
flag或 16 位十六进制
- 图片的段数:
tcp.stream==N && ip.src==server && tcp.len>0,从 200 OK 起统计行数
- 图片大小:
http.content_length或 Export Objects → Size
照这个流程做,你截图里标的示例数字(比如 HTML 的
Content-Length=257、图片 Content-Length≈1481258、段数 ≈ 52)就能一一复现。非常好问题!
你现在在问「这些 HTTP 问题里到底该看哪个
tcp.stream」——这是所有 Wireshark 题里最关键的一步。下面我教你一步到位判断方式 👇🧭 一句话结论
“看哪一个 tcp.stream” = 看你分析的那条 TCP 连接(握手)是哪一条。例如:
- 你在前面的题里找到的三次握手(帧 372, 373, 374)就是一条连接,
所以接下来的 GET / HTTP / 图片 都属于这条连接。✅ 所以你的tcp.stream应该与握手那三帧相同。
🔍 查找方法(推荐用法)
方法1:直接查看任意帧详情
- 点选帧 372、373、374 中任意一个;
- 展开 “Transmission Control Protocol”;
- 你会看到一行:
→ 这个数字就是这条连接的
tcp.stream 编号。方法2:Follow → TCP Stream
- 在帧 372(或 374)上右键;
- 选择 Follow → TCP Stream;
- Wireshark 会自动过滤出:
这说明这条连接的 stream 编号是 1。
之后所有相关题(GET、HTTP 200、图片等)都要在这条连接(
tcp.stream==1)里找。🧩 举例说明(基于你截图的逻辑)
题目部分 | 内容 | 对应 tcp.stream |
a–c | 三次握手(372,373,374) | 假设 = 1 |
d | GET 请求(帧 377) | 同一条 stream → tcp.stream==1 |
e | HTTP 200 OK (HTML 页面) | tcp.stream==1 |
f | GET 请求图片 (帧 383) | 仍是 tcp.stream==1(同一连接请求图片) |
g | HTTP 200 OK (图片响应) | tcp.stream==1 |
⚠️ 特殊情况提醒
有时候网页会开多条连接(不同
tcp.stream):- 比如浏览器先请求主页
/,再开第二条连接取/pic1.jpg。
- 这时图片的
tcp.stream可能变了。
判断方式:
- 在图片 GET 帧(例如 383)中展开 TCP,查看它的
[Stream index];
- 如果不同,比如变成 2,那说明图片是第二条连接;
- 那么图片的响应(frame 467)也会显示
tcp.stream == 2。
✅ 总结口诀
三次握手 → 得到 stream 编号 →后面所有 HTTP 请求/响应都查相同tcp.stream;若出现新的握手(新的 SYN),就说明换了新 stream。
我可以帮你画一个小流程图(从握手 → GET → 200 → 图片)来标出如何确认每个帧属于哪个
tcp.stream,你想要吗?