滑动窗口协议-百度百科

滑动窗口协议,是TCP使用的一种流量控制方法。该协议允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。  

概念

        只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动【发送窗口:发送方已发送但尚未被确认的帧的序号队列的界限,其上下界分别为窗口的上下沿,上下沿的距离为窗口尺寸。】
  收发两端的窗口按照以上规律不断地向前滑动,因此这种协议又称为 滑动窗口协议
  当发送窗口和接收窗口的大小都等于 1时,就是 停止等待协议停止等待协议(stop-and-wait)是最简单但也是最基础的数据链路层协议。很多有关协议的基本概念都可以从这个协议中学习到。
  当发送窗口大于1,接收窗口等于1时,就是 回退N步协议
  当发送窗口和接收窗口的大小均大于1时,就是 选择重发协议
  协议中规定,对于窗口内未经确认的分组需要重传。这种分组的数量最多可以等于发送窗口的大小,即 滑动窗口的大小n减去1(因为 发送窗口不可能大于(n-1),起码 接收窗口要大于等于1)。


工作原理

  TCP协议在工作时,如果发送端的TCP协议软件每传输一个数据分组后,必须等待接收端的确认才能够发送下一个分组,由于网络传输的时延,将有大量时间被用于等待确认,导致传输效率低下。为此TCP在进行数据传输时使用了滑动窗口机制

  TCP滑动窗口用来暂存两台计算机间要传送的数据分组。每台运行TCP协议的计算机有两个滑动窗口:一个用于数据发送,另一个用于数据接收。发送端待发数据分组在 缓冲区排队等待送出。被滑动窗口框入的分组,是可以在未收到接收确认的情况下最多送出的部分。滑动窗口左端标志X的分组,是已经被接收端确认收到的分组。随着新的确认到来,窗口不断向右滑动。
  TCP协议软件依靠滑动窗口机制解决 传输效率流量控制问题。它可以在收到确认信息之前发送多个数据分组。这种机制使得 网络通信处于忙碌状态,提高了整个网络的吞吐率,它还解决了端到端的通信流量控制问题,允许接收端在拥有容纳足够数据的缓冲之前对传输进行限制。在实际运行中,TCP滑动窗口的大小是可以随时调整的。收发端TCP协议软件在进行分组确认通信时,还交换滑动窗口控制信息,使得双方滑动窗口大小可以根据需要动态变化,达到在提高 数据传输效率的同时,防止拥塞的发生。 
        称窗口左边沿向右边沿靠近为 窗口合拢,这种现象发生在数据被发送和确认时。
  当窗口右边沿向左移动时将允许发送更多的数据,称之为 窗口张开。这种现象发生在另一端的接收进程读取已经确认的数据并释放了TCP的接收缓存时。
  当左边沿向右移动时,称为 窗口收缩。Host Requirements RFC强烈建议不要使用这种方式。但TCP必须能够在某一端产生这种情况时进行处理。
  如果左边沿到达右边沿,则称其为一个 零窗口

注意事项


  (1)发送方不必发送一个全窗口大小的数据。
  (2)来自接收方的一个报文段确认数据并把窗口向右边滑动,这是因为窗口的大小是相对于确认序号的。
  (3)窗口的大小可以减小,但是窗口的右边沿却不能够向左移动。
  (4)接收方在发送一个ACK前不必等待窗口被填满。


参考:

  • TCP/IP详解 卷一:协议

    自动重传请求(Automatic Repeat-reQuest,ARQ) http://baike.baidu.com/view/407054.htm


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值