传输层--可靠数据传输的基本原理


可靠的数据传输:

       网络top 10 问题之一就是解决网络的可靠的数据传输。

       什么是可靠:即不丢,不错,不乱

rdt : reliable data transfer 

rdt 1.0 : 独立 sender  receiver

rdt 2.0 :引入的新机制:重传,差错检测,NAK,ACK。

解决的问题是:数据不错。接受方显式反馈是否接受到正确数据。

rdt 2.1 : ACK/NAK被破坏如何解决? 可以直接重传分组吗?不可以,会导致重复的分组。

解决方案:发送方对每个分组增加序列号,接受方丢弃重复分组。

rdt 2.2 :取消NAK,作简化

接收方通过ACK告知最后一个被正确接受的分组,在ACK消息中显示的加入被确认分组的序列号。

rdt 3.0:

如果分组丢失怎么处理?需要定时器

“校验和+序列号+ACK+重传+定时器” 

rdt 3.0 能够正确工作,但性能很差,网络协议限制了物理资源的利用;

如何解决这个问题,做好改进?

》》》》缓存

发送方和接收方都设置缓存,启用流水线机制提高了效率。

滑动窗口协议:GBN,SR 

  GBN(go back to n):

  窗口尺寸为N,发送方最多允许N个分组未确认。

  为空中的分组设定计时器,发送方只有一个计时器,超时重传所有未收到确认的分组。

  累积ACK确认机制

  接收方没有缓存,不会缓存乱序到达的分组,直接丢弃乱序到达的分组。

 

 

SR协议:

  设置缓存机制,缓存乱序到达的分组

  为每个分组设置计时器,只重传没有收到ACK的分组。       

posted @   stu--wy  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示