为什么不是两次握手?为什么不是三次挥手?(个人理解)

(1) 为什么不是两次握手?

TCP三次握手的目的是为了建立可靠链接,至于三次握手过程如下图,
总结一句话代表三次握手:“请让我知道你知道了我”
该图来源于在这里插入图片描述
备注:上图来源于https://baijiahao.baidu.com/s?id=1654225744653405133&wfr=spider&for=pc

之所以是三次握手,是因为TCP协议初衷就是要设计出一个可靠的链接服务,而为了满足建立可靠链接这个需求,设计人员设计了两个标志性参数作为可靠的保证:seq和ack确认。只有双方都收到自己的seq被对方确认,才会认为这条链接是可靠的
如果只是两次握手, 那么至多只有链接发起方的起始序列号能被确认, 另一方的序列号则得不到确认。换句话说,如果是两次握手建立链接,第二次握手时发生丢包,那么客户端就无法与服务器建立链接。

(2) 为什么不是三次挥手?

四次挥手的过程如下:
第一次挥手:客户端主动请求关闭,表明客户端没有数据发送,但可以接收收据。
第二次挥手:服务器给客户端确认,表明收到客户端的关闭请求,但服务器还有数据要发送,让客户端等等。
第三次挥手:服务器没有数据发送了,也请求关闭连接,但仍然接收数据。
第四次挥手:服务器必须要等待客户端一个确认,才会关闭连接。之后客户端经过一段超时等待(即确认服务器已经断开)也关闭连接。
在这里插入图片描述
备注:上图来源于https://baijiahao.baidu.com/s?id=1654225744653405133&wfr=spider&for=pc

为什么不是三次挥手?
如果是三次挥手。那么情况挥手情况就会如下:

第一次挥手:客户端主动请求关闭,表明客户端没有数据发送,但可以接收收据。
第二次挥手:服务器也向客户端发起关闭连接请求,并确认客户端的关闭链接。
第三次挥手:客户端回复ACK确认,双方链接关闭。

那么问题来了,如果在第三次挥手中客户端回复ACK后,服务器的数据还没发完但只有三挥手,服务器只能选择关闭连接,这样客户端的数据就会不完整,与TCP可靠链接初衷相违背

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值