docs: document client abort close tradeoff

This commit is contained in:
2026-04-23 02:55:38 +08:00
parent 00be10f134
commit fe03bee588
3 changed files with 30 additions and 0 deletions
+19
View File
@@ -448,3 +448,22 @@ case ETHTYPE_ARP:
3. 不要忽略 `DIAG_TASK_ISOLATION=1 正常、=0 异常` 这个前提
4. 不要一次性修改 `C1/S1/CH390/lwIP` 多个方向,避免再次失去因果关系
5. 每次只做一个能明显改变故障边界的最小改动,并用 RTT + Keil build 结果交叉验证
### 11.8 固定 Client 端口重连策略(TIME_WAIT 取舍)
当前工程的 `Client` 链路保留固定 `LPORT` 配置语义,默认 `C1/C2` 均使用明确的本地源端口。
`lwIP + netconn` 路径下,如果仍沿用优雅 `netconn_close()`,则相同 `LPORT` 的快速重连会受到 TCP `TIME_WAIT` 影响,表现为一段时间内重复 `bind/connect` 失败。
结合本项目的约束,当前版本固化如下取舍:
1. 不取消 `Client` 固定 `LPORT` 语义
2. 不依赖扩大 PCB 池作为主修复手段
3. 不通过降低 `TCP_MSL` 改写全局 TCP 保守语义
4.`Client` 主动断开后的释放路径采用 abortive closeRST),以立即释放 PCB 与本地端口
使用该策略时应明确接受以下副作用:
1. 对端可能看到 `RST` 或“连接被重置”
2. 连接尾部未完成发送的数据不会再走优雅关闭路径
3. 该策略仅用于固定 `Client` 端口快速重连场景,不应直接推广到所有 TCP 关闭路径