极客时间返利平台,你可以在上边通过山月的链接购买课程,并添加我的微信 (shanyue94) 领取返现。

# 简述 TCP 的四次挥手,三次挥手可以吗

Issue

欢迎在 Gtihub Issue 中回答此问题: Issue 183 (opens new window)

第一次挥手 客户端 发送 fin 给服务端 第二次回收 服务端 发送 ack 给客户端 中间服务端 可能还有数据传输 第三次挥手 服务端 发送 fin 给客户端 第四次挥手 客户端 发送 ack 给 客户端 上述四个挥手 分别 类比 两人再打电话 A 对 B 说 我说完了 B 对 A 说 我知道了 中间 b 还有话说 B 再对 A 说 我也说完了 A 再对 B 说 我知道了 双方挂断电话

如果只有两次 即 A 对 B 说我说完了 而没有 ack, A 不确定 B 是否知道"A 我说完了"这句话 B 听到没有 同理,第三次挥手 B 对 A 说我说完了, 还没等 A 回答我知道了就挂断,有可能 A 不知道 B 已经说完.

tcp 协议之所以可靠 就是由于 三次握手四次挥手 建立的连接, 以及 ack 回执机制, 如果传输过程中连接断开 又会重新三次握手建立连接, 如果一直没收到 ack, 发送方会一直发送相同的消息,等待另一方发 ack 回执回来

第一次挥手 客户端 发送 fin 给服务端 第二次回收 服务端 发送 ack 给客户端 中间服务端 可能还有数据传输 第三次挥手 服务端 发送 fin 给客户端 第四次挥手 客户端 发送 ack 给 客户端 上述四个挥手 分别 类比 两人再打电话 A 对 B 说 我说完了 B 对 A 说 我知道了 中间 b 还有话说 B 再对 A 说 我也说完了 A 再对 B 说 我知道了 双方挂断电话

如果只有两次 即 A 对 B 说我说完了 而没有 ack, A 不确定 B 是否知道"A 我说完了"这句话 B 听到没有 同理,第三次挥手 B 对 A 说我说完了, 还没等 A 回答我知道了就挂断,有可能 A 不知道 B 已经说完.

tcp 协议之所以可靠 就是由于 三次握手四次挥手 建立的连接, 以及 ack 回执机制, 如果传输过程中连接断开 又会重新三次握手建立连接, 如果一直没收到 ack, 发送方会一直发送相同的消息,等待另一方发 ack 回执回来

1.A 对 B 说 我说完了 2.B 对 A 说 我知道了 中间 b 还有话说 3.B 再对 A 说 我也说完了 4.A 再对 B 说 我知道了 双方挂断电话

题主 把 两次挥手改成三次挥手了,我还是拿挂电话的例子 如果步骤 4 没了 就挂断,那么 B 不确定 A 是否收到 B 已经说完了, 而直接挂断 ,如果 A 没收到 A 将会一直等待

第一次:客户端通知服务端我要结束了 第二次:服务端告诉客户端我知道了 第三次:服务端通知客户端我准备好了 第四次:客户端通知服务端表示我知道了

-- update 3 月 31 日 -- 三次握手还有确认哪条连接的作用(根据 ACK)

Last Updated: 2/23/2022, 11:56:07 AM