今天我用最简单的方式,带你彻底搞懂什么是三次握手。摘要:它是 TCP 协议建立连接前,客户端和服务器之间“互相打招呼 + 确认身份”的过程。
📍 什么是 TCP 三次握手?
它是 TCP 协议建立连接前,客户端和服务器之间“互相打招呼 + 确认身份”的过程。
为什么要三次?因为两次不够信,四次又嫌多。三次刚刚好,确保“你能听见我”、“我也能听见你”、“那我们正式开始对话”。
🔁 第一握:SYN(你好,我想找你聊聊)
客户端先发一个带 SYN 标志的数据包,意思是:
“我想和你建立连接,我的序号是 1000。”
这是客户端发出的第一步,相当于你给服务器发了一句“你好”。
但这时候服务器还没回应,所以连接还没建立。
🔁 第二握:SYN + ACK(我收到了,你呢?)
服务器收到 SYN 后,如果愿意建立连接,会回一个带 SYN 和 ACK 标志的包:
“你好,我也准备好了,我的序号是 5000,同时我也确认收到了你刚才的 1000。”
这一步非常关键,表明服务器既告诉了客户端“我在”,又确认了客户端的“存在”。
🔁 第三握:ACK(OK,一起开始吧)
客户端最后再发一个 ACK:
“我也收到了你刚刚说的 5000,确认无误。”
三次握手完成,连接才算真正建立。
此时,客户端和服务器的状态都从 SYN_SENT / SYN_RCVD 进入 ESTABLISHED,接下来就可以正式传数据了。
💡 那为什么要三次?不能两次吗?
不能。只用两次,客户端能确认自己发出去了,但无法确认服务器收没收到他的确认。
三次的意义就是:双方都能确认“我说的话你听到了”。
如果少一次,就像两个人打电话只听到了“喂”,谁也不确定是不是能正常通话。
🎯 总结:
TCP 三次握手的核心不是数据传输,而是「互相确认连接是否可靠」。
它保证了后续的数据传输不会“石沉大海”。
而且值得注意的是,前两次握手一般不携带数据,只有第三次 ACK 可以开始携带数据进行请求。
来源:吴天琪