滑动窗口协议

169 阅读1分钟

GBN协议

发送窗口>=1,接收窗口=1。

发送方

  • 上层调用
    • 如果窗口的总容量未满,则编码并发送。
    • 如果窗口容量满了,就等待直到收到ACK信息为止。
  • 收到ACKn
    • 收到ACK表示接收方已经成功获取数据,并返回当前成功收到的n
  • 计时器超时
    • 如果发送方长时间未收到ACKn,则超时处理。回退N步,重发当前窗口的所有序号数据。

接收方

  • 如果接收方收到正确的序号,则返回ACKn,并且接收窗口向后移动一位。
  • 如果没有接收到预期的序号,则返回ACKn-1,返回上一次成功接收的序号给发送方。

例题:分组编号空间为[0,7],上层有编号为0—4的5个分组等待传输层连续发送。当被上层首次调用时,发送端发送了0、1、2号3个分组,在发送这5个分组的过程中,先后收到确认ACK1、ACKO、ACK2、ACK4、ACK3。

  1. 发送窗口和接收窗口分别是多少
  2. 发送端收到ACK1后,基序号是多少
  3. 发送端收到ACK0后,如何操作
  4. 发送端收到ACK2后,还有多少分组,第一个可用的分组序号是多少

没有按照顺序收到确认序号,不一定说明出现了重传。因为接收端即使按顺序发送,但是在下层选择的传输路径不同,也可嗯那个会不按顺序到达发送端

无标题.png