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
Reference
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 (sk→sk_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 }