计算机基础
计算机网络
【Q182】简述 TCP 的四次挥手,三次挥手可以吗

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

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

Author 回答者: manondidi (opens in a new tab)

第一次挥手 客户端 发送 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回执回来

Author 回答者: manondidi (opens in a new tab)

第一次挥手 客户端 发送 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将会一直等待

Author 回答者: changshou83 (opens in a new tab)

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

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