Skip to content

TCP 头字段详解 ​

🔗 TCP 头 20 字节逐字段,r0capture 写 pcap 时构造。

头格式 ​

struct.pack('>HHLLBBHHH', ...)(大端,20 字节):

偏移字段字节r0capture 值
0src port2message.src_port
2dst port2message.dst_port
4seq4递增假序号
8ack40
12data offset(4)+reserved(3)+flags(9)20x5018
14window265535
16checksum20
18urgent pointer20

data offset + flags ​

0x5018:

  • 高 4 位 5 = TCP 头长 5×4=20 字节
  • flags 0x18 = PSH(0x08) + ACK(0x10)

flags 含义 ​

flag值r0capture 用
FIN0x01否
SYN0x02否
RST0x04否
PSH0x08是
ACK0x10是
URG0x20否

r0capture 每包都标 PSH+ACK,因为只造"携带数据的已建立连接"包,不模拟握手。

seq ​

r0capture 维护递增计数器,每包按载荷长度累加,模拟数据流序号。不是真实 TCP seq(真实 seq 是随机初始值+字节偏移)。

window ​

填 65535(最大窗口),Wireshark 不会因窗口小而警告。

checksum ​

填 0,不校验。Wireshark 显示 bad checksum 警告,不影响明文。

port ​

src_port/dst_port 是真实的(从 socket 取),这是 pcap 能正确显示连接归属的关键。

相关文档 ​

基于 VitePress 构建 · 教学用途