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 默认 |
|---|---|
| Android | 64KB ~ 256KB |
| Linux | 64KB ~ 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" 自动做这事。