2020-11-16

三次握手四次挥手的理解

三次握手

在TCP/IP协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的。

  • 第一次握手:Client将同步标志位SYN设置为1,随机生成一个***(seq)x,并将数据包发送给Server。此时Client进入SYN_SENT状态,等待Server确认。
  • 第二次握手:Server接收到数据包之后,由SYN=1得知这是Client请求建立连接。Server将同步标志位SYN设置为1,将确认标志位ACK设置为1,ack = x+1,随机生成一个***(seq)y,并将数据包发送给Client确认请求。此时Server进入SYN_RCVD状态。(半连接列队)
  • 第三次握手:Client接收到数据包后,确认ack是否为x+1,如果是则将确认标志位ACK设置为1,ack=y+1,发送给Server。此时Client状态为ESTABLISHED。Server接收到数据包之后检查ack是否为y+1,如果是则成功建立连接,Server进入ESTABLISHED状态,完成三次握手。(全连接列队)

四次挥手

  • 第一次挥手:Client向Server发送FIN标志,用于关闭Client到Server的数据传送,并发送***a,进入FIN_WAIT_1状态。这表示Client告诉Server我已经没有数据要发给你了。

  • 第二次挥手:Server接收到FIN标志后,发送一个ack=a+1,告知Client它已经接收到了关闭请求,进入CLOSE_WAIT状态。Clinet接收到回应后进入FIN_WAIT_2状态。

  • 第三次挥手:Server发送FIN标志,用于关闭Server到Client的数据传送,并发出***b,进入LAST_ACK状态。这表示Server告诉Client我也没有数据要发送给你了。

  • 第四次挥手:Client接收到FIN标志后,发送一个ack=b+1,告知Server它已经接收到请求关闭,进入TIME_WAIT状态。Server接收到回应进入CLOSED状态。等待2MSL后,Client依然没有收到其他回复,则也进入CLOSED。

附注:TCP 有6中标志位:
SYN(synchronous 建立连接)
ACK(acknowledgement 确认)
PSH(push 传送)
FIN(finish 结束)
RST(reset 重置)
URG(urgent 紧急)

2020-11-16