Skip to content

Socket 缓冲区 (SO_RCVBUF / SO_SNDBUF) ​

📦 TCP socket 的接收/发送缓冲区,影响 r0capture 单次 read/write 的数据量。

是什么 ​

每个 TCP socket 内核维护两个缓冲区:

  • SO_RCVBUF:接收缓冲区,SSL_read 从中读
  • SO_SNDBUF:发送缓冲区,SSL_write 向其中写

对 r0capture 的影响 ​

一次 SSL_read(buf, 16384) 最多读 16KB,大响应被分多次读,r0capture 也就分多次抓。各次 chunk 在 pcap 里是独立的 TCP 段。

默认大小 ​

系统SO_RCVBUF 默认
Android64KB ~ 256KB
Linux64KB ~ 256KB

App 可 setsockopt 调整。

与 len 参数 ​

SSL_read(ssl, buf, num) 的 num 是 App 请求的字节数,实际读取数 ≤ min(num, RCVBUF中可用数据)。r0capture hook 的 onLeave 拿到的 retval 是实际读取字节数,可能 < num。

重组 ​

抓包分析时,要把同一连接的多个 chunk 按 seq 拼起来才是完整 HTTP 响应。Wireshark 的 "Follow TCP Stream" 自动做这事。

相关文档 ​

基于 VitePress 构建 · 教学用途