IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 计算机网络——可靠数据传输原理 -> 正文阅读

[网络协议]计算机网络——可靠数据传输原理

我们分为几种讨论情况

  • 经过完全可靠信道的可靠数据传输
  • 经过具有比特差错信道的可靠数据传输
  • 经过具有比特差错的丢包信道的可靠数据传输

经过完全可靠的可靠数据传输rdt1.0协议

rdt 1.0协议

因为信道是完全可靠的传输信道,所以不需要进行确认。
发送端
只需要接收上层数据,并产生一个包含该数据的分组,将分组发送到信道中。
接收端
接收端将接收的分组取出数据,交给上层。

经过具有比特差错信道的可靠数据传输rdt2.0

在这里插入图片描述

在rdt1.0的协议上增加了数据确认的回传,还要进行差错检测,重传等。

发送方

发送方将上层的数据进行计算,计算出校验码,并将需要传递的数据和检验和一并打包进行发送,发送之后,并不能发送下一个分组,需要等到接收方回传确认的字段,才能继续发送(也就是说,在发送完分组,并且在接收方回传确认字段之前,不能发送下一个分组,被称为停等协议)。
发送分组之后有三种可能

  • 接收端回传字段为肯定确认,则发送端可以发送下一个分组
  • 接收端回传字段为否定确认,发送端需要重传该分组
  • 接收端回传字段,但是发送端没有接到,判定为超时,发送端需要重传字段。

接收方

接收方接收到分组数据之后,通过校验码验证数据正确或者错误,如果错误,返回NAK,如果正确,返回ACK。

该协议存在的问题:如果接收端回传的确认字段在传输中出现差错,会导致错误重传,或者缺少重传。

经过具有比特差错信道的可靠数据传输rdt2.1

在这里插入图片描述
由于rdt2.0问题在,回传的确认数据不能保证其准确性,所以在rdt2.1协议中添加了确认的分组号

发送端

从上层中获取数据之后,将数据和校验和、分组序号(分组需要由1比特表示,所以只能表示0,1,循环使用),进行打包发送。
发送后有三种可能

  • 接收端回传的数据为ACK和0(假设第一次传输数据,为0,回传的确认字段也为0,如果分组序号为1,则回传的确认字段也为1),则发送端发送下一个分组。
  • 接收端回传的数据为ACK和1(假设同上),因为发送的分组为0,但是回传的确认字段为1,则表明该分组没有传输成功,需要重传分组为0的分组。
  • 接收端回传的数据为NAK和0或1(假设同上),说明传递的数据出现差错,需要重传分组。
  • 发送端未接收到回传的确认分组,(在此讨论情况下不成立,因为该信道有比特差错,并没有分组丢失)也会重传。

接收端

接收端收到分组时,将数据计算和校验码进行校验,如果出现错误,则返回NAK并返回该分组序号,如果不出现错误,返回ACK和该分组序号

经过具有比特差错信道的可靠数据传输rdt2.2

rdt2.2协议与rdt2.1相比,不同在于没有NAK确认字段,只有ACK字段。

在这里插入图片描述

发送方

rdt2.2的发送方与rdt2.1的发送方相似,由于确认字段没有NAK,所以不会判断确认字段,只会判断回传确认分组的分组序号。
当发送端发送分组之后,(假设第一个分组序号为0)

  • 如果返回的是ACK和0,则表示确认收到分组。
  • 如果返回的是ACK和1,则表示该分组没有被正确接收到,需要重传。

接收方

接收方接收到分组之后,将数据和校验和进行校验,如果正确返回当前确认分组的确认字段ACK0,如果分组出现差错,则返回上一个分组的确认字段ACK1,发送方接收之后,就会重传该分组。

经过具有比特差错信道的可靠数据传输rdt3.0

rdt3.0在rdt2.2协议上增加了倒计数定时器和重传,因为在该信道中,可能会丢失分组。

在这里插入图片描述

发送方

发送方每发送一个分组,便启动一个定时器,如果接收到确认字段的回传会终止计时器,如果长时间接收不到确认分组,会触发重传。

接收方

接收方接收到分组之后,将数据与校验码进行校验,如果正确会返回ACK0,如果错误,返回ACK1。(与rdt2.2协议相同)

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 14:29:09  更:2021-08-14 14:29:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 17:38:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码