tcp连接异常case

一端显示ESTABLISHED,另一端FIN_WAIT1持续一段时间后,连接关闭

使用netstat -anp查看连接状态,假设显示ESTABLISHED一端为A,另一端为B。显然B端主动发起断开,进入FIN_WAIT1,但是A端迟迟没有回复ack,B端触发超时重传,达到最大重传次数tcp_orphan_retries后,进入close状态。

参考:https://zhuanlan.zhihu.com/p/398890723

# 查看tcp_orphan_retries
cat /proc/sys/net/ipv4/tcp_orphan_retries
# or
sysctl net.ipv4.tcp_orphan_retries

注意,如果tcp_orphan_retries = 0,默认重传8次。参考:https://serverfault.com/a/408882

98 /* Calculate maximal number or retries on an orphaned socket. */ 99 static int tcp_orphan_retries(struct sock sk, int alive) 100 { 101 int retries = sysctl_tcp_orphan_retries; / May be zero. / 102 103 / We know from an ICMP that something is wrong. / 104 if (sksk_err_soft && !alive) 105 retries = 0; 106 107 / However, if socket sent something recently, select some safe 108 * number of retries. 8 corresponds to >100 seconds with minimal 109 * RTO of 200msec. */ 110 if (retries == 0 && alive) 111 retries = 8; 112 return retries; 113 }