TCP 的建立连接和断开连接(三次握手四次挥手)

2020-11-17  本文已影响0人  弱冠而不立
  1. 第一次握手:客户端发包(SYN = 1),服务端收到了,然后服务端可以得出结论:客户端的发送能力正常,服务端接收能力正常。(注意,此时服务端只是知道自己的接收能力正常)
  2. 第二次握手:服务端发包,客户端收到了,然后客户端可以知道:客户端自身的发送能力和接收能力正常,服务端的发送能力和接收能力正常
  3. 第三次握手:客户端发包,服务端收到了,然后服务端可以得出结论:服务端自己的发送能力也是正常的。(即第三次握手之后服务端才能确定自己接收和发送能力都是正常的)
  1. 客户端发送FIN报文(FIN = 1),然后进入FIN-WAIT-1(终止等待1)状态
  2. 服务端收到连接释放报文,发出确认报文(ACK = 1),此时服务器就进入CLOSE-WAIT(关闭等待)状态。这个时候处于半关闭状态,即客户端没有数据要发送了,但服务器若还有数据要发送,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT(关闭等待)状态。
  3. 客户端收到服务端的确认报文之后,进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在此之前服务器可能还有数据要发送)。 服务器将最后的数据发送完之后,就向客户端发送连接释放报文 (FIN = 1),此时服务器进入 LAST-ACK(最后确认)状态,等待客户端的确认
  4. 客户端收到服务器连接释放的报文后,也必须要发送确认(ACK = 1)报文,此时客户端进入TIME-WAIT(时间等待)状态。此时TCP连接还未释放,客户端等待2 个MSL(最长报文段寿命) 后没有收到服务器的回复就可以关闭连接了,而服务端只要收到了客户端的确认报文,就关闭连接。所以服务器结束时间要早于客户端。
上一篇下一篇

猜你喜欢

热点阅读