网络技术-链路层可靠传输协议

可靠传输

在链路层传输中,可能出现的错误包括数据位出错、分组丢失、分组失序、分组重复等。可靠传输服务希望实现发送端发送什么,接收端就接收到什么。虽然下面将在链路层这一章节中介绍SW、GBN、SR三种协议,但要明确的是,可靠传输服务并不仅仅局限于链路层,其他各层均可选择实现可靠传输。

停等协议 - SW

停等协议 (Stop and Wait, SW)的发送方每发送一帧数据就停止,并等待接收方发送确认帧,收到确认后再发送下一帧。

确认与否认、超时重传

发送方发送数据后等待接收方ACKNAK的响应,并启动超时计时器,如果一定时间收不到响应则启动超时重传。

确认丢失

如果确认分组丢失,接收方需要能感知到数据分组是否重复,因此数据分组需要编号,在停等协议中,由于每发送一个数据就进行等待,因此使用一位编号就够了。

确认迟到

如果确认分组迟到,在图示情况中,发送方需要感知到第二个ACK是对第二个DATA 0的重复确认,而不是对DATA 1的确认。因此确认分组也需要使用一位编号。

回退N帧协议 - GBN

回退N帧协议 (Go Back N, GBN)允许发送方连续发送多个帧(即发送窗口可以大于1),以解决停等协议信道利用率低的问题。

发送方可在未收到接收方确认分组的情况下,将序号落在发送窗口内的多个数据分组全部发送出去;但接收方的接收窗口大小仅为1,也就是只有接收到了此窗口所代表的序号的分组,接收方才会回复ACK并且移动接收窗口。同理,发送方收到了发送窗口中最早的那个序号对应分组的ACK,才会移动发送窗口。

累计确认

接收方不一定要对收到的数据逐个确认,也可以对最后一个分组进行确认。ACK n表示序号为n及其之前的分组都已经被正确接收。称这种方法为累计确认。例如图中,接收方只对1号、4号数据分组进行确认,并且ACK 1在传输过程中丢失,发送方仍然可以根据收到的ACK 4判断0~4号分组都已经被正确接收。

有差错情况

例如发送方发送了5/6/7/0/1五个分组,但5号数据分组丢失,此时由于到达的四个分组都与接收窗口序号不匹配,接收方会将其丢弃,并重复响应ACK 4

选择重传协议 - SR

选择重传协议 (Selective Repeat, SR)加大接收窗口的长度(即接收窗口也可以大于1),缓存乱序到达的帧,这样不至于在一些情况下需要重传所有未被确认的帧从而导致效率降低。

与GBN一样,发送方可在未收到接收方确认分组的情况下,将序号落在发送窗口内的多个数据分组全部发送出去;接收方可接收未按序到达但没有误码并且序号落在接收窗口内的数据分组;发送方收到未按序到达的确认分组时,对其进行记录,以防止其相应数据分组的超时重发,但发送窗口不能向前滑动。为了使发送方仅重传出现差错的分组,接收方不再采用累积确认,而是对每个正确接收的数据分组进行逐一确认

例如发送方发送了0/1/2/3四个分组,但2号数据分组丢失,此时0号、1号按序到达,接收窗口可以向前移动;而3号分组可以被接收,但接收窗口不能移动。

返回的ACK到达发送方之后,发送方可以把发送窗口的起点移动到2号,同时记录3号分组已接收。移动发送窗口后,可以把新纳入窗口的4号、5号发送出去。

如果4号、5号可以被正常接收,并且返回的ACK 4ACK 5可以正确到达发送方,那么最后会使得发送窗口和接收窗口都卡在2的位置,并最终触发2号分组超时重传。


回退N帧协议 - GBN

1:若采用后退N帧的ARQ协议进行流量控制,帧编号字段为7位,则发送窗口的最大长度为

A .7 B.8 C.127 D.128

解题:

发送窗口+接收窗口<=帧序号

m+1<=帧序号

帧编号7位,表示占7个二进制位,7个2进制位可以表示的数据范围就是,2的7次方128

m+1<=128 ,m<=127

SR协议:选择重传协议,重传出现差错的数据帧或重传计时器超时的数据帧,选择重传协议中,接收方逐个地确认正确接收的分组,不管接收到的分组是否有序,只要正确接收就发送选择ACK分组进行确认。

SR需要对单个帧进行确认,GBN可以累计确认

2:一个使用选择重传协议的数据链路层协议,如果采用了5位的帧序列号,那么可以选用的最大接收窗口是 16.

解题:发送端窗口+接收端窗口<=序列号

发送窗口=接收窗口

x+y = 36 , 2的5次方

x=y

y = 16

2X <=序列号

注:窗口上边界-下边界+1 = 窗口的大小, 对于首尾连续的情况,可以用取模
(上边界-下边界+1)mod 序列号 <=窗口大小

3:对于窗口大小为n的滑动窗口,最多可以有()帧已发送但没有确认

A.0 B.n-1 C.n D.n/2

发送窗口的大小<=窗口总数-1

4:对于无序接收的滑动窗口协议,若序号位数为n,则发送窗口最大尺寸为

A. 2n次方-1,B. 2n C.2n-1 D.2的n-1次方

发送端窗口+接收端窗口<=帧序号

发送端窗口=接收端窗口


相关推荐
。puppy1 分钟前
HCIP--3实验- 链路聚合,VLAN间通讯,Super VLAN,MSTP,VRRPip配置,OSPF(静态路由,环回,缺省,空接口),NAT
运维·服务器
颇有几分姿色10 分钟前
深入理解 Linux 内存管理:free 命令详解
linux·运维·服务器
千天夜1 小时前
使用UDP协议传输视频流!(分片、缓存)
python·网络协议·udp·视频流
EricWang13581 小时前
[OS] 项目三-2-proc.c: exit(int status)
服务器·c语言·前端
算法与编程之美2 小时前
文件的写入与读取
linux·运维·服务器
长弓三石2 小时前
鸿蒙网络编程系列44-仓颉版HttpRequest上传文件示例
前端·网络·华为·harmonyos·鸿蒙
xianwu5432 小时前
反向代理模块
linux·开发语言·网络·git
follycat2 小时前
[极客大挑战 2019]HTTP 1
网络·网络协议·http·网络安全
earthzhang20213 小时前
《深入浅出HTTPS》读书笔记(5):随机数
网络协议·http·https
xiaoxiongip6663 小时前
HTTP 和 HTTPS
网络·爬虫·网络协议·tcp/ip·http·https·ip