四次挥手要点
一、 四次挥手时,FIN_WAIT1状态的连接出现很多的原因。
被动方的FIN报文段一直没有发送出去,导致主动方处于FIN_WAIT1状态的连接产生大量的积压。
如果存在攻击者恶意攻击,就可能导致被动方的FIN报文段一直发不出去。
原因:
1.TCP必须保证报文是有序发送的,如果发送方的发送缓存区中还有数据没有发送完,那么FIN报文也不能提前发送。
2.TCP存在流量控制,当接受方的窗口大小设为0时,发送方就无法发送数据。所以当攻击者下载大文件时,就可以将接受窗口大小设为0时,导致FIN报文一直发送不出去,进而导致连接一直处于FIN_WAIT1状态。
二、 四次挥手时,CLOSE_WAIT状态的连接出现很多的原因。
1.程序本身出现BUG,read函数(读事件) 返回0时并没有调用close函数关闭连接。
2.当前服务的负载过高,导致close函数所在的回调函数延迟执行。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!