说说TCP三次握手和四次挥手的全过程?
1 个回答
今朝有酒今朝醉,明日愁来明日愁。辰南### TCP三次握手 TCP三次握手是指客户端和服务器在建立连接时需要进行的三次通信。具体过程如下: 1. **第一次握手**: - **客户端**:发送一个SYN(同步序列编号)包到服务器,表示请求建立连接。这个包包含一个初始序列号`seq=x`。 - **服务器**:接收到SYN包后,进入SYN_RECV状态。 2. **第二次握手**: - **服务器**:发送一个SYN-ACK包到客户端,确认收到客户端的SYN请求,并向客户端发送自己的SYN请求。这个包包含服务器的初始序列号`seq=y`,并确认客户端的序列号`ack=x+1`。 - **客户端**:接收到SYN-ACK包后,进入SYN_RECV状态。 3. **第三次握手**: - **客户端**:发送一个ACK包到服务器,确认收到服务器的SYN请求。这个包确认服务器的序列号`ack=y+1`。 - **服务器**:接收到ACK包后,进入ESTABLISHED状态。 此时,客户端和服务器都进入ESTABLISHED状态,连接正式建立,可以开始传输数据。 ### TCP四次挥手 TCP四次挥手是指客户端和服务器在断开连接时需要进行的四次通信。具体过程如下: 1. **第一次挥手**: - **主动关闭方(一般是客户端)**:发送一个FIN(Finish)包到被动关闭方,表示不再发送数据,但可以接收数据。这个包包含一个序列号`seq=u`。 - **被动关闭方(一般是服务器)**:接收到FIN包后,进入CLOSE_WAIT状态。 2. **第二次挥手**: - **被动关闭方**:发送一个ACK包到主动关闭方,确认收到FIN包。这个包确认序列号为`ack=u+1`。 - **主动关闭方**:接收到ACK包后,进入FIN_WAIT_2状态。 3. **第三次挥手**: - **被动关闭方**:发送一个FIN包到主动关闭方,表示不再发送数据。这个包包含一个序列号`seq=v`。 - **主动关闭方**:接收到FIN包后,进入TIME_WAIT状态。 4. **第四次挥手**: - **主动关闭方**:发送一个ACK包到被动关闭方,确认收到FIN包。这个包确认序列号为`ack=v+1`。 - **被动关闭方**:接收到ACK包后,进入CLOSED状态。 此时,主动关闭方等待2*MSL(Maximum Segment Lifetime,最大报文段生存时间)后,进入CLOSED状态,连接正式关闭。 ### 总结 - **三次握手**用于建立TCP连接,确保客户端和服务器都准备好传输数据,并且都能确认对方的存在和状态。 - **四次挥手**用于断开TCP连接,确保数据传输完成,并且双方都同意关闭连接,防止数据丢失。发布于 2024-08-07 00:37 •IP属地 黑龙江举报评论收藏1
公众号进入网站体验更佳

