在 pcap 文件中查找 wireshark 传输的数据

Find data transfered by wireshark on pcap file

我有一个巨大的 pcap 文件。我想知道 facebook 在数据传输(上传、下载)方面的使用情况。为此,我使用 wireshark 来读取这个文件。从 question on Whosebug 中,有许多字段可用于查找字节。

frame.len==243
ip.len=229
udp.length==209
data.len=201

现在,我测试了 frame.len 和 ip.len 都给出了不同的结果。我应该认为正确的是什么?我是网络术语的新手,我必须找到正确的数据传输。

当您连接到服务器并请求一些简单页面时会发生什么:

  1. 服务器应用程序生成请求的数据(例如 <body>Hello world</body> 字符串)并将其传递给 HTTP 层
  2. HTTP 层根据 RFC(指定 HTTP 版本、状态代码、内容类型等)生成必要的 header,将其添加到生成的数据中并将所有内容传递给 TCP 层
  3. TCP 层可能会将数据分成多个部分(不是我们的情况,消息已经太小了)并为每个部分添加必要的传输层信息(src/dst 端口号、序列号、一些标志,校验和等),然后将其传递到 IP 级别
  4. IP 层为路由添加必要的信息(source/dest 地址、TTL 和其他内容),然后将其传递到较低层(例如以太网)
  5. 以太网添加其部分(MAC 地址,可能是 VLAN 标记)并将所有内容推送到物理设备
  6. 结果数据从服务器的网卡byte-by-byte发送到网络

所以你的问题实际上取决于你。你想测量什么?是"data, which I need to display excluding all auxiliary info"吗?还是"all number of bytes I need to send/receive for getting this lovely cat picture"?以下是获取每个部分大小的字段列表:

  1. 仅获取数据长度(不幸的是,作为字符串):http.content_length_header == "606"
  2. 获取(数据+HTTPheader)长度:tcp.len == 973
  3. 获取(数据+HTTP+TCP+IP层):ip.len=1013
  4. 获取发送的每个字节:frame.len == 1027

如果要测量带宽占用,请使用frame.len。如果你对 "pure site weight" 感兴趣,它应该独立于环境,所以使用 http.content_length_header。考虑到以下因素,事情可能会在高层变得更加复杂:

  • HTTPS 时代意味着您无法轻易地在跟踪中观察到 HTTP 内容,因此 tcp.len 可能是最高选项
  • 一些数据(例如音频、视频)通过不同的协议栈(例如 IP - UDP - RTP)传输