计网——18可靠数据传输原理

设计可靠数据传输协议

SW0协议

信道不丢包
解决方案:
接到正确PKT,发送一个肯定确认(ACK)
收到错误PKT,发送一个否定确认(NAK),重传原PKT
停止等待(stop-and-wait, SW)协议
实用中有不少漏洞
在这里插入图片描述

SW1协议

信道丢包:
SW0的发送方会一直等待ACK,引起协议死锁
解决方案:
增加超时定时器
每发PKT,启动超时定时器,称为超时重传机制
重传时间略大于RTT
在这里插入图片描述

SW2协议

确认分组丢失:
出现了分组冗余的差错
解决方案:
增加一种新机制:发送序号
序号空间要较小
如发送序号3 bit,在0~7间循环使用
在这里插入图片描述

SW3协议

发送方过早超时:
收到重复的确认,无法分辨对应哪个分组
解决方案:
增加确认序号机制,分辨出确认对应哪个分组
综合以上机制为SW协议,或自动重传请求(ARQ)
在这里插入图片描述
设计可靠数据传输协议机制:
差错检测、接收方确认(肯定/否定)、重传、定时器和序号(数据和确认)

二.流水线协议

流水线: 发送方允许发送多个、传输中、未应答的分组
必须增加序号范围
发送方和/或接收方设有缓冲
两种流水线协议:
回退N步(go-Back-N), 选择性重传(S-R)
流水线: 提高协议利用率,如下图:
在这里插入图片描述

处理流水线差错

处理停等协议出现差错时,需要多种机制
当流水线差错时,对所需序号窗口和缓冲的要求取决于数据传输协议处理丢失、损坏及时延过大分组的方式
恢复流水线差错的两种基本方法
回退N步(Go-Back-N,GBN)
选择重传(Selective Repeat, SR)

回退N步协议(Go-Back-N)

  1. 发送方:
    在分组首部需要K比特序号,2k=N
    “窗口”最大为N, 允许N个连续的没有应答分组
  2. ACK(n): 确认所有的(包括序号n)的分组 - “累计ACK”
    可能收到重复的ACK
    对每个传输中的分组用同一个计时器
  3. timeout(n): 若超时,重传窗口中的分组n及所有更高序号的分组

在这里插入图片描述
注:
接收方根据滑动窗口的序号按序接收分组窗口内连续
窗口中失序分组及后面将被丢弃后面可能正确收到多个
发送方采用超时机制来重传出现丢失或差错的分组
接收方采用累积确认的方式可以不一一确认
GBN协议的接收窗口的长度为1
在这里插入图片描述

选择性重传(Selective Repeat)

问题:GBN是否还能够改善?(单一差错可能导致大量不必要重传)
接收方分别确认所有正确接收的报文段缓存分组, 以便最后按序交付给上层。发送方只需要重传没有收到ACK的分组
发送方定时器对每个没有确认的分组计时
发送窗口:N个连续的序号
也需要限制已发送但尚未应答分组的序号
在这里插入图片描述
选择性重传算法
在这里插入图片描述
在这里插入图片描述
窗口长度问题
例子:
序号: 0, 1, 2, 3
窗口长度 = 3
接收方:在(a)和(b)两种情况下,接收方没有发现两者间的差别!
在 (a)中不正确地将冗余的当新的,而(b)中不正确地将其当作冗余的

在这里插入图片描述

序号长度与窗口长度的关系:
窗口长度小于等于序号空间的一半

用途小结

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值