跳到主要内容

流水线与回退 N 步

停等协议为什么浪费链路?​

  • 比特交替协议本质是停等协议: 一个 RTT 内只允许一个分组在途;
  • 后果: 链路容量远大于单个分组的传输速率, 链路长期空闲;

流水线需要满足哪些条件?​

  • 流水线: 允许发送方连续发送多个分组而不必逐个等待确认;
  • 序号范围: 必须扩大, 以区分在途的多个分组;
  • 缓存: 发送方与接收方都要能缓存多个分组的状态;

停等和流水线

回退 N 步协议的发送方如何工作?​

  • 窗口: 在流水线上确定长度为 N 的发送窗口;
  • 定时器: 只为最左侧已发送未确认的分组设置一个定时器;
  • 超时: 一旦超时, 重传窗口内所有已发送但未确认的分组;
  • 滑动: 窗口随着最左侧分组被确认而向右滑动;

回退 N 步协议的接收方如何工作?​

  • 失序处理: 收到失序分组直接丢弃, 不缓存;
  • 等待: 只按序接收窗口内的分组, 直到缺失分组到达;
  • 代价: 单个分组丢失会导致其后所有已发送分组被重传;

回退 N 步协议 回退 N 步协议