Skip to content

pcap 记录头字段 ​

📋 pcap 每条记录的记录头(16 字节)字段含义。

记录头结构 ​

log_pcap 每写一个包先写 16 字节记录头:

python
# --- pcap 记录头(Record Header) 16字节, 本机字节序 ---
("=I", int(t)),                          # Timestamp seconds
("=I", int((t * 1000000) % 1000000)),    # Timestamp microseconds
("=I", 40 + len(data)),                  # Number of octets saved
("=i", 40 + len(data)),                  # Actual length of packet

字段详解 ​

偏移长度格式含义
04=ITimestamp seconds:抓包时刻的 Unix 秒
44=ITimestamp microseconds:微秒部分
84=INumber of octets saved:实际写入的包长
124=iActual length of packet:原始包长

时间戳 ​

python
t = time.time()
int(t)                          # Unix 秒
int((t * 1000000) % 1000000)    # 微秒部分(0~999999)

Wireshark 据此显示抓包时刻,可分析请求时序。

两个长度字段 ​

字段含义r0capture 取值
octets saved实际写入文件的字节数40 + len(data)
actual length原始包长度40 + len(data)

两者相同——r0capture 不截断包。真实抓包工具(tcpdump)可能因 snap length 截断,此时 saved < actual。

40 = 20(IP头) + 20(TCP头),加 len(data) 载荷。

字节序 ​

记录头用本机字节序(=),与全局头一致(magic 声明了本机序)。详见 字节序。

相关文档 ​

基于 VitePress 构建 · 教学用途