答疑篇——不是三次握手行吗?握手的时候可以传输数据吗?

为什么不能两次握手或者四次握手:(等同于小于三次,或者大于三次握手行不行)

我们首先得明确三次握手的目的(上上次的文章中有写道,有疑问的话可以去看看):如果只有两次,没有第三次,那么服务端就不知道客户端的接收能力是否正常,所以就从这个出发点去思考。假设两次握手完成了,在传输数据的时候客户端还没有收到(网络拥堵晚到了,但是迟早会收到),可是服务器端并没有察觉,因为客户端没有给服务端任何的反馈,(俺不知道你的接收能力呀)服务端就会疯狂的重新发送,这样就造成了大量的资源浪费

而四次握手当然完全也可以,都能知道对方的发送,接收能力是否正常,但是没有必要,三次能完成没有必要再多发送一次,这样也是造成资源的浪费,所以不多不少当然还是仨啊最好啦~

三次握手可以传输数据吗:

先给出结论:第一,二次不可以,第三次可以;分析如下:

第一次携带数据的话,目前它是不知道服务器端的接收能力是否正常的,如果有人疯狂发起攻击的话,也根本不管你是否能接收,你不能接收还好,能接收我就嘎嘎给你发个不停(想让您的服务器当场裂开),这就会让你服务器端花费很多的空间和时间来存储你发的数据,直到崩溃。在发第二次之前同理,目前服务端是不知道客户端的接受能力是否正常的,也不屑理会你的接收能力是否正常,你要是接收能力正常还并且敢让我携带我就敢让你崩。

第三次,此时客户端已经处于 established 状态,也就是说客户端通过第二次握手已经知道服务端的接收能力正常了,重点是客户端这一方已经单方面的确定了要和它建立连接(也就是说这个点上是很难再有别的东东来捣乱给你发起恶意攻击,因为客户端认为我已经相中你了,并且我觉得我自己是好人,不会让你崩溃的),所以在第三次握手的时候携带点数据返回给客户端一点毛病没有。

谢谢大家的提问hhh,不懂的一起探讨共同进步鸭~

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码

)">
< <上一篇
下一篇>>