
1) 【一句话结论】TCP通过三次握手建立连接(同步初始序列号,防止旧连接,确保双方就连接参数达成一致),通过四次挥手终止连接(确保数据完全传输,处理超时,避免资源占用),这些步骤保证了连接的可靠性和有序性。
2) 【原理/概念讲解】
首先解释三次握手:TCP是面向连接的协议,建立连接前需同步初始序列号。步骤为:
接着解释四次挥手:连接终止时,双方需关闭各自发送端。步骤为:
3) 【对比与适用场景】
| 特性 | 三次握手(建立连接) | 四次挥手(终止连接) |
|---|---|---|
| 目的 | 同步初始序列号,建立可靠连接 | 确保数据完全传输,终止连接 |
| 步骤数量 | 3次报文交换 | 4次报文交换 |
| 对称性 | 双向同步序列号 | 双向关闭(全双工) |
| 是否需超时重传 | 是(SYN-ACK超时重传) | 是(FIN报文可能超时重传) |
| 使用场景 | 任何TCP连接建立时 | 任何TCP连接终止时 |
4) 【示例】
以HTTP GET请求为例:
SYN, seq=100;SYN-ACK, seq=200, ack=101;ACK, seq=101, ack=201。FIN, seq=500(数据传输完毕),客户端回复ACK, ack=501;ACK, ack=501(确认客户端FIN),客户端发送ACK, ack=502(确认服务器FIN),连接关闭。5) 【面试口播版答案】
好的,面试官。TCP的三次握手是为了建立连接,确保双方就初始序列号达成一致,防止已失效的连接请求报文段被错误接收。具体来说,步骤是:客户端发送SYN报文(序列号x),服务器回复SYN-ACK(序列号y,确认序列号x+1),客户端再发送ACK(序列号x+1,确认序列号y+1)。这样双方都确认了对方的初始序列号,连接建立。而四次挥手是为了终止连接,确保数据完全传输完毕,避免资源占用。步骤是:客户端发送FIN(序列号u),服务器回复ACK(确认序列号u+1),服务器发送FIN(序列号v,确认序列号u+1),客户端回复ACK(确认序列号v+1)。因为TCP是全双工的,双方都有数据要传输,所以需要各自关闭。这些步骤保证了连接的可靠性和有序性。
6) 【追问清单】
7) 【常见坑/雷区】