IT评测·应用市场-qidao123.com
标题:
TCP三次握手
[打印本页]
作者:
用多少眼泪才能让你相信
时间:
2025-3-13 13:36
标题:
TCP三次握手
TCP三次握手
两个核心概念
SYN包:SYN=1,表示请求建立连接(相当于说“我要和你通话!”)。
ACK包:ACK=1,表示确认收到数据(相当于说“我收到了!”)。
三次握手
第一次握手:客户端发一个 SYN=1 的包给服务端
目的:“我要和你建立连接!”
第二次握手:服务端发送SYN+ACK包给客户端
目的:
ACK=1:“我收到你的请求了!”
SYN=1:“我也要和你建立连接!”
第三次握手:客户端发一个 ACK=1 的包给服务端
目的:“我收到你的回应了,连接正式建立!”
一句话总结流程
客户端:SYN(我要连接) → 服务端:ACK+SYN(同意+我也要连接) → 客户端:ACK(同意) → 开始传数据!
复制代码
为什么TCP要三次握手,两次却不可以
两次握手时,服务端发送完SYN-ACK后,无法确认客户端是否真的收到了。如果这个包丢失,服务端会以为连接已创建(开始浪费资源),但客户端现实没收到,导致服务端空等。三次握手的最后一次ACK就是让服务端明白知道:“客户端已准备好,双方可以可靠通信了。
核心问题(两次握手的致命缺陷):
无法验证客户端的接收能力
服务端发送 SYN+ACK 后,若客户端未返回 ACK,服务端无法确定客户端是否能正常接收数据,可能建立“半开连接”(服务端以为连接成功,客户端实际未建立)。
无法抵抗网络丢包和延迟干扰
若服务端的 SYN+ACK 丢失,客户端不会发送数据,但服务端会一直等待,导致资源被长期占用。
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4