get

Cs, Go!

||最后更新: 2025-10-28|
下面按题目顺序给你“一键复刻”的找法。你只需要先把这条连接的 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 ProtocolFull 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 OKContent-Type: text/html 的第一帧。
填空位置与获取方法:
  • Frame number:No. 列。
  • Size of application layer message (bytes):取该帧的 tcp.len(这一帧里 HTTP 头 + 可能的一小段正文)。
  • Size of application layer user data(= 应用层用户数据,不含应用层头):就是实体正文长度,直接读
    • Hypertext Transfer ProtocolContent-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 URIhttp.request.full_uri)。
  • Size of application layer message (bytes):该 GET 的 tcp.len

g) 找包含图片的服务器响应 & 统计段数/大小

过滤器:
定位到图片的 200 OK(第一帧)。从这里开始直到该对象传完,都是“图片的服务器响应数据”。
填空位置与获取方法:
  • 包含图片的响应帧号:就是这一个 200 OKNo.
  • How many TCP segments were required(传完这张图用了多少段):
      1. 先记住这张图的 tcp.stream==Nserver IP
      1. 过滤:
        1. 该 200 OK这一帧开始,往下到图片传输结束(直到下一个请求/响应或连接结束)。底部“Displayed: X”就是服务器方向携带图片数据的 TCP 段数(如果第一帧 200 OK 也带正文,它也算一段)。
          更保险:选中 200 OK,Shift 点选最后一个 server→client、有数据的包;右下角“n packets marked”= 段数。
  • Enter the size of the picture:优先读 Content-Lengthhttp.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:直接查看任意帧详情

  1. 点选帧 372、373、374 中任意一个;
  1. 展开 “Transmission Control Protocol”;
  1. 你会看到一行:
    1. → 这个数字就是这条连接的 tcp.stream 编号。

方法2:Follow → TCP Stream

  1. 在帧 372(或 374)上右键;
  1. 选择 Follow → TCP Stream
  1. Wireshark 会自动过滤出:
    1. 这说明这条连接的 stream 编号是 1。
      之后所有相关题(GET、HTTP 200、图片等)都要在这条连接(tcp.stream==1)里找。

🧩 举例说明(基于你截图的逻辑)

题目部分
内容
对应 tcp.stream
a–c
三次握手(372,373,374)
假设 = 1
d
GET 请求(帧 377)
同一条 streamtcp.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 可能变了。
判断方式:
  1. 在图片 GET 帧(例如 383)中展开 TCP,查看它的 [Stream index]
  1. 如果不同,比如变成 2,那说明图片是第二条连接;
  1. 那么图片的响应(frame 467)也会显示 tcp.stream == 2

✅ 总结口诀

三次握手 → 得到 stream 编号 →
后面所有 HTTP 请求/响应都查相同 tcp.stream
若出现新的握手(新的 SYN),就说明换了新 stream。

我可以帮你画一个小流程图(从握手 → GET → 200 → 图片)来标出如何确认每个帧属于哪个 tcp.stream,你想要吗?
Loading...