计算机网络——传输层-滑动窗口协议

计算机网络系列博文——目录

流水线可靠数据传输协议

停等协议的效率极低,发送方的理论效率不到链路物理上限的千分之一

流水线
允许发送方发送多个分组而无需等待确认

流水线技术:

  1. 分组编号 每个输送中的逻辑分组(即不计重传)必须有唯一序号
  2. 分组缓存 发送方和接收方必须缓存多个分组
  3. 差错恢复 包括回退N步和选择重传两种基本方法

滑动窗口协议

  • 用于实现流水线机制的技术

窗口

  • 允许使用的序列号范围
  • 对发送方,已被发送但未被确认的分组的许可序号范围以及可用序号的范围
  • 窗口长度为N:最多有N个等待确认的消息

滑动窗口

  • 随着协议的运行,窗口在序列号空间内向前滑动

重传机制

  • 根据重传机制的不同,有回退N步和选择重传两者实现

回退N步(Go-Back-N,GBN)

以回退N步作为差错恢复机制的滑动窗口协议

分组序号

  • 基序号 最早的未确认分组的序号
  • 下一个序号 下一个待发送分组的序号,即最小的未使用序号

累积确认 对序号n的ACK代表接收方已经正确接收序号不超过n的所有分组

发送方行为

  1. 上层调用 若窗口未满,产生分组并发送之,同时更新相应状态;若窗口已满,暂不发送(缓存数据,通知上层,同步机制等方式)
  2. 收到ACK
  3. 超时事件 若出现超时,重传所有已发送且未确认的分组

接收方行为

对按序到达的分组,接收并发送ACK;对失序分组,直接丢弃,并重新确认序列号最大的、按序到达的分组

特点

接收方只需要记住一个待接收分组序号
接收方没有分组缓存

回退N步的问题 单个分组的差错能引起大量分组的重传

状态机

发送方.png
接收方.png

选择重传(Selective Repeat,SR)

选择重传协议让发送方仅重传那些它怀疑在接收方出错的分组,以避免不必要的重传。

新机制

  • 不再使用累积确认,ACK只确认特定分组。
  • 接收方设置缓存,缓存乱序到达的分组
  • 发送方只重传那些没收到ACK的分组,为每个分组设置定时器

发送方行为

  • 从上层收到数据 检查下一个可用于该分组的序号,若序号位于发送方窗口内,则打包数据并发送。否则暂不发送(缓存,通知上层,同步机制等待)
  • 分组超时 每个已发送未确认分组都有一个逻辑定时器,一定时间内未收到该分组的ACK则重传之
  • 收到分组i的ACK 若i在窗口内,将该分组标记为已确认。若i=窗口基序号,则窗口前移。若窗口前移了且有序号落在窗口内的未发生分组,则发送这些分组。

接收方行为

  • 确认正确接收的分组。若该分组失序,则将之缓存直至所有该分组之前的分组都被接收,再将一批连续的分组按序交付上层。若该分组已被正确接收(说明对该分组的ACK丢失或损坏了),仍要发送一个ACK。

状态机

发送方.png
接收方.png

序列号空间大小限制

问题:序列号空间大小与窗口
尺寸需满足什么关系?
NS+NR<=2k

底层信道具有分组重排序的可能

即分组通过链路网络传播时,分组序列的接收顺序和分组序列的发送顺序可能不一致。

具有分组重排序可能性的信道,可视为信道具有缓存分组,并在将来任意时刻释放所缓存的分组的可能。

实际应用中,通常假定分组在底层信道中存活时间不会超过某个固定值(如3分钟)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 运输层协议概述 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是...
    srtianxia阅读 7,330评论 0 2
  • 本书结构是自顶向下的,所以请按下列顺序阅读: 1.计算机网络自顶向下--应用层2.计算机网络自顶向下--运输层3....
    牛富贵儿阅读 8,144评论 0 3
  • 【计算机网络】传输层 传输层协议概述 传输层协议为运行在不同host上的进程提供了一种逻辑通信机制。使得端到端不需...
    666真666阅读 6,428评论 0 4
  • 计算机网络七层模型中,传输层有两个重要的协议:(1)用户数据报协议UDP (User Datagram Proto...
    Q南南南Q阅读 5,694评论 0 3
  • 一、基础概念 服务对象:进程 功能:逻辑通讯 载体:报文段 工作环境:端系统 运输层协议  TCP:为进程提供可靠...
    IT白阅读 3,165评论 0 0