ETIMEDOUT
networking
protocol_error
ai_generated
partial
TCP零窗口探测失败:3次探测后未收到接收方响应
TCP Zero Window Probe Failure: no response from receiver after 3 probes
ID: networking/tcp-zero-window-probe-failure
78%修复率
85%置信度
1证据数
2024-03-15首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| Linux kernel 5.15 | active | — | — | — |
| Linux kernel 6.1 | active | — | — | — |
| FreeBSD 13.2 | active | — | — | — |
根因分析
接收方的TCP窗口为零,且发送方的零窗口探测未得到确认,表明接收方在保持零窗口时无响应或已崩溃。
English
The receiver's TCP window is zero and the sender's zero-window probes are not acknowledged, indicating the receiver is unresponsive or has crashed while holding a zero window.
官方文档
https://datatracker.ietf.org/doc/html/rfc9293解决方案
-
Forcefully close the TCP connection from the sender using tcpkill or iptables, then re-establish: sudo tcpkill -i eth0 port 8080; sleep 2; systemctl restart myapp
-
Set a shorter TCP user timeout on the socket to abort the connection faster: sysctl -w net.ipv4.tcp_retries2=5
无效尝试
常见但无效的做法:
-
85% 失败
Zero-window probing is separate from keepalive; keepalive settings do not affect probe retransmission timers.
-
75% 失败
The issue is at the application or receiver side; restarting the sender's interface does not fix the receiver's unresponsiveness.