理解TCP的三次握手与四次挥手

需积分: 0 0 下载量 200 浏览量 更新于2024-08-03 收藏 3KB MD 举报
"05-TCP三次握手四次挥手.md - 大厂前端面试中的TCP连接基础知识" 在前端面试中,掌握TCP连接的三次握手和四次挥手是非常关键的一部分,因为这是理解网络通信基础的重要概念。TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议,确保数据在网络中正确无误地传输。以下是关于三次握手和四次挥手的详细解释: ### 三次握手 三次握手是为了确保客户端和服务端都能正确地建立连接,以保证双方的发送和接收能力。具体过程如下: 1. **第一次握手**:客户端发送一个带有SYN(同步序列编号)标志的数据包到服务器,请求建立连接。此时,客户端进入SYN_SENT状态,等待服务器确认。 2. **第二次握手**:服务器接收到客户端的SYN包后,会回应一个SYN+ACK包,其中包含自己的SYN和对客户端SYN的确认ACK(acknowledgement)。此时,服务器进入SYN_RECEIVED状态,等待客户端的确认。 3. **第三次握手**:客户端收到服务器的SYN+ACK包后,再发送一个ACK包,确认服务器的SYN。此时,客户端进入ESTABLISHED状态,表示连接已建立。当服务器收到这个ACK包后,也进入ESTABLISHED状态,完成连接。 ### 四次挥手 四次挥手用于终止TCP连接,确保双方都能知道对方已经接收到了所有数据并准备好关闭连接。过程如下: 1. **第一次挥手**:当客户端不再需要连接时,发送一个FIN(结束)标志的数据包给服务器,表明自己不再有数据发送,请求关闭连接。 2. **第二次挥手**:服务器接收到FIN包后,发送一个ACK包给客户端,确认收到了关闭连接的请求,但此时服务器可能还有数据要发送。 3. **第三次挥手**:当服务器完成数据发送,也会发送一个FIN包给客户端,表示自己已完成数据传输,请求关闭连接。 4. **第四次挥手**:客户端收到服务器的FIN包后,发送一个ACK包确认,然后进入TIME_WAIT状态,等待一段时间确保服务器接收到了它的确认,最后关闭连接。服务器在收到这个ACK包后关闭连接。 TCP的三次握手和四次挥手确保了连接的可靠建立和安全关闭,避免了数据丢失和错误通信。在前端面试中,理解这些概念对于解析HTTP请求和响应的生命周期至关重要,特别是在处理网络延迟、丢包等问题时。