滑动窗口

如果采用同步的数据传送方式即发送一个数据包就等待接收方一个ack确认信息的话,传输效率太低。

采用滑动窗口:

发送方的发送缓存内的数据都可以被分为4类:

  1. 已发送,已收到ACK
  2. 已发送,未收到ACK
  3. 未发送,但允许发送
  4. 未发送,但不允许发送

其中类型2和3都属于发送窗口。

接收方的缓存数据分为3类:

  1. 已接收
  2. 未接收但准备接收
  3. 未接收而且不准备接收

遵循原则:

  1. 超时重传
  2. 累计确认:1,只要收到某号的确认帧,就认定前面的帧全部接受到,2,

数据传输过程:

  1. 首先发送端发送A,B,C,D四个包,但是A,B丢失,只有C,D到达接收端。此时因为接收端没有收到A,所以不回复ACK包。根据超时重传原则发送端重传A,B,C,D四个包,这次全都到达了。
  2. 接收端先获得A,发ACK(A+1为A的确认信息)包A,但是中途丢失;获得B后,根据累计确认原则,发D的ACK包,然后窗口滑动。再次获得C,D后,连续回复2个D的ACK包,其中C对应的ACK包丢失。
  3. 发送端连收2个D的ACK包,说明4个包对方都已收到,窗口滑动,发E,F,G,H包,其中G包丢失。现在整个序列的状态:ABCD是已发送已确认,EFGH是已发送未确认,I~S是不能发送。
  4. 接收端先收到E,发ACK包;收到F后发F的ACK包;未收到G,还是发F的ACK包;收到H,还是发F的ACK包。不幸的是,三个ACK包全都丢失。
  5. 发送端收到E的ACK包,窗口向右滑动一位;然后再发送F,G,H,I,其中F丢失。
  6. 接收端获得I,因为没有G,只好回复F的ACK包。相继收到G,H包。
  7. 接收端根据累计确认,连发两个I包,其中H对应的丢失。窗口向右滑动。
  8. 发送端接收I的ACK包后,向右滑动四位。发送J,K,L,M四个包,后面不再分析。
  9. 还有一种情况:发送方发ABCD,接收方都收到然后向右滑动,但回复的ACK包全丢了。发送方未收到任何ACK, timeout后会重发ABCD,此时的接收方按累计确认的原则,收到ABCD后只会重发D的ACK,发送方收到后向右滑动。

参考https://blog.csdn.net/yao5hed/article/details/81046945。
确认号:
机A填充进报文段的确认号是主机A期望从主机B收到的下一字节的序号:假设主机A已经收到了来自主机B的编号为0-535的所有字节,同时假设它打算发送一个报文段给主机B,主机A等待主机B的数据流中字节536及其后的所有字节,所以主机A会在它发往主机B的报文段的确认号字段中填上536。https://www.cnblogs.com/love-jelly-pig/p/8639121.html http://www.togogo.net/article/1351.html
https://blog.csdn.net/ligupeng7929/article/details/79597423

滑动窗口多是指接收方根据自己可接收缓存大小而定的,但由于网络传输的问题,发送方发送的数据大小还需要受拥塞窗口的控制。拥塞窗口的大小遵循:

  • 慢开始和拥塞避免:慢启动的目的是:防止一开始速率过快,导致耗尽中间路由器存储空间,从而严重降低TCP连接的吞吐量。拥塞避免的目的是:当拥塞发生时,降低网络的传输速率。这可以通过调用慢启动的动作来降低网络的传输速率
  • 快速重传和快速恢复:快速重传就建立在 重复确认的基础上,tcp 协议规定发送方连续三次 (tcp 规定的次数,教科书上说,有点随意的规定 ? )收到同一个段的重复确认,不需要等待计时器超时就直接进行重传。(https://blog.csdn.net/jackcily/article/details/80549804)

http://www.360doc.com/content/18/0703/21/99071_767479723.shtml

在分析TCP传输速率慢的原因时往往从限速、其他流量影响、qos设置、线路质量问题等方面考虑,但TCP协议不同于UDP协议,即使不加限速并排除其他流量干扰,实际传输速率也不一定能逼近带宽,因为还存在其他制约因素。
TCP协议有一套完备的确认机制以保证所有数据包都被正确送达,在TCP传输过程中,发送方在发送了一定数量的数据包后,必须等待接收方发回一个确认包,只有确认接收正常以后,发送方才能继续发送。发送方在收到确认包之前允许传输的未经确认的最大数据量是由一个值决定的,即tcp拥塞窗口(cnwd),而等待这个确认包需要一定的时间开销,与往返时延(RTT) 关系密切。

假设接收方处理能力足够的前提下TCP传输速率符合如下计算公式:
    传输速率=拥塞窗口大小/往返时延

来自:http://www.doc88.com/p-7959752344313.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值