TCP滑动窗口
2021/8/26 6:06:24
本文主要是介绍TCP滑动窗口,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
what:
滑动窗口:是传输层为了进行流量控制而采取的一种措施。由接受方来告诉发送方自己窗口的大小,从而来控制发送方的速率。
滑动窗口分为:发送窗口和接受窗口。
滑动:发送方根据接受窗口来决定自己的发生窗口。发送窗口的位置会随着接受确认报文,而不断向后滑动;并且发生窗口的大小,也会随着接受窗口的大小而不断变化。
接受窗口:由接收方来填,该值是接收方自己接受缓存还能容纳数据的大小。决定了发送方的发送窗口大小。
具体见下图:
当收到36的ack,并且发出46~51后的滑动窗口情况:
案例:
滑动死锁及解决方案:
现象:接收方现在接收窗口是0,发送了0窗口的报文。是后面接收窗口有不是0了,于是发了size=10的报文。但是size=10的报文丢了,就会出现发送端一直等接收端的非0窗口通知,而接收端一直等数据的到来。
方案:TCP为每对连接建一个持续计时器。只要TCP一方收到0窗口的通知,就启动持续计时器。若持续计时器设置的时间到了,就发送一个探测报文(仅携带1字节的数据),接收方收到探测报文后,在确认该报文时,将自己的窗口值发回去。
糊涂窗口症:
现象:接收的缓存慢以后,接受进程1次只读1个数据。然后向发送方发送1个窗口的确认报文,后面发送方再发送1个数据。这样继续,每次都只发送1个数据效率会非常差。
方案:延迟ACK或者数据发送。对接收方,延迟ACK的发送,在这段时间内接收窗口可能放大。对发送方,可以不理会小窗口通知(不马上发小包,延迟一会),从而小包可能变大。
这篇关于TCP滑动窗口的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-03微信支付提示下单账户与支付账户不一致-icode9专业技术文章分享
- 2024-07-03微信支付提示订单号重复-icode9专业技术文章分享
- 2024-07-02微服务启动nacos注册上去了,但是一直没有收到请求-icode9专业技术文章分享
- 2024-07-02如何检查文件的编码格式-icode9专业技术文章分享
- 2024-07-02sublime 更改编码格式-icode9专业技术文章分享
- 2024-06-30uniAPP 实现全屏左右滚动滚动的效果-icode9专业技术文章分享
- 2024-06-30如何在本地使用授权或插件-icode9专业技术文章分享
- 2024-06-30伪静态规则配置方法汇总-icode9专业技术文章分享
- 2024-06-29易优CMS安装常见问题汇总-icode9专业技术文章分享
- 2024-06-28易优新手必读安装教程-icode9专业技术文章分享