答疑篇——不是三次握手行吗?握手的时候可以传输数据吗?
Posted 哈哈哈哈洋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了答疑篇——不是三次握手行吗?握手的时候可以传输数据吗?相关的知识,希望对你有一定的参考价值。
为什么不能两次握手或者四次握手:(等同于小于三次,或者大于三次握手行不行)
我们首先得明确三次握手的目的(上上次的文章中有写道,有疑问的话可以去看看):如果只有两次,没有第三次,那么服务端就不知道客户端的接收能力是否正常,所以就从这个出发点去思考。假设两次握手完成了,在传输数据的时候客户端还没有收到(网络拥堵晚到了,但是迟早会收到),可是服务器端并没有察觉,因为客户端没有给服务端任何的反馈,(俺不知道你的接收能力呀)服务端就会疯狂的重新发送,这样就造成了大量的资源浪费
而四次握手当然完全也可以,都能知道对方的发送,接收能力是否正常,但是没有必要,三次能完成没有必要再多发送一次,这样也是造成资源的浪费,所以不多不少当然还是仨啊最好啦~
三次握手可以传输数据吗:
先给出结论:第一,二次不可以,第三次可以;分析如下:
第一次携带数据的话,目前它是不知道服务器端的接收能力是否正常的,如果有人疯狂发起攻击的话,也根本不管你是否能接收,你不能接收还好,能接收我就嘎嘎给你发个不停(想让您的服务器当场裂开),这就会让你服务器端花费很多的空间和时间来存储你发的数据,直到崩溃。在发第二次之前同理,目前服务端是不知道客户端的接受能力是否正常的,也不屑理会你的接收能力是否正常,你要是接收能力正常还并且敢让我携带我就敢让你崩。
第三次,此时客户端已经处于 established 状态,也就是说客户端通过第二次握手已经知道服务端的接收能力正常了,重点是客户端这一方已经单方面的确定了要和它建立连接(也就是说这个点上是很难再有别的东东来捣乱给你发起恶意攻击,因为客户端认为我已经相中你了,并且我觉得我自己是好人,不会让你崩溃的),所以在第三次握手的时候携带点数据返回给客户端一点毛病没有。
谢谢大家的提问hhh,不懂的一起探讨共同进步鸭~
以上是关于答疑篇——不是三次握手行吗?握手的时候可以传输数据吗?的主要内容,如果未能解决你的问题,请参考以下文章
6 张图带你搞懂 TCP 为啥是三次握手,而不是两次或四次?