docs: document client abort close tradeoff
This commit is contained in:
@@ -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 close(RST),以立即释放 PCB 与本地端口
|
||||
|
||||
使用该策略时应明确接受以下副作用:
|
||||
|
||||
1. 对端可能看到 `RST` 或“连接被重置”
|
||||
2. 连接尾部未完成发送的数据不会再走优雅关闭路径
|
||||
3. 该策略仅用于固定 `Client` 端口快速重连场景,不应直接推广到所有 TCP 关闭路径
|
||||
|
||||
Reference in New Issue
Block a user