HTTP三次握手,四次挥手。

HTTP三次握手,四次挥手。
最新回答
汏姐萌神

2026-07-02 15:28:05

HTTP三次握手与四次挥手

三次握手:

三次握手是TCP(传输控制协议)连接建立的过程,用于确保客户端和服务器之间的连接是可靠和同步的。具体过程如下:

  1. 第一次握手:

    客户端A发送一个SYN(同步序列编号)报文到服务器B,该报文中的SYN标志位被设置为1,同时随机生成一个初始序列号Seq=client_isn。

    客户端A进入SYN_SEND状态,等待服务器B的确认。

  2. 第二次握手:

    服务器B收到客户端A的SYN报文后,确认同意建立连接。

    服务器B发送一个SYN+ACK报文给客户端A,其中SYN标志位也被设置为1,表示服务器B也请求建立连接,同时ACK(确认)标志位被设置为1,表示对客户端A的SYN报文的确认。

    服务器B在SYN+ACK报文中随机生成一个自己的初始序列号Seq=server_isn,并将客户端A的序列号加1作为确认号ACK=client_isn+1发送回去。

    服务器B进入SYN_RCVD状态。

  3. 第三次握手:

    客户端A收到服务器B的SYN+ACK报文后,检查确认号ACK是否正确(即是否等于自己发送的序列号加1)。

    如果正确,客户端A发送一个ACK报文给服务器B,其中ACK标志位被设置为1,确认号ACK=server_isn+1,表示对服务器B的SYN+ACK报文的确认。

    客户端A和服务器B都进入ESTABLISHED(已建立连接)状态,此时TCP连接建立完成,双方可以开始传输数据。

图片展示(三次握手):

四次挥手:

四次挥手是TCP连接断开的过程,用于确保客户端和服务器之间的连接能够正确、有序地关闭。具体过程如下:

  1. 第一次挥手:

    客户端A发送一个FIN(结束)报文给服务器B,表示客户端A想要关闭连接。

    客户端A进入FIN_WAIT_1状态,等待服务器B的确认。

  2. 第二次挥手:

    服务器B收到客户端A的FIN报文后,发送一个ACK报文给客户端A,表示对FIN报文的确认。

    确认号ACK等于客户端A发送的序列号加1。

    服务器B进入CLOSE_WAIT状态,此时服务器B还可以继续发送数据给客户端A。

  3. 第三次挥手:

    当服务器B完成所有数据的发送后,也想要关闭连接,于是发送一个FIN报文给客户端A。

    服务器B进入LAST_ACK状态,等待客户端A的确认。

  4. 第四次挥手:

    客户端A收到服务器B的FIN报文后,发送一个ACK报文给服务器B,表示对FIN报文的确认。

    确认号ACK等于服务器B发送的序列号加1。

    客户端A和服务器B都进入TIME_WAIT状态,等待一段时间后(通常是2倍的MSL,即最长报文段寿命),确保对方已经收到确认报文后,才最终关闭连接。

图片展示(四次挥手):

综上所述,三次握手和四次挥手是TCP协议中用于建立连接和断开连接的可靠机制,它们确保了数据传输的可靠性和有序性。