(小白)学习记录---计算机网络---滑动窗口协议:发送窗口大小与序号空间大小关系

1.概念
  • 发送窗口:假设发送方可连续发送帧,那么发送窗口为发送方已发送但待确认帧的最大个数。比如发送窗口为8,那么发送方如果已经有8个帧没有得到确认,就必须等待某个确认帧到达后才可以继续往下发送帧。
  • 序号:因为可靠数据传输的重传机制,所以必不可免的会产生重复帧问题,这时就需要对发送方的数据帧和接收方的确认帧标明序号。一般序号采用n位二进制的形式,比如3位二进制(000-111)可以表示序号0-7,所以可以使用的序号空间大小为8。如果n位二进制,则序号空间大小为2n,序号最大值MAX_SEQ为2n-1。
  • 累积确认:如果不采用累积确认,就必须对每个数据帧单独确认,有利有弊,利就是可以重传单个帧,弊就是容易造成网络资源的浪费,大量确认帧的利用网络传输。这样,我们可以采用一种累积确认的方式,接收方在收到了一个按序正确到达的帧后不立即发送确认帧,而延时一段时间,若在这段时间又收到了一个按序到达的数据帧,接着等待…过一段时间对一组按序接收的数据帧发送一个累积确认即可,当发送方收到了n号帧的确认,则n-1、n-2等都会自动确认。
2.回退N帧:发送窗口MAX <= 序号空间大小 - 1

原因: 假设发送窗口为8,序列号使用3位2进制(0-7)标识,序号空间也为8,即发送完0-7号数据后,如果又以发送数据了,重新从0号序列号开始发送。
假设一种实际情况,发送方发送了0-7号数据帧,过了不久收到了来自接收方的7号确认帧,然后发送方又连续发了新的0-7号数据帧,然后过不久又收到了来自接收方对7号的确认帧。
在这里插入图片描述
此时便出现了问题,发送方无法分辨:
一、7号确认帧是对之前的一组0-7号数据帧的确认,而新发送的数据全部丢失了 二、7号帧是对新发送的一组数据进行确认。

3. 选择重传:发送窗口 + 接收窗口 <= 序号空间

发送窗口与接收窗口大小相同时,发送窗口MAX <= (序号空间 / 2)
原因:由于选择重传中,接收窗口是大于1的,接收方设有缓存,这也就意味着接收方可以不再是按序接收,只要接收到的数据帧在接收窗口的范围内,即可被接收,即使是乱序到达的,仍然放入缓存,等都按序到达一起提交。为了实现只重传某些数据帧,所以与回退N不同,选择重传的接收方对接收到的每个数据帧单独确认(收到谁确认谁),发送方只重传没有收到ACK的帧,并为每个帧设定一个定时器。
假设序列号空间仍为8(0-7),发送窗口大小为7,避免了回退N帧中的问题。接收窗口与发送窗口大小相同。假设发送方连续发送0-6号帧后,等待确认帧。接收方成功接收到0-6号帧,向前移动窗口如图,回复对接收数据的确认帧。现在假设一种极端情况0-6号确认帧全部丢失,发送方直到0号数据帧定时器超时未收到确认,重发0号数据帧,接收方收到0号数据帧恰好落在自己的接收窗口,当做新帧放入缓存,接收方此时希望接收到的最小数据帧为7号帧,直到接收方收到一个7号帧后,一起交付给网络层,但是这一批并不是正确的帧,而是包含与之前已提交的0-6号重复的数据,故产生了错误。在这种情况下,接收方无法分辨到来的0号帧是对之前帧的重传还是新帧的到来,因为接收方的新老窗口序号发生了重叠
在这里插入图片描述

3. GBN &SR
  • GBN

  • 发送方:
    1.窗口尺寸为N,最多允许N个分组待确认
    2.分组头部包含k-bit序列号(0-2k-1),序号空间2k
    3.累计确认:ACK(n),确认到序号n(包含n)的分组均被正确接收
    4.为空中的分组设置定时器
    5.超时Timeout(n):重传序列号大于等于n,还未收到ACK的所有分组
    6.发送窗口最大值:max(N) <= 2k-1

  • 接收方
    1.ACK机制:发送拥有最高序列号的已被正确接收的分组的ACK
    只需要记住唯一的expectedseqnum
    2.乱序到达的分组直接丢弃,重新确认序列号最大的、按序到达的分组。
    3.接收窗口为1

  • SR

  • 发送窗口 + 接收窗口 <= 2n

  • 发送方
    1.窗口尺寸为N,最多允许N个分组待确认
    2.分组头部包含k-bit序列号(0-2k-1),序号空间2k
    3.只重传没有收到ACK的分组,为每个分组设置一个定时器。
    4.发送窗口 max(N) <= 2k-1

  • 接收方
    1.对每个分组单独确认,设置缓存机制,缓存乱序到达的分组
    2.接收窗口 N > 1 & max(N) <= 2k-1

  • 55
    点赞
  • 167
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值