文章目录

  • 前言
  • 一、构造可靠传输协议
    • 1.rdt1.0
    • 2.rdt2.0
    • 3.rdt2.1
    • 4.rdt3.0
  • 二、GBN
  • 总结

前言

在学习3.5节TCP传输之前,我们需要先了解到可靠数据的传输原理,对于网络通信安全来说,确保信息的完整性是必不可少的。信息的完整性意为,数据在主机与主机的传输过程中,信息未被恶意攻击所篡改,或者保证数据不会损坏,可靠数据传输虽然不是保证这些的主体,因为没有完全可靠的数据传输信道,但是这也是保证数据传输过程中数据不会损坏的重要因素。如果的确要将所有网络中最为重要的“前10个”问题排名的话,可靠数据传输僵尸名列榜首的候选者。
书中的这一节主要考虑单向数据传输,数据是由发送端到接收端的。


一、构造可靠传输协议

书中将按照简单——>复杂的过程来将可靠数据传输协议展现出来,介绍协议的版本分别为:rdt1.0、rdt2.0、rdt3.0.

1.rdt1.0

rdt1.0称作经完全可靠信道的数据传输,这个版本的协议非常简单易懂,我们将底层传输信道看作完全可靠的。这里给出rdt1.0的FSM(有限状态机)协议图:

FSM简称状态机(State Machine),表示“有限个“状态以及在这些状态之间进行转换(Transation)和动作(Action)等行为的数学模型。FSM是一种算法思想,简单而言,有限状态机由一组状态、一个初始状态、输入和根据输入及现有状态转换为下一个状态的转换函数组成。现实世界中存在大量具有有限个状态的系统:钟表系统、电梯系统、交通信号灯系统、通信协议系统、正则表达式、硬件电路系统设计、软件工程,编译器等,有限状态机的概念就是来自于现实世界中的这些有限系统。了解了FSM的概念后,我们来看书中的这两张图。
图a为rdt1.0的发送端,rdt为可靠传输的表示方法,发送端初始等待系统上层调用,得到系统上层调用需要发送的信息后,将数据打包pack=make_pkt(data),并使用可靠信道传输rdt_send(pack),将打包的数据发送出去。
图b为rdt1.0的接收端,接收端等待发送的消息,使用可靠信道接收到发送端传输过来的包的信息后,使用extract(packet,data),并deliver_data(data)解包传输至上层。这样一组包的信息就从发送端到接收端完成了此次协议,该协议十分简单易懂,几乎没有什么别的操作,协议完全基于传输过程完全可靠,该协议优点是,因为有了完全可靠的传输信道,所以接收端不用传输接收完成的ACK确认报文发回至接收端,很方便(这么完美的信道当然是非常方便,但实际过程中这样的协议不太适用现阶段的很多网络传输)。

2.rdt2.0

rdt2.0称为经具有比特差错信道的可靠数据传输,这个协议模型已经接近现阶段实际生活中的条件,底层信道更为实际的模型是分组中的比特可能会受损的模型,在讲述该模型协议之前,我们回顾一下正常讲话的流程,例如老师对你下达了命令。
老师:回家路上记得带好伞。
你:收到。
在正常进行交流的同时,当发送端(老师)发送了一个报文,接收端(你)会对这句话进行一个肯定or否定的回复。如果接收端(你)没有听清楚老师的话,会让发送端(老师)再重复一遍这段话,这些传输回复的报文称为控制报文,用于发送方确认接收方是否接收到发送的信息,是否传输数据有误,如果传输数据有误则需要重发,基于这样的重传机制的可靠数据传输协议称为自动重传请求(ARQ)协议。ARQ包含了三种协议功能(1.差错检测2.接收方反馈3.重传),下图为rdt2.0的协议FSM图,其中采用了差错检验、肯定确认与否定确认:

我们可以从这个图上看到,相比于1.0的发送端FSM图,发送端多了一个状态(等待ACK或NAK),这里就是接收接收端是否正确接收发送短信息的标志。
图a,为发送端,初始状态下,等待上层的调用,与1.0相似的是,将上层需要发送的data打包,不同的是,多加入了一个Checksum(校验和),这里是为了发送到接收端之后,接收端对这个传输的信息进行检测,是否传输过程中有丢包或者损坏,对比校验和,如果相等则证明接收消息正确。我们先不讲图a右侧状态,我们按照正常数据报文传输的过程来讲,所以我们先看图b。
图b,为接收端,初始状态下接收到发送端发送的消息,这里对发送端的消息进行检查,如果正确则解包将data数据取出,并朝发送端发送ACK正确接收报文,如果在报文传输过程中有错误,校验和不正确,则发送不正确NAK标志给发送端。
我们最后再来看图a,图a右侧状态接收错误的报告NAK时候,重新将这个data的数据包重新发送,如果接收到的消息是ACK报文,则证明传输完成,传输完成则什么都不做,等待上层调用发送下一个数据包消息。从这里我们可以看出,整个发送端发送下一个数据包的标志是,只有得到接收端确认发送的数据没有错误才会进行下一个包的发送操作,这样的协议我们称之为停等协议。
你也许想说这个接触到实际的协议是否可以直接运作在网络中,但是还是有个致命的缺点的,我们没有考虑到ACK与NAK报文的传输是否完整,如果接收端发送的ACK数据报文也丢包,没有传输到发送端,则整个协议流程会卡死。

3.rdt2.1

为了解决2的最后提出的问题,我们将数据分组中添加一个新的字段,让发送方对其数据分组编号,即将发送数据分组的序号放在该字段。下图是rdt2.1的FSM图:


我们可以从这两张协议图中看出2.1比2.0协议多出了一倍的状态,发送方加入了对接收端发送的ACK与NAK报文的确认,如果发送方接收到接收方发送的ACKorNAK报文错误则重发数据包,如果接收正确则不做任何操作。

4.rdt3.0

rdt3.0又称为经具有比特差错的丢包信道的可靠数据传输,第1、2、3点rdt的版本阐述的都是数据损坏行为,未考虑到,数据可以产生的丢包行为,rdt3.0解决了数据传输过程中的丢包行为,但如何确定是否有包丢失并进行合理处理,rdt3.0中加入了倒计数定时器,在一定的时间量过期后,可中断发送方,rdt3.0做到:1.每发送一个分组启动计时器。2.丢包行为导致定时器中断。3.定时器终止。下图为rdt3.0的FSM图:

在rdt3.0书中介绍的最后提出了rdt3.0的运行,比特交替协议:

图中分别定义了,条件是a:无丢包操作。b:分组丢失。c:丢失ACK。d:过早超时。的接收方和发送方所进行的操作。但这一切协议都是停等协议,必须要求一个序号完全到达之后才发送下一个分组,这会导致的问题就是效率非常低下,可用的包的传输效率使用不当,所以基于这个问题,提出了流水线可靠传输据传输协议。

二、GBN

在GBN协议中,允许发送方发送多个分组,并不是需要停等的一个分组,书中提供的GBN Java小程序,网站如下:https://media.pearsoncmg.com/bc/abp/cs-resources/products/product.html#student,isbn=0133594149

中的配套网站,进入网站后可以看到交互式动画。(这里使用了网页翻译,所以显示的是中文,其实是英文网站)

选择第三章的javaGBN小程序可以看到:

我们清楚地看到这个协议中的基序号与窗口长度,基序号从0开始,窗口长度为4.协议在发送方发出接受方确认收到后,会反向发送ACK报文:

蓝色块为接收方接收到了ACK后已被确认,黄色块是正在发送确认ACK报文。我们可以清楚的看到,在前两个已被确认的ACK接收到后,移动了滑块,确认了我们发送的报文是在这个范围内。所以GBN协议也被称作滑动窗口协议。
下面两张图给出了协议的FSM描述与传输框架:


我们可以看到,在分组窗口为4的情况下,如果中间有分组2丢失则接收方拒绝接受分组2之后的所有消息(丢弃),是因为包的数据必须按照有序交付,在分组2超时后,系统重新发送分组2与2之后的数据。这个协议有一个缺点就是,如果中间发生丢包行为,会一直不间断地进行重传操作,无论丢失包之后的包是否正确到达接收端,接收端一律丢弃。
为了解决上述问题,改进的GBN如下:


这里改进的核心就是,针对所丢失的包进行重传,而不是重新传输从丢失的包到丢失包+N的这一段的数据,这里所带来的便捷提升的效率是之前的几倍。
这个改进后的协议特点与注意事项是:只有接收方接收到了特定的丢失的包后,才会交付这一段内的所有包从图3-26就可以看出,而不是一直接收下去,一直接受下去会导致序号重叠,导致接收方接收到的序号不知道是新的数据还是老的数据,所以这里的滑动窗口N也是有限制的,这里必须要求N窗口长度必须小于或等于序号空间大小的一半,以图3-26来看,序号空间大小为10,则窗口长度必须小于等于5.

总结

这一节的知识点就讲到这里啦~~~~~ 因为码字码了好久,所以总结估计卸不了太多东西,我这里也有这本书的电子版哈,如果需要我评论区问我我会发。其实这节刚开始的部分比较好懂,后面这一部分尤其是GBN,需要结合文中的协议流程图去理解会快太多了,真的,欢迎大家交流学习哈,我可能有些地方理解不到位的地方大家也可以多交流。

计算机网络(自顶向下方法)学习记录---3.4 可靠数据传输原理相关推荐

  1. 计算机网络--自顶向下方法 学习笔记之计算机网络和因特网

    什么是Internet? 因特网的具体构成描述 因特网是一个世界范围的计算机网络,即它是一个互联了遍及全世界数十亿计算设备的网络. 有趣的因特网互联设备 数以亿计的互联计算设备:便携机.智能手机.平板 ...

  2. 计算机网络--自顶向下方法学习笔记

    第一章 计算机网络和因特网 协议:定义了两个或多个通信实体之间交换的报文的格式和顺序,以及报文发送和/或接收一条报文或其他事件所采取的动作. 分组:将源报文划分为较小的数据块 存储转发传输:交换机能够 ...

  3. 计算机网络 自顶向下方法 学习笔记 第一章

    第一章 计算机网络和因特网 1.1 什么是因特网 1.1.1 网络 1.1.2 计算机网络 1.1.2.1 计算机网络的分类 1.1.3 互联网(从具体构成角度了解Internet) 1.1.4 协议 ...

  4. 《计算机网络——自顶向下方法》学习笔记——应用层

    计算机网络--应用层 应用层 应用层协议原理 网络应用程序体系结构 进程通信 可供应用程序使用的运输服务 因特网提供的运输服务 应用层协议 Web和HTTP HTTP概况 非持续连接和持续连接 HTT ...

  5. 《计算机网络——自顶向下方法》学习笔记——计算机网络安全

    计算机网络--计算机网络安全 计算机网络安全 什么是网络安全 密码学的原则 对称密钥密码体制 公开密钥加密 报文完整性和数字签名 密码散列函数 报文鉴别码 数字签名 端点鉴别 鉴别协议 ap1.0 鉴 ...

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

    计算机网络自顶向下方法总结3.4可靠数据传输原理 目录 3.4 可靠数据传输原理 3.4.1 构造可带数据传输协议 3.4.2 流水线可靠数据传输协议 3.4.3 回退N步 3.4.4 选择重传 3. ...

  7. 《计算机网络——自顶向下方法》学习笔记——网络层:数据平面

    计算机网络--网络层:数据平面 网络层:数据平面 网络层概述 转发和路由选择:数据平面和控制平面 网络服务模型 路由器工作原理 输入端口处理和基于目的地转发 交换 输出端口处理 何处出现排队 分组调度 ...

  8. 计算机网络自顶向下方法(二)——应用层

    不作理想的巨人,行动的矮子 文章目录 写在前面 应用层协议原理 网络应用程序体系结构 客户-服务器(C/S)体系结构 对等体(P2P)体系结构 C/S和P2P体系结构的混合体 进程通信 分布式进程通信 ...

  9. 计算机网络-自顶向下方法-笔记【第2章-应用层】

    计算机网络-自顶向下方法-笔记[第2章-应用层] 学习的课程及图片来源:中科大郑烇.杨坚全套<计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)>课 ...

最新文章

  1. Go 知识点(09)— for select 作用于 channel
  2. 计算机论专业文范文,电脑论文范文例文 关于电脑和栏方面毕业论文范文30000字...
  3. 任天堂经典游戏可以体感操作了,打开网页就能玩,击败泰森不是梦
  4. 使用Java基于数据流直接抽取word文本
  5. 在场景中输出横向或纵向压缩的中文字符
  6. 在一个div里,列表样式图片进行float,实现水平排序
  7. 仍然报错_only_full_group_by配置,竟让所有应用报错?
  8. c++ switch 字符串参数_其实我们可以少写点if else和switch
  9. 想换行做 5G 的开发者到底该咋办?
  10. 使用Windows 8 的“任务计划”令HydraVision更加精彩
  11. 蓝桥杯 14校4-回文数字  观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。   本题要求你找到一些5位或6位的十进制
  12. 当代研究生精神状态:早c晚a?!
  13. linux tc 限速,TC限速
  14. Cadence Orcad Capture全局修改元件属性方法及技巧图文及视频演示
  15. 赵雅智_名片夹(5)_Android中listview可折叠伸缩仿手风琴效果(动态)
  16. js取整,保留小数位数、四舍五入、科学记数法及去掉数字末尾多余的0
  17. 悠悠古舟渡,浅浅时光去
  18. Android 云笔记APP的实现
  19. python批量读取图片处理并保存
  20. 蓝海卓越计费管理系统 debug.php 远程命令执行漏洞

热门文章

  1. [渝粤教育] 郑州轻工业大学 机械制图1 参考 资料
  2. 网上查询类网站!太恐怖了,什么都能查!!!!!(请注意最后)特实用!收藏吧!
  3. 金融专业计算机需了解到什么,金融工程专业对计算机的能力要求到底是什么?...
  4. 使用easywechat退款
  5. 常见公文批示用语集锦
  6. 栅格地图建立-Grid-Mapping
  7. 基于Java毕业设计新城街道社区的健康档案管理平台源码+系统+mysql+lw文档+部署软件
  8. 用Python一键免登录下载某度文库各类PPT课件
  9. 李想:霸道总裁——80后亿万富翁的发家史!
  10. 【MySQL基础总结】索引的使用