提纲
主动方优化
关闭连接的方式通常有两种
-
RST报文关闭
进程异常退出,内核会发送RST报文关闭,它可以不走四次挥手流程,一种暴力关闭方式。 -
FIN报文关闭
安全关闭方式必须通过四次挥手,它由进程close和shutdown函数发起FIN报文
- close: 完全断开连接,无法传输数据,也不能发送数据,也叫做【孤儿连接】
- shutdown: 由第二参数决定连接方式
- SHUT_RD(0): 关闭【读】方向连接
- SHUT_WR(1): 关闭【写】方向连接
- SHUT_RWWR(2): 关闭【读、写】方向连接
一、FIN 报文重传次数、FIN_WAIT 状态时间
- FIN_WAIT1 状态的优化
主动方发送FIN报文后,连接就处于FIN_WAIT1状态,正常情况收到被动方ACK,则变为FIN_WAIT2状态。
但是迟迟收不到对方返回ACK,内核会定时重发FIN报文,修改重发tcp_orphan_retries参数。 - FIN_WAIT2 状态的优化
当主动方收到ACK报文后,会处于FIN_WAIT2状态,tcp_fin_timeout 控制了这个状态下连接的持续时长,默认值是 60 秒
二、孤儿连接上限个数
三、调整time_wait状态上限个数
TIME_WAIT 是主动方四次挥手的最后一个状态,也是最常遇见的状态。