tcp差错恢复

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

tcp差错恢复TCP的差错恢复:tcp确认是累积式的,接收⽅不会确认失序的报⽂段,
发送⽅仅需维护已发送但未确认的最⼩序号,以及下⼀个要发送的序号
这样看来,tcp是GBN风格的,但tcp⼜会缓存失序的报⽂段,
并对缓存的报⽂段进⾏选择确认(SACK)
回退N步(Go-Back-N,GBN),也常被称为滑动窗⼝协议
发送⽅超时后,重传所有已发送且未确认的分组,
这些分组是连续的,有的是到达接收⽅然后被丢弃的。

如果只重传第⼀个未被确认的分组,就退化成了停等式。

所以接收⽅累积确认的话,发送⽅超时后必须重传所有未被确认的分组
假设接收⽅已连续收到base ~ k的分组,
如果新收到的分组为k+1,则发回⼀个对k+1的ack,
否则直接丢弃,并发回⼀个对k的ack
接收⽅丢弃所有失序的分组,这些分组将来会被重传。

这种⽅式的优点是接收⽅缓存简单,只需要维护下⼀个希望收到的序号即可,不需要缓存失序的分组。

缺点是造成更多的重传。

GBN⾥的ack是累积确认的,对n的ack表⽰n以前的所有分组都接收到了。

选择重传(Selective Repeat,SR)
发送端:每个分组拥有⾃⼰的逻辑定时器,可以使⽤⼀个硬件定时器模拟多个逻辑定时器。

收到ack,将对应分组标记为已接收,如果该分组序号等于send_base,
则将窗⼝移动到下⼀个未确认的分组处。

接收⽅:确认所有接收到的分组,缓存乱序的分组。

接收到⼀个已缓存的分组,必须发回ack。

窗⼝长度必须⼩于等于序号空间⼤⼩的⼀半。

序号⽤4位表⽰,0~15,窗⼝长度最⼤为8。

相关文档
最新文档