对TCP状态的新理解

来源:互联网 发布:怎么防盯盯软件 编辑:程序博客网 时间:2024/05/20 06:08

以前一直不明白TCP的四次断连接的意义在哪,通过一段时间实践的领悟大约明白了
1. 首先发起断连接的一方,发送一个FIN信号给被断连接的从方,在C++的代码里表示为close(fd),那么这个连接就进入FIN_WAIT1状态。
2. 被动的一方,在收到断连接之后发送ack给主动断连接的一方,这时候被动方就进入CLOSE_WAIT状态,主动方就进入FIN_WAIT2状态。值得注意的是,这个是协议自动完成的,当被动方不调用自己的close(fd) 操作则会一直保持这状态,通过netstat去观察一直会有这个CLOSE_WAIT状态,这样如果被动方不调用close(fd)操作的话,会一直导致fd泄漏。
3. 被动一方调用close(fd) 方法关闭连接之后,发送一个FIN给主动端,则主动方就进入time_wait状态,被动方进入LAST_ACK状态
4. 主动一方发送最后的ack给被动方,被动方接收到之后关闭连接,主动方则经过2 MSL时间也关闭连接

最后盗个图这里写图片描述

原创粉丝点击