开发者社区> 问答> 正文

wireshark从入门到精通(协议排错安全篇)7

上一节说了TCP可能就有童鞋问如果我发的数据分片完怎么组合,都发乱了那我数据不恢复不了吗?
这里我就要说一下我们的seq序列号的作用了,通过他进行排序,也就是TCP的有序传输。
我们还有一点就是要知道seq是如何增长的,我们的seq值假如=100  len长度=7  那么我们下一个的seq就是107  通过107确定我们前面的数据接收到了不然可以通过前面的SEQ+len减去后面的seq来确定哪一部分的数据丢弃如何进行重传即可。


我们的TCP是双向也就意味着每方都维护着一个seq,当然ack也自然维护者,另一方面我们的数据还得考虑每次传输的大小,专业的说是窗口大小,假设大小固定,每次发送数据过去然后不断的清空缓存然后继续发送,比如固定窗口大小5000,第一次发送2000还有3000,第二次发送2000还有1000,然后发送数据确确认ack我们清空缓存继续重新发送5000继续减小,但是一旦多个客户端同时进行这个就会变得缓存就需要一个滑动窗口大小来进行解决。


滑动窗口根据我们的实际情况进行调整,比如一个5000的窗口大小,发送2000之后第二次发送2000的时候我这里就还有1000不够下一次,如果不调整数据就会丢弃,所以我进行调整告诉他我现在固定大小1000,就会发送的调整为1000,这样就解决了数据大小发送接收时候的尴尬局面。
   当然我们的数据或者服务器出问题的时候,就必须启动秘密武器零窗口,告诉我现在零窗口不能发送给我,但是我们保持着连接的关系,直到可以发送的时候我发送一个固定大小值然后继续进行。

展开
收起
我的中国 2016-11-29 20:44:15 3393 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载