
1) 【一句话结论】TCP三次握手通过三次消息交换建立可靠连接,四次挥手因TCP全双工特性需四次消息确保双方数据传输完成,避免资源残留;Web服务端可通过HTTP keep-alive或长连接复用TCP连接减少连接建立开销。
2) 【原理/概念讲解】TCP三次握手是建立连接的核心过程,步骤为:客户端发送SYN(同步序列号)报文(初始序列号seq=100),服务端收到后回复SYN+ACK(同步序列号+确认,seq=200, ack=101),客户端收到后发送ACK(确认,ack=201),完成连接建立。核心是同步双方初始序列号,避免重复连接。
TCP四次挥手是断开连接的过程,因TCP全双工(双方可同时发送数据),一方先关闭自己的发送端(半关闭),发送FIN(关闭发送)报文(seq=204, ack=301),服务端收到后回复ACK(确认,ack=205),然后服务端关闭自己的发送端,发送FIN(被动关闭,seq=302, ack=206),客户端收到后回复ACK(确认,ack=307),完成断开。核心是确保双方数据传输完成,避免缓冲区资源残留。
3) 【对比与适用场景】
| 特性 | 三次握手 | 四次挥手 |
|---|---|---|
| 目的 | 建立可靠连接 | 断开连接 |
| 步骤 | SYN → SYN+ACK → ACK | FIN → ACK → FIN → ACK |
| 关键报文 | SYN(同步)、ACK(确认) | FIN(关闭发送)、ACK(确认) |
| 使用场景 | 客户端首次连接服务端 | 连接使用完毕后释放资源 |
4) 【示例】
HTTP请求流程:
5) 【面试口播版答案】
“TCP三次握手是建立连接的过程,步骤是客户端发送SYN,服务端回复SYN+ACK,客户端再回复ACK,确保双方初始序列号同步。而四次挥手是断开连接,因为TCP是全双工,双方都有数据传输,所以一方先关闭自己的发送端(半关闭),发送FIN,服务端确认后关闭自己的发送端,再发送FIN,客户端确认后完成断开,共四次。在Web服务端开发中,可通过HTTP keep-alive或长连接复用同一个TCP连接处理多个请求,减少每次请求建立连接的开销。”
6) 【追问清单】
7) 【常见坑/雷区】