有没想过TCP为什么要先握手再发送数据
再看计较机收集的时辰,始终有一个题目老是弄不大白,那就是TCP为什么要先三次握手,然后再是发送数据,最后在断开。留意这里的题目是为什么要先,再次夸大的是先三次握手在发数据的疑问,而不是把“TCP为什么要先三次握手”放在百度上百度后呈现的“TCP为什么不是2可能4次握手的题目”,偶然辰还真的是不得不吐槽百度的算法还真不如google,下图为证: 额。。。至于google的搜刮因为要用到翻墙的软件,影响欠好就不贴图了。。。继承我们得话题,答复一下这个题目吧,虽然这是我的感悟,照旧那句话“如果有题目,照旧请到评述区写出本身的看法,以免误人后辈哈”。 要答复这个题目起首得知道TCP报文段的布局,如下图: 要说的就是TCP报文段中的窗口这16位字段部门,这里窗口的浸染就是为了实现流量的节制,为什么会有流量的节制的引入???它是这样来的:如果发送方发送数据的速率大于了吸取方应用措施取数据的速率(假设数据传输进程不拥塞)那么,吸取方就会呈现失贞的征象,也就是把数据包围了,以是数据的发送就要获得节制,就引入了窗口这16位。怎么引入的?? 是这样的:发送方和吸取方都有一个缓存区(用来吸取从收集传来的数据,并提交给应用措施),对付吸取方来说,它要维护两个变量值,一个是应用措施从缓存读出去的数据(out来暗示);另一个是从收集吸取的数据(in来暗示),,那么在吸取方一个缓存内里剩余的空间就是Buffer-(in - out) = window(假设Buffer暗示缓存的数目个数,in - out 暗示应用措施没读的个数,也就是缓存被占用的个数,总的减去占用的就是可以操作的空间的个数用window来暗示),那么这个window就是窗口所要写入的值,接管方会把这个值转达给发送方暗示我尚有几多空间可以操作。 同样发送方也会有一个缓存,同样要维持两个变量值:一个是已经发送的数据个数(send);另一个是已经获得确认的数据个数(acked),那么send - acked就暗示已经发送出去了,可是还没有获得确认的数据的个数,换句话就是正在传输的数据(这样领略好点,可是有点差池),那么要让吸取方缓存数据不被包围,那么正在发送的数据要小于吸取方的窗口(send - acked < window)。 写以上这些是为了深入领略窗口的观念!!!!仅此罢了为领略TCP为什么要握手做筹备!!! 在简朴说一下三次握手的进程:
留意也就是在三次握手时就成立了缓存,那么也就是说,A与B要通讯,两者之间必需先约定好一些参数,好比这里的缓存,那么依据上面的理论来说,成立缓存的目标就是为了停止不行靠的传输数据(也就是为了停止数据被包围),以是在传输数据之前,两者之间先做一些约定,换句话就是在经贸易务时先谈好所在和时刻,在经贸易务。 那么,总的来说,所谓的链接就是为了分派内存等资源,然后停止不行靠的传输,以免污了TCP靠得住传输的名头!!! 【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |