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

其他格式: JSON · Markdown 中文 · English
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.

generic

官方文档

https://datatracker.ietf.org/doc/html/rfc9293

解决方案

  1. 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
  2. Set a shorter TCP user timeout on the socket to abort the connection faster: sysctl -w net.ipv4.tcp_retries2=5

无效尝试

常见但无效的做法:

  1. 85% 失败

    Zero-window probing is separate from keepalive; keepalive settings do not affect probe retransmission timers.

  2. 75% 失败

    The issue is at the application or receiver side; restarting the sender's interface does not fix the receiver's unresponsiveness.