赞
踩
之前分析过为什么要三次握手,因为两次握手不可靠。
比如
A告诉B打算建立连接,可能过了很久B才收到这个消息,B表示同意并发了个确认消息给A,这时两次握手了,倘若连接建立了,那么很可能A早已关闭连接,而B以为连接已经建立(遵循两次握手建立连接的原则),B就傻等A,浪费资源(该例中A是客户端,B是服务器)。
这个例子常常用来说明两次握手不可靠,那么难道三次握手就可靠吗?
当A收到来自B的确认消息决定发个反馈,也就是第三次握手给B,倘若这时B的网络出了故障或者B关闭连接了或者这消息传输过程丢失了。那么根据三次握手原则,连接建立,对A来说,自是如此,然而对B只经历了两次握手,连接尚未建立。或者B收到了第三次握手,但此时已距离第二次握手过去很久了,那么B以为建立了连接,A却早已关闭连接。此时连接也没有建立成功。
看的出来,三次握手也不能保证连接就可靠,那么追加第四次握手呢?一样的,因为每次握手都是对收到上次握手的确认,却不能保证本次握手就能顺利到达。换句话说,握手发出的那一刻,只能说明上一次消息传递是顺畅的,却不能保证现在网络是畅通的。
所以陷入死循环,无论多少次握手,严格意义上来说都不能保证建立可靠连接。
那么三次握手的意义何在?
它的意义就在于让双方都知道“对方能收到自己的消息,同时自己能收到对方”的消息,也就是说线路是双向通顺的。当然了,这个双向通顺严格来说只限于之前的时间,接下来的时间就不能保证了。
四次乃至更多的握手也只能说明每次最新握手之前双方是通顺的,握手发出之后的时间也不能保证,本质上这与
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。