TCP的三次握手和四次挥手之三次握手真的能保证传输可靠吗?

之前分析过为什么要三次握手,因为两次握手不可靠。

比如 

A告诉B打算建立连接,可能过了很久B才收到这个消息,B表示同意并发了个确认消息给A,这时两次握手了,倘若连接建立了,那么很可能A早已关闭连接,而B以为连接已经建立(遵循两次握手建立连接的原则),B就傻等A,浪费资源(该例中A是客户端,B是服务器)。

这个例子常常用来说明两次握手不可靠,那么难道三次握手就可靠吗?

当A收到来自B的确认消息决定发个反馈,也就是第三次握手给B,倘若这时B的网络出了故障或者B关闭连接了或者这消息传输过程丢失了。那么根据三次握手原则,连接建立,对A来说,自是如此,然而对B只经历了两次握手,连接尚未建立。或者B收到了第三次握手,但此时已距离第二次握手过去很久了,那么B以为建立了连接,A却早已关闭连接。此时连接也没有建立成功。

看的出来,三次握手也不能保证连接就可靠,那么追加第四次握手呢?一样的,因为每次握手都是对收到上次握手的确认,却不能保证本次握手就能顺利到达。换句话说,握手发出的那一刻,只能说明上一次消息传递是顺畅的,却不能保证现在网络是畅通的。

所以陷入死循环,无论多少次握手,严格意义上来说都不能保证建立可靠连接。

那么三次握手的意义何在?

它的意义就在于让双方都知道“对方能收到自己的消息,同时自己能收到对方”的消息,也就是说线路是双向通顺的。当然了,这个双向通顺严格来说只限于之前的时间,接下来的时间就不能保证了。

四次乃至更多的握手也只能说明每次最新握手之前双方是通顺的,握手发出之后的时间也不能保证,本质上这与

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值