TCP向调用它的因特网应用所提供的服务模型(服务抽象)

数据可以通过一条可靠的信道进行传输。借助于可靠的信道,传输比特就不会受到损坏或丢失,而且所有数据都是按其发送顺序进行交付。

可靠传输协议

实现服务模型就需要可靠的传输协议。但是由于可靠传输协议的下层协议可能是不可靠的,所以可靠传输协议的实现比较复杂。

构造可靠传输协议

1. 经完全可靠信道的可靠数据传输:rdt 1.0

  先是考虑最简单的情况,底层信道是完全可靠的。因为信道是完全可靠的,所以发送方传输给接收方的数据会没有比特差错,接收方也不必向发送方提供任何反馈信息。

2. 经具有比特差错信道的可靠数据传输:rdt 2.0

  在实际底层信道中传输的分组中的比特可能会受损。在分组的传输、传播或者缓存的过程中,这种比特差错常发生在网络的物理部件中。现在我们继续假定所有发送的分组(某些比特会受损)将按其发送顺序被接收。
  接收方接收到发送方的分组后,需要告知之发送方自己收到的分组是正确的、还是有比特错误的(发送发就会重传该分组)。基于这样的传重传机制的可靠传输协议称为自动重传请求(Automatic Repeat reQuest ARQ)协议

  在ARQ协议中需要三种协议功能来处理比特差错

  • 差错检测
    差错检测机制使得接收方能够检测到分组中出现了比特差错。
    例如:UDP中的检验和字段是一种差错检测机制,在数据连路层会使用CRC循环冗余检测机制进行差错检测。

  • 接收方反馈
    因为发送方和接收方通常在不同端系统上执行,发送方要了解接收方的情况(分组是否被正确接收)的唯一途径就是让接收方提供明确的反馈消息给发送方。
    rdt2.0协议将从接收方向发送方回送ACK或者NAK分组。理论上分组只需一个比特长,如0表示NAK,1表示ACK。

  • 重传
    接收收到有差错的分组时,发送方将重传该分组。

  需要注意:当发送发处于等待ACK或者NAK的状态时,它不能从上层获得更多的数据。也就是说发送方不会发送一块新的数据,除非发送方确信接收方已正确接收当前分组。此时的rdt 2.0被称为停止等待(stop-and-wait)协议

  协议rdt2.0看起来虽然可以运行了,但是有一个致命的缺陷,没有考虑到ACK/NAK分组受损的可能性!

  通常解决受含糊不清的ACK/NAK时,发送方会重传当前数据分组。
这样会让接收方的信道中出现冗余分组
  解决冗余分组的方法是在数据分组中添加一新字段,让发送方对其数据分组进行编号,将分组的编号填入该字段中。接收方只需要检查序号就可以得知该分组是否是一次重传。
  对于停止等待协议来说,1比特序号就可以了,重传的分组序号与最近接收到的分组序号相同,新的分组序号会变化(使用模2使序号前移)。目前我们假定的是信道不会丢失分组,所以ACK/NAK分组本身不需要指明他们要确认的分组序号。发送方接收到ACK/NAK分组是为响应最近发送的数据分组而生成的。

  rdt2.1反映出目前正在发送的分组或希望接收的分组的序号是0还是1。
  rdt2.1使用了从接收方收到的肯定确认和否定确认。当接收方收到失序分组时,发送肯定确认。如果收到受损分组,则发送否定确认。
  如果不发送NAK,而是对正确接收到的分组发送一个ACK,那么也能得到与NAK一样的效果。发送方收到对同一个分组的两个ACK(接收到了冗余ACK)后,就可以知道接收方没有正确接收被确认两次的分组后面的分组。
  这也产生了协议rdt2.2。rdt2.2是在有比特差错信道上实现的一个无NAK的可靠传输协议,此时ACK报文就需明确所确认的分组序号。

3. 经具有比特差错的丢包信道的可靠传输:rdt3.0(比特交替协议)

  在今天的计算机网络中除了比特会出现受损也会出现丢包的情况。所以,现在协议需要关注两个问题:怎样检测丢包以及丢包后该做些什么。
  有很多方法用于解决丢包问题。这里,我们让发送方负责检测和恢复丢包工作。接收方确实没有接收到数据分组和接收方响应给发送方的ACK丢失,都会让发送发收不到接收方的响应。发送方等待足够长的时间来确认分组丢失,然后进行重传分组。如果是因为ACK丢失,发送方重传分组则会造成冗余数据分组。但是,rdt2.2中的序号可以解决接收方收到冗余分组的问题。
  在发送方的眼里,重传是一种万能灵药。无论数据分组丢失还是ACK丢失都可以采用同样的动作:重传。基于时间的重传机制,需要一个倒计时定时器,在一个给定的时间量过期后,可中断发送方。因此,发送方需要做到 ① 每次发送一个分组(包括第一次和重传分组)时,便启动一个定时器 ② 响应定时器中 断 ③ 终止定时器

  归纳:在构造可靠传输协议的过程中我们用到了检验和、序号、定时器、肯定和否定确认分组技术。


此文为《计算机网络 自顶向下方法》学习笔记1

转载于:https://www.cnblogs.com/myworld7/p/8353515.html

可靠数据传输原理1(构造可靠数据传输协议)相关推荐

  1. 【Sofice小司笔记】5 计算机网络,包含数据传输原理、网络各层协议详细说明、TCP/IP协议栈各常用协议说明、TCP握手挥手、可靠传输、网络加密技术

    ❓ 在浏览器地址栏输入一个 URL 后回车,背后发生了什么 解析 URL 浏览器封装 HTTP 请求报文 DNS 域名解析获取 IP 地址 建立 TCP 连接(长链接) 浏览器发送请求 负责传输的 I ...

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

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

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

    文章目录 前言 一.构造可靠传输协议 1.rdt1.0 2.rdt2.0 3.rdt2.1 4.rdt3.0 二.GBN 总结 前言 在学习3.5节TCP传输之前,我们需要先了解到可靠数据的传输原理, ...

  4. 计算机网络(14)——可靠数据传输原理

    文章目录 可靠数据传输原理 构造可靠数据传输协议 经完全可靠信道的可靠数据传输:rdt 1.0 经具有比特错误信道的可靠数据传输:rdt 2.0 经具有比特错误信道的可靠数据传输:rdt 2.1 经具 ...

  5. 计网必会:UDP差错检测,检验和、可靠数据传输原理

    文章目录 [前言] UDP套接字 无连接运输 UDP 的优势 UDP的差错检测 可靠数据传输 可靠传输的方式总结 构造可靠数据传输协议 可靠信道 具有比特差错的信道 三种可能 [前言] 之前一节我们介 ...

  6. 可靠数据传输原理详细图解

    可靠数据传输原理 概述 rdt1.0 rdt2 rdt2.0 rdt2.1 rdt2.2 rdt3.0 流水线可靠数据传输协议 为什么使用流水线 流水线对可靠数据传输协议带来的影响 流水线协议中恢复差 ...

  7. 我tcp可是铁齿金不换,诚实可靠小郎君——谈谈可靠数据传输服务

    附 rdt_send()函数:上层可以调用数据传输协议的发送方.其中 rdt 为 reliable data transmission. 它将要发送的数据交付给位于接收方的上层. rdt_rev() ...

  8. TCP原理之:TCP数据传输

    TCP原理之:TCP数据传输 TCP(Transmission Control Protocol)全称为传输控制协议, 它工作在网络七层模型中的第四层-传输层, 是一种面向连接的可靠的数据传递协议. ...

  9. NS2相关学习——可靠的MANET应用程序的Gossip协议分析

    好久不写,应该努力啦!老师把这篇论文给了我,现在还不知道它在讲什么,来边翻译边学习吧! 文章链接:https://www.researchgate.net/publication/316844643_ ...

最新文章

  1. 用Flutter + Dart快速构建一款绝美移动App
  2. 【C010】Python - 基础教程学习(一)
  3. mysql 的独占锁和排它锁_MySQL的排它锁与共享锁
  4. 信阳农林技术学院经纬度_信阳无人机创业团队:让梦想在田野起飞
  5. csdn学院 python_确认!别再相信Python了! 程序员:就你敢说...
  6. Nordic Collegiate Programming Contest (NCPC) 2016
  7. java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils
  8. 欧洲互联网将“死于”版权法?
  9. 超大文件中查找关键字
  10. python控制电脑屏幕_Python简单实现控制电脑的方法
  11. WCF在多个服务中使用事物
  12. 快速读懂CAN报文 DBC文件 解析文件
  13. 第一篇 -- 《每天读一点经济学常识 》 --于台风
  14. 正确理解jmeter线程组之Ramp-Up
  15. java如何将日期转化成字符串,Java将日期转换为字符串
  16. 高二计算机课程难点,巧用信息技术手段 突破高中数学课堂教学的重难点
  17. VMWare中安装Windows XP、win7
  18. 华为光猫路由器做交换机用
  19. MIMIC数据库权限申请
  20. 前端练习--网易新闻

热门文章

  1. android播放页蒙层过渡效果,EasyGuideLayer: 这可能是最简单、灵活、强大的页面蒙层组件了!...
  2. php的$_FILES如何生成以及如何与上传文件对象产生联系
  3. java并发处理时mvel表达式处理慢,一文说清!
  4. 【PAT (Advanced Level) Practice】1008 Elevator (20 分)
  5. 【2021年度训练联盟热身训练赛第四场】Game Map(python C++)
  6. 机器学习(MACHINE LEARNING)MATLAB遗传算法
  7. 【Web安全】关于SQL Injection和盲注的探索(DVWA)
  8. Android移动开发之【Android实战项目】activity生命周期与Java中@Override的作用
  9. Keras【Deep Learning With Python】—Keras实现序贯模型
  10. 华为鸿蒙系统需要谷歌的服务器吗,华为P40或用鸿蒙系统?余承东:如果不能使用谷歌服务会考虑...