系列文章目录
什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 vs 电路交换
计算机网络性能(1)——速率、带宽、延迟
计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率
计算机网络体系结构概念
OSI参考模型基本概念
OSI参考模型中非端-端层(物理层、数据链路层、网络层)功能介绍
OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍
TCP/IP参考模型基本概念,包括五层参考模型
网络应用的体系结构
网络应用进程通信
网络应用对传输服务的需求
Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
Cookie技术
Web缓存/代理服务器技术
传输层服务概述、传输层 vs. 网络层
传输层——多路复用和多路分用
传输层——UDP简介
传输层——可靠数据传输原理之Rdt协议
- 系列文章目录
- 流水线机制与滑动窗口协议
- GBN(Go-Back-N)协议
- SR(Selective Repeat)协议
流水线机制与滑动窗口协议
流水线机制允许发送方在收到ACK之前连续发送多个分组。这样链路上同时就可以有很多分组,那么资源的利用率整体就提高了。实现流水线机制需要:
- 更大的序列号范围。原来的0和1这两个序列显然不够用了
- 在发送方和/或接收方需要更大的存储空间以缓存分组
下面是Rdt协议与流水线机制的一个简单对比图:
在计算机网络中要想实现流水线机制就需要滑动窗口协议。
- 窗口是一个抽象的概念,用它管理那些发出去但还没确认的分组。所以窗口也是允许使用的序列号范围。所以如果窗口窗口尺寸为 N,意味着最多有 N个等待确认的消息。
- 滑动窗口。是因为随着协议的运行,窗口在序列号空间内向前滑动。
- 滑动窗口协议:GBN, SR
如下图所示,窗口尺寸是N,窗口左边(绿色的)是那些已经发出且确认的分组,窗口内黄色部分的是发出去但没确认的,如果收到最左边黄色的分组的确认消息,这个窗口就可以向右边滑了,蓝色的代表还可以使用的序列号范围。
GBN(Go-Back-N)协议
发送方:
- 分组头部包含k-bit序列号
- 窗口尺寸为 N,最多允许 N个分组未确认
- 采用累积确认的机制。也就是说要确认到序列号n(包含n)的分组均已被正确接收
- 为空中的分组设置计时器(timer)
接收方:
- ACK机制: 发送拥有最高序列号的、已被正确接收的分组的ACK
- 对于乱序到达的分组:直接丢弃,并不会缓存这些已经收到的但不是期望的分组。
SR(Selective Repeat)协议
GBN的缺陷:在重传的时候会重传很多分组,比如当N这个序列号的分组丢失的时候,会重传N以及N以后那些没确认的分组。这样会影响性能。改进的方法是不采用累积确认的机制,而是单个确认,同时也不丢弃那些乱序的分组,而是缓存起来。这就是SR协议。
- 接收方对每个分组单独进行确认。并且设置缓存机制,缓存乱序到达的分组
- 发送方只重传那些没收到ACK的分组。这时需要为每一个分组设置定时器,当某个分组超时后,就重传这个分组
- 发送方窗口没什么变化,依旧是N个连续的序列号,限制已发送且未确认的分组
SR比GBN多了一个接收方的窗口。
窗口前面的是已经接收到的并且按序到达的分组,窗口中灰色的是希望收到但没有收到的,红色的是乱序到达的分组,对于乱序到达的分组,接收方将它们缓存起来并且发送了ACK,当这些分组前面的分组都到达的时候就可以一起提交给上层。蓝色的是还可以接收的序列号范围。
同时要注意发送方的窗口和接收方的窗口是不同步的。彼此并不知道对方的窗口处于什么状态。
下面是一个示例:
同时还要注意:当序列号有k个时,发送方窗口的尺寸和接收方窗口的尺寸和不能大于2^k。