首先,三次握手。目的是建立可靠的连接,确保双方都能发送和接收数据。三次握手的步骤是:客户端发送SYN,服务器响应SYN-ACK,客户端再发送ACK。这里的关键是序列号的交换和确认,防止已失效的连接请求到达服务器,导致资源浪费。第二次握手传回SYN是为了告知客户端服务器的初始序列号,这样双方才能同步。
然后是四次挥手。关闭连接时,由于TCP是全双工的,每个方向都需要单独关闭。服务器收到FIN后可能还有数据要发送,所以不能立即关闭,导致需要四次挥手。为什么不能合并ACK和FIN,因为服务器可能需要处理剩余数据。
另外,TIME_WAIT状态的原因。客户端等待2MSL是为了确保最后的ACK到达,并让旧连接的报文消失,避免混淆。这也是四次挥手中重要的部分。
三次握手是TCP协议建立可靠连接的核心机制,确保双方具备双向通信能力并同步初始序列号(ISN)。具体过程如下:
SYN-SENT
状态,表示请求建立连接SYN-RCVD
状态ESTABLISHED
状态,连接正式建立必要性:
四次挥手用于安全终止全双工通信,确保双方数据发送完毕且无残留报文。具体过程如下:
FIN-WAIT-1
状态,表示不再发送数据 CLOSE-WAIT
状态,此时仍可发送剩余数据LAST-ACK
状态,请求关闭反向连接TIME-WAIT
状态,等待2MSL(报文最大生存时间)后关闭;被动关闭方收到ACK后立即关闭 必要性:
TIME-WAIT
状态等待2MSL,防止旧连接的残留报文干扰新连接,同时确保最后的ACK被接收 阶段 | 目的 | 核心动作 | 状态变化 |
---|---|---|---|
三次握手 | 建立双向通信,同步序列号 | SYN、SYN+ACK、ACK | SYN-SENT → SYN-RCVD → ESTABLISHED |
四次挥手 | 安全终止连接,处理残留数据 | FIN → ACK → FIN → ACK | FIN-WAIT → CLOSE-WAIT → LAST-ACK |
通过三次握手和四次挥手,TCP协议实现了连接的可靠建立与释放,解决了网络延迟、丢包和重复报文等问题,是保障互联网数据传输稳定的基石
场景:你(客户端)想给朋友(服务器)打电话,确保双方都能正常通话。
步骤:
核心:通过三次确认,确保双方都能正常沟通,避免因网络问题导致一方无法通话。
场景:通话结束后,双方需要确认对方没有其他话要说,才能安全挂断电话。
步骤:
核心:通过四次确认,确保双方都没有未说完的话,避免一方提前挂断导致信息丢失。
阶段 | 生活比喻 | 核心动作 |
---|---|---|
三次握手 | 打电话确认双方能正常通话 | 拨号 → 确认 → 开始通话 |
四次挥手 | 挂电话确认双方没有未说完的话 | 说再见 → 确认 → 对方说再见 → 确认挂断 |
通过这个比喻,可以直观理解三次握手和四次挥手的作用:确保通信的可靠性和完整性,就像打电话时需要确认双方都能听到,挂电话时要确认双方都没有未说完的话
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。