前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于滑动窗口协议的笔记

关于滑动窗口协议的笔记

作者头像
xcywt
发布2018-03-28 11:09:14
1.3K0
发布2018-03-28 11:09:14
举报
文章被收录于专栏:xcywtxcywt

滑动窗口协议

还可以看我的另一篇博客,有更详细的介绍:http://www.cnblogs.com/xcywt/p/8401523.html

属于TCP协议中的一种应用,用于网络数据传输时的流量控制,以避免拥塞的发生。 该协议允许发送方在停止并等待确认前发送多个数据分组。由于发送方不必每发送一个分组就停下来等待确认,所以该协议可以加速数据的传输,提高网络吞吐量。 TCP利用一个滑动的窗口来告诉发送端对它所发送的数据能够提供多大的缓冲区,由16位定义,最大为65535个字节。 滑动窗口本质上是描述接收方的TCO数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。这个窗口大小为0时,发送方将停止发送数据。启动坚持定时器,等待这个窗口变成非0. ( 持续定时器,收到对方的零窗口时,就启动该定时器,时间到了就发送一个字节的探测报文,对方此时会回应自身的窗口大小,如果仍然为0,就重置定时器,继续等待。 )

窗口合拢:当窗口左边界向右靠近时,这种现象发生在数据被发送方确认时。 窗口张开:窗口的右边界向右移动的时候。这种现象发生在接收端处理的数据的时候。 窗口收缩:窗口右边界向左移动时,这种现象不常发生。 TCP采用可变大小的滑动窗口大小是为了取得更好的性能。 TCP规定的窗口大小是由接收方通告的,通过采取慢启动和拥塞避免算法等机制来使带宽和性能取得最佳 传递效率问题: 单个发送字节,单个确认,会使网络中增加很多不必要的报文(比如需要20字节的IP头,20字节的TCP头)。所以我们的原则是一次尽可能多发几个字节,或者窗口空余较多的时候通知发送方一次发送多个字节: Nagle算法: 1)若发送应用程序要把发送的数据逐个字节的送到TCP的发送缓存,则发送方就把第一个字节先发送出去,其余的先缓存起来 2)当第一个字节得到确认时(也得到了网络情况和对方窗口大小),再把缓冲区的剩余字节组成合适大小的报文发送出去。 3)当到达的数据已达到发送窗口大小的一半或达到报文段的最大长度时就立即发送一个报文段(对于达到最大长度的情况:做法是让接受方等待一段时间,或者接收方获得足够的空间容纳一个报文段或接收方缓存有一半缓存时再通知发送方发送数据)

关于拥塞控制可以看这个:http://www.cnblogs.com/xcywt/p/8414189.html 拥塞控制 就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。 常用的方法就是: 1)慢启动、拥塞控制 2)快重传、快恢复

发送方维护一个拥塞窗口(cwd)和慢启动门限(ssthresh)。 cwd开始为1,确认一次之后变成2,成指数增加。直到到达ssthresh,改为拥塞避免算法。 之后若发生拥堵,cwd变为1,ssthresh减半,又进入慢启动。 若连续收到3次某个包的ack,则进入快启动,快重传。 ssthresh减半,cwd减为ssthresh减半后是数值,执行拥塞避免算法(高起点,线性增长) 拥塞避免算法(让窗口缓慢增长,每经过一个往返时间RTT就把发送方的cwd加1,线性缓慢增长)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档