Skip to content

字节序(Endianness) ​

🔢 多字节数据在内存中的存放顺序。r0capture 拼 pcap 包时必须正确处理。

两种字节序 ​

字节序说明高位字节在
大端序(Big-Endian,网络序)高位字节在低地址前
小端序(Little-Endian,本机序 x86)低位字节在低地址前

以 0x12345678 为例:

大端序内存: 12 34 56 78   (高位12在前)
小端序内存: 78 56 34 12   (低位78在前)

r0capture 中的字节序 ​

区域字节序struct 首字符原因
pcap 全局头 + 记录头本机序(小端)=全局头 magic 0xa1b2c3d4 声明了本机序
IPv4 / TCP 协议头大端(网络序)>网络协议规定用大端

magic number 的字节序作用 ​

pcap 全局头第一个字段是 magic 0xa1b2c3d4。读端读这 4 字节:

  • 读到 a1 b2 c3 d4 → 写端是大端
  • 读到 d4 c3 b2 a1 → 写端是小端

读端据此判断整个文件的字节序。r0capture 用本机序(小端)写 magic,Wireshark 读到 d4 c3 b2 a1 即知是小端。

IP 地址的流转 ​

详见 ipToNumber。

相关文档 ​

基于 VitePress 构建 · 教学用途