TCP 3次握手4次挥手理解
图片引用自http://blog.****.net/xifeijian/article/details/12777187
建立连接:3次握手
- (客户端对服务器说: ”你好,我可以跟你连接吗?“)
客户端发送报文给服务器端:
SYN=1 ACK = 0 SEQ=x
进入 SYN_SEND 状态。 - (服务器向客户端确认: ”好的,让我们开始吧,你准备好了吗?”)
服务器端收到 SYN 报文后,回应报文给客户端:
SYN=1 ACK=1 ack=x+1 SEQ=y
进入 SYN_RECV 状态。 - (客户端向服务器确认: ”好的,我准备好啦。”)
客户端收到服务器端的 SYN 报文,回应报文给服务器端:
SYN=0 ACK=1 ack=y+1 SEQ=x+1
进入 Established 状态。
服务器端收到后也进入 Established 状态。
图片引用自http://baijiahao.baidu.com/s?id=1654225744653405133&wfr=spider&for=pc
断开连接:4次挥手
- A对B说:“让我们断开连接吧?”
A首先调用 close,称该端执行“主动关闭”(active close):
FIN=1 Seq=U
A进入FIN-WAIT-1阶段,即半关闭阶段,停止发送数据。 - B收到后对A说:“好的,麻烦先等等让我先处理完剩下的事情。”
B接收到这个FIN执行 “被动关闭”(passive close):
ACK=1 ack=U+1 Seq=v
B进入CLOSE-WAIT阶段,半关闭状态。
A收到后进入FIN-WAIT-2阶段 - B对A说:“我处理完啦,让我们断开连接吧?”
B做好了释放连接准备,再次向A发出一段TCP报文:
FIN=1 ACK=1 ack=U+1 Seq=w
B进入LAST-ACK阶段。 - A收到后对B说:“好的,那我断开了。”
A收到B报文后向B确认结束:
ACK=1 ack=w+1 Seq=U+1
A进入TIME-WAIT阶段
B收到后进入CLOSED阶段
A等待2MSL之后,进入CLOSED阶段
图片引用自http://baijiahao.baidu.com/s?id=1654225744653405133&wfr=spider&for=pc