架构训练营第八周感悟
本周训练营主要讲算法、数据结构、网络等基础概念。在网络里面TCP协议的三次握手和四次挥手之前没有深入了解过,更多在于握手通道怎么建立的。对怎么断开连接没有深入接触过。再之前排查问题,看其他同事看服务器上http连接的time_wait、close_wait数量来判断当前tomcat连接池的健康状态等,当时还不是很理解这些状态,为什么http搞了那么多概念,而且为什么要检测这类状态的连接数量。现在有了一个初步的了解,就是close_wait是被通知方关闭连接期间的状态,time_wait是主动方收到对方已经关闭后,自己断开连接的过程状态。但是有个疑问点在于:
为什么是在主动方time-wait状态结束开始时就可以发送最后一次ack呢,而不是在time-wait之后呢?个人想此时被动方已经关闭了连接,无需感知到主动方关闭连接,主动方的time-wait关闭事件更像是一个异步操作。另外也在思考为什么需要第二次挥手,close-wait状态结束后直接发送就好,第二次的意义何在?原因在于close-wait状态是单方关闭状态,此时被动方还依然能向主动放发送数据(图中数据传输的单向箭头)。
评论