计算机网络自顶向下方法总结3.4可靠数据传输原理

目录

3.4 可靠数据传输原理

3.4.1 构造可带数据传输协议

3.4.2 流水线可靠数据传输协议

3.4.3 回退N步

3.4.4 选择重传


3.4 可靠数据传输原理

可靠数据传输的实现问题不仅在运输层出现,也会在链路层以及应用层出现。实现这种服务抽象是可靠数据传输协议(reliable data transfer protocl)的责任。

3.4.1 构造可带数据传输协议

      1.经完全可靠信道的可靠数据传输:rdt1.0

首先考虑底层通信是完全可靠的。游狼完全可靠的信道,接收端不需要提供任何反馈信息给发送方。FSM有限状态机详细内容见书中。

        2.经具有比特差错通信的可靠数据传输:rdt2.0

        分组中比特可能受损的模型。此时控制报文有肯定确认(positive acknowledgement)否定确认(negative acknowledgement)。这些控制报文使接收方可以让发送方知道那些内容被正确接收,哪些内容接收有误并因此需要重复。基于这样重传机制的可靠数据传输协议称为自动重传请求(Automatic Repeat reQuest,ARQ)协议

ARQ三种协议功能:差错检测,接收方反馈,重传

由于发送方不会发送一块新数据,除非发送方确信接收方已正确接受当前分组。这样的协议被称为停等(stop-and-wait)协议

如果一个ACK或者NCK分组受损发送方无法知道接收方是否正确接收了上一块发送的数据。遇到含糊不清的ACK和NCK分组时,一般情况是重传当前的数据分组,但是这种方法会引入冗余分组(duplicate packet)

于是就有了rdt2.1中分组的序号(sequence number)来使接收方知道一个数据分组是新的分组还是冗余分组,详细见书中rdt2.1FSM。

rdt2.1使用从接收方到发送方的肯定确认和否定确认。当收到一个受损的分组,接收方将发送一个否定确认。如果不发送NCK而是对上次正确收到的分组发发送一个ACK,我们也能实现与NCK一样的效果,当发送发收到冗余的ACK时就知道接收方没有正确收到跟在被确认两次的分组后面的分组。这就是rdt2.2。详细见书中rdt2.2FSM。

3.经具有比特差错的丢包信道的可靠数据传输:rdt3.0

        现在需要关注两个问题:怎么检测丢包和发生丢包后该做些什么。

如果发送方愿意等待足够长的时间以便确定分组丢失,则它只需要重传该分组。不管是分组或ACK丢失,还是分组和ACK过度延时,发送方只需要:重传。需要等待的时间至少为发送方和接收方之间的一个我往返时延,加上接收方处理一个分组所需要的时间。如果发送方重传分组,但是分组和其ACK并未丢失,那么就在发送方和接收方的通信中引入了冗余数据分组(duplicate data packet)。不过rdt2.2协议已经有足够的功能来处理冗余分组。

为了实现基于时间的重传机制,需要一个倒计时定时器(countdown timer)。详细见书中rdt3.0FSM。因为分组序号在0和1之间交替,因此rdt3.0有时被称为比特交替协议。

3.4.2 流水线可靠数据传输协议

rdt3.0是一个停等协议,对信道的利用率很低。具体例子见书中3.4.2。这是一个形象的网络协议限制底层网络硬件所提供的能力的图例。一个简单解决方式是:不以停等方式运行,允许发送方发送多个分组而无须等待确认。这种技术被称为流水线(pipelining)。同时也出现了一下的影响:

  • 必须增加序号范围
  • 发送方和接收方需要缓存多个分组
  • 所需的序号范围和缓存大小取决于数据传输协议如何处理丢失、损坏以及延时过大的分组。

解决流水线的差错恢复有两种基本方法是:回退N步(Go-Back-N,GBN)选择重传(Selective Repeat,SR)

3.4.3 回退N步

GBN协议也常被称为滑动窗口协议(sliding-window protocol),其中发送,还未确认的分组以及可用,还未发送的分组的长度N常被称为窗口长度(window size)。GBN协议的发送方和接收方的扩展FSM见书中。

GBN发送方必须响应三种类型的事件。

  • 上层的调用
  • 收到一个ACK 对序号为n的分组的确认采取累积确认(cumulative acknowledgement)的方式,表名接收方接收到序号为n的以前且包括n在内的所以分组。
  • 超时事件 如果出现超时,发送方重传所有已发送但还未被确认过的分组。

接收方丢弃所有失序的分组。这种方法的优点是接收缓存简单,即接收方不需要缓存任何失序的分组。丢弃一个正确接收的分组的缺点是随后对该分组的重传也许会丢失或出错,因此甚至需要更多的重传。

3.4.4 选择重传

GBN存在的问题是,当窗口长度和带宽时延积都很大时,单个分组的差错就能够引起GBN重传大量分组。选择重传协议通过让发送方仅重传那些它怀疑在接收方出错的分组而避免不必要的重传。SR接收方将确认一个正确接收的分组而不管其是否按序。详细见书中SR发送方和接收方的事件和动作。

SR对窗口长度有一定的要求,窗口长度必须小于或等于序号空间大小的一半

可靠数据传输机制及其用途的总结见书中表格,包括检验和,定时器,序号,确认,否定确认,窗口,流水线。

在高速网络的TCP扩展中,最长的分组寿命假定为大约3分钟

计算机网络自顶向下方法 第三章 运输层 3.4 可靠数据传输原理相关推荐

  1. 计算机网络自顶向下方法 第三章 运输层 3.6 拥塞控制原理

    计算机网络自顶向下方法总结3.6拥塞控制原理 目录 3.6 拥塞控制原理 3.6.1 拥塞原因与代价 3.6.2 拥塞控制方法 3.6 拥塞控制原理 前面讲到分组丢失时用于可靠数据传输服务的基本原理及 ...

  2. 计算机网络自顶向下方法 第三章 3.5 面向连接的运输:TCP

    计算机网络自顶向下方法总结3.5面向连接的运输:TCP 目录 3.5 面向连接的运输:TCP 3.5.1 TCP连接 3.5.2 TCP报文段结构 3.5.3 往返时间的估计与超时 3.5.4 可靠数 ...

  3. 【2021-11-06 修订】【梳理】计算机网络:自顶向下方法 第三章 运输层(docx)

    计算机网络 知 识 梳 理 (第一版) 建议先修课程:数据结构. 配套教材: Computer Networking - A Top Down Approach, 8th edition James ...

  4. 计算机网络自顶向下方法 第三章 作业习题答案

    https://github.com/jzplp/Computer-Network-A-Top-Down-Approach-Answer P1 设主机A的telnet会话端口号为x,主机B的telne ...

  5. 计算机网络-自顶向下方法 第三章课后习题答案(第七版)

    复习题 R1. a) 就叫这个协议为简单传输协议STP(Simple Transport Protocol).在发送方,STP从发送进程接收不超过1196字节的数据块.目标主机地址和目标端口号.STP ...

  6. 计算机网络自顶向下方法实验报告,计算机网络自顶向下方法试验三报告.doc

    计算机网络自顶向下方法试验三报告 陕西师范大学 计算机网络 实验报告 年级: 2010级 姓名: 陈翠萍 学号: 实验日期: 2012.9.24 实验名称:Wireshark Lab: HTTP 1至 ...

  7. 计算机网络总结:第三章 运输层

    第三章 运输层 3.1 概述和运输层服务 提供在不同主机上运行的app进程之间的逻辑通信 传输协议在终端系统中运行 –发送方:将应用消息分成报文段,传递给网络层 –rcv 方:将片段重新组合成消息,传 ...

  8. 计算机网络自顶向下方法 第六章 链路层和局域网 6.3 多路访问链路和协议

    计算机网络自顶向下方法总结6.3多路访问链路和协议 目录 6.3 多路访问链路和协议 6.3.1 信道划分协议 6.3.2 随机接入协议 6.3.3 轮流协议 6.3.4 DOCSIS:用于电缆以太网 ...

  9. 计算机网络自顶向下方法第四章笔记

    前言:适逢期中考.... 本文参考自很多文章.课本.PPT等(其实仔细观察你会发现很多文字甚至图片都是一致的),如有雷同,纯属不巧合(抱拳) 四.网络层 4.1 概述 4.1.1 转发和路由选择 网络 ...

最新文章

  1. C++中定义类的对象:用new和不用new的区别
  2. SSD数据可靠性问题分析
  3. SignalR实现服务器与客户端的实时通信
  4. ORACLE -- ORA-12520
  5. 网关Ocelot功能演示完结,久等了~~~
  6. 【飞秋】关于结构体和结构体指针的P-INVOKE
  7. 1.4编程基础之逻辑表达式与条件分支 12 骑车与走路
  8. Hadoop3集群搭建之——hive添加自定义函数UDTF (一行输入,多行输出)
  9. 从零开始玩人工智能-机器人服务-03
  10. C++中的构造函数小结
  11. ansible中变量注册 register的使用
  12. 什么是4G工业智能网关?与DTU有什么区别
  13. 显示杂谈(1)-Gamma到底是个什么鬼
  14. 如何选择靠谱的插画培训课程
  15. 如何把软件彻底卸载的硬核方法!
  16. inner join和outer join的区别
  17. 3GPP TS 23501-g51 中英文对照 | 4.4.7 MSISDN-less MO SMS Service
  18. 计算机网口百兆改千兆,家里是千兆网,但是网口是百兆怎么办?
  19. licode服务器处理流程
  20. 为什么会有工频干扰_工频干扰产生原因及解决方案【转载】

热门文章

  1. EM and Variational Inference Derivation
  2. 鸿蒙系统的诗,苏轼诗词介绍 苏轼《,奥特曼名字大全,鸿蒙系统年底问世,,江城子》有哪几首词?...
  3. 学习如逆水行舟,只有坚持不断的学习,才能保持进步!我置顶了这些公众号
  4. 辅助驾驶功能开发-功能规范篇(05)-智能限速辅助SLA
  5. android多点触控,图片的拖拽与放大缩小
  6. 赵福全对话余凯:深度解析汽车芯片创新
  7. SpringBoot集成Minio搭建自己的分布式文件服务器(Minio集成篇)
  8. nc6单据模板设置没有可选的模板问题解决
  9. 再谈BOM和DOM(1):BOM与DOM概述
  10. java 自动点击网页_JS脚本实现网页自动秒杀点击