【计算机网络】第三章 数据链路层(可靠传输)

news2024/11/18 15:41:27

文章目录

  • 第三章 数据链路层
    • 3.4 可靠传输
      • 3.4.1 可靠传输的基本概念
      • 3.4.2 可靠传输的实现机制——停止-等待协议
      • 3.4.2 可靠传输的实现机制——回退N桢协议
      • 3.4.3 可靠传输的实现机制——选择重传协议
      • 3.4.4 可靠传输的意义


在这里插入图片描述

第三章 数据链路层

3.4 可靠传输

可靠传输是指在数据通信过程中,确保数据能够准确、完整地按照发送方的意图传输到接收方,并且接收方能够正确地接收和处理数据。

在可靠传输中,通常需要解决以下问题:

确认和反馈:发送方在发送数据后,需要接收到接收方的确认信息,以确认数据是否正确接收。如果发送方没有收到确认信息,会重传该数据,确保数据的正确性。

序号和重传:为了确保数据的有序传输和不丢失,每个数据包都应该带有唯一的序号。接收方根据序号对数据包进行排序,并检测是否有丢失的数据包,如果有则要求发送方进行重传。

超时重传:发送方通常会设置一个超时时间,在规定时间内如果没有收到接收方的确认信息,就认为数据丢失,需要进行重传。

流量控制:为了避免接收方无法及时处理大量的数据,需要对发送方的数据发送速率进行控制,确保发送方和接收方之间的数据传输保持平衡。

错误检测和纠正:通过使用差错检测码和纠错码等技术,可以检测并纠正数据传输过程中产生的错误,提高数据传输的可靠性。

常见的可靠传输协议包括 停止等待协议、连续 ARQ(Automatic Repeat Request)协议,如选择重传、回退N帧协议和选择重复请求协议等。这些协议都通过上述机制来实现可靠传输,确保数据在通信过程中的准确传递。



3.4.1 可靠传输的基本概念

使用 差错检测技术(循环冗余校验CRC),接收方的数据链路层就可检测出桢在传输过程中是否产生了误码(比特错误)。
根据数据链路层向上提供的服务类型:

  • 不可靠传输服务:仅仅丢弃有误码的桢,其他什么都不做。
  • 可靠传输服务:想办法实现发送端发送什么,接收端就收到什么。

一般情况下,有线链路 的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。
无线链路 易受干扰,误码率较高,因此 要求数据链路层 必须向上层提供 可靠 传输服务。
比特差错 只是传输差错中的一种。
从整个计算机网络体系结构来看,传输差错还包括分组丢失,分组失序 以及 分组重复。
可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输。


3.4.2 可靠传输的实现机制——停止-等待协议

确认与否认

超时重传
发送数据带编号

在这里插入图片描述

注意事项:temp
停止-等待的信道利用率
例题

在这里插入图片描述
答案:D


若出现重传,信道利用率更低。
为了克服 停止-等待协议 信道利用率低 的缺点,就产生了另外两种协议。


3.4.2 可靠传输的实现机制——回退N桢协议

概念图
累计确认
有差错情况
有差错情况

总结
例题
例题解析
image.png


3.4.3 可靠传输的实现机制——选择重传协议

选择重传协议 为了使发送方仅重传出现差错的分组,接收方不能再采用累计确认,而需要对每个正确接收到的数据分组进行 逐一确认。
image.png
发送窗口与接收窗口的尺寸问题
总结
例题例题解析

3.4.4 可靠传输的意义

可靠传输在数据通信中具有重要的意义,主要包括以下几个方面:

数据完整性:可靠传输能够确保发送的数据在传输过程中不被修改、损坏或丢失。这对于许多应用场景来说至关重要,特别是在涉及关键数据、文件传输或信息交换的情况下,需要确保数据的完整性。

数据可靠性:通过使用确认和反馈机制,可靠传输可以确保数据在发送方和接收方之间的正确传送。发送方会等待接收方的确认信息,如果未收到确认或收到错误的确认信息,则进行重传,从而提高数据传输的可靠性。

异常处理:可靠传输能够对网络异常情况进行处理,例如网络延迟、拥塞、丢包等。通过设置适当的超时重传和流量控制机制,可靠传输可以应对这些异常情况并进行恢复,确保数据可以成功传输。

顺序性:可靠传输通常也保证了数据包的顺序传输。这对于那些依赖于数据包顺序的应用程序非常重要,比如视频流、音频流等,确保数据按照正确的顺序进行播放或处理。

性能优化:尽管可靠传输可能会引入一些额外的开销(如确认和重传机制),但它可以提高数据交付的可靠性,从而避免了因为数据丢失或错误导致的重新发送和处理,从而提高整体的性能和效率。



在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java中可以使用哪些系统架构?怎样选择?

架构,又名软件架构,是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。 Java企业级的应用根据业务的复杂程度,通常使用的系统架构有应用架构、垂直应用架构、面向服务的架构(Service-Oriented Architectu…

在外远程访问NAS威联通(QNAP) - 免费内网穿透

文章目录 前言1. 威联通安装cpolar内网穿透2. 内网穿透2.1 创建隧道2.2 测试公网远程访问 3. 配置固定二级子域名3.1 保留二级子域名3.2 配置二级子域名 4. 使用固定二级子域名远程访问 转载自cpolar极点云文章:无需公网IP,在外远程访问NAS威联通QNAP【内…

1688按关键字搜索工厂数据,商品详情页数据的采集

item_search_factory-按关键字搜索工厂数据 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)​注册​Key获取appsecret和appkey;​secretString是调用密钥api_nameString是API接口名称(包括在请求地址中…

认知网络原理

目录 一、网络发展史 1.1、独立模式 1.2、网络互连 1.3、局域网 二、网络通信 2.1、IP地址 2.2、端口号 三、认识协议 3.1、五元组 3.2、协议分层 3.3、分层的作用 3.4、OSI七层模型 3.5、TCP/IP五层(或四层)模型 3.6、网络设备所在分…

【快应用】快应用学习之页面周期函数onBackPress无法触发?

【关键词】 onBackPress、退出提示 【问题背景】 在学习和调试快应用的过程中&#xff0c;我在子页面中的onBackPress()函数中定制了退出的一个弹框提醒&#xff0c;将它作为组件引入父页面中&#xff0c;弹框却无法触发&#xff1f; 问题代码如下&#xff1a; 子页面 <t…

集合处理常用Stream流

集合处理常用Stream流 1、Stream API介绍2、List集合常用Stream方法 stream流经常使用&#xff0c;但是遇到一些流操作时&#xff0c;会一下想不到用哪种&#xff0c;这里总结一下&#xff0c;方便自己或者读者查找 1、Stream API介绍 Stream API是Java 8引入的一项重要特性&a…

B. Nastya and Scoreboard(剪枝记忆化搜索)

Problem - 1340B - Codeforces Denis,在买了花和糖果之后&#xff08;你将在下一个任务中了解这个故事&#xff09;&#xff0c;与Nastya约会&#xff0c;向她表白要成为一对。现在&#xff0c;他们坐在咖啡馆里&#xff0c;最后... Denis请她答应在一起&#xff0c;但是... Na…

文盘 Rust -- tokio 绑定 cpu 实践

tokio 是 rust 生态中流行的异步运行时框架。在实际生产中我们如果希望 tokio 应用程序与特定的 cpu core 绑定该怎么处理呢&#xff1f;这次我们来聊聊这个话题。 首先我们先写一段简单的多任务程序。 use tokio::runtime; pub fn main() {let rt runtime::Builder::new_mu…

第48步 深度学习图像识别:RegNet建模(Pytorch)

基于WIN10的64位系统演示 一、写在前面 &#xff08;1&#xff09;RegNet RegNet (Regulated Networks) 是一种由 Facebook AI 的研究者们在 2020 年提出的神经网络架构&#xff0c;旨在探索网络架构设计的各种可能性&#xff0c;并找出最优的网络设计规则。RegNet 的核心理…

vue3ts分离头部变量单独一个ts

这里要说下 博主 vue^3.2.47 typescript^5.0.2 群有小伙伴说之前版本是不支持&#xff0c;所以你对下版本是不是比博主的版本低。 主要是页面代码太多&#xff0c;你看下面 然后博主就想着组合式开发 怎么把页面变干净点&#xff1a; 1、vue的就处理逻辑 2、ts就单纯定义…

vc++ 弹出打开、保存对话框功能(COM组件使用详解)

文章目录 前言一、原理二、代码封装三、使用示例C/C++实战入门到精通 https://blog.csdn.net/weixin_50964512/article/details/125710864 前言 很多应用都会有选择打开文件、或者选择保存文件的功能,这种情况下一般都是弹出一个对话框让用户自己选择。 这并不需要自己…

如何使用Scrum工具进行敏捷项目管理?

敏捷开发是一种轻量级的软件开发方式。 敏捷是一种通过创造变化和响应变化在不确定和混乱的环境中取得成功的能力。 敏捷开发是为了快速响应市场变化、通过自组织、跨职能团队 运用适合他们自身环境的实践进行演进得出解决方案。 所有符合敏捷宣言和敏捷开发十二项原则的方…

单片机要这样保护临界区

目录 一、概述 二、临界区保护测试场景 三、临界区保护三种实现 1、入门做法 2、改进做法 3、终极做法 四、附录---PRIMASK寄存器设置函数在各 IDE 下实现 一、概述 今天给大家分享的是Cortex-M裸机环境下&#xff0c;临界区保护的三种实现。 搞嵌入式玩过 RTOS 的小伙…

程序设计-编程题

CISP-PTE-编程题 2014 #include <iostream> using namespace std;double H(int n,double x) {if (n > 1)return 2 * x*H(n - 1, x) - 2 * (n - 1)*H(n - 2, x);if (n 0)return 1;if (n 1)return 2 * x; }int main() {int n;double x,result;cin >> n;cin >…

torch_geometric安装避坑

总流程&#xff1a; 1. 查看cuda, pytorch, python版本&#xff1b; 2. 依次安装torch_scatter, torch_sparse, torch_cluster, torch_spline&#xff1b; 3. 安装torch_geometric 一. 查看cuda, pytorch, python版本 可选方法如下图&#xff0c;其中该样例的cuda, pytorc…

注意力机制[矩阵]

每一个输入的向量( Embedding后的向量)&#xff0c;均有q,k,v,三个东西。其中q由下图所生成 I矩阵有a1,a2,a3,a4组成&#xff0c;Wq为权重矩阵&#xff0c;将I与Wq相乘求得Q(q1,q2,q3,q4)。K和V与I同理均可求得。 将求得出来的K&#xff0c;转置为竖向量与Q相乘&#xff0c;就…

【UE5 Cesium】12-Cesium for Unreal 去除左下角的icon

问题 在视口左下角的icon如何去除&#xff1f; 解决方法 打开“CesiumCreditSystemBP” 将“Credit Widget Class”一项中的“ScreenCredit”替换为“ScreenCreditWidget” 编译之后icon就不显示了。

戴尔游匣G16 7630原厂Win11系统带F12 Support Assist OS Recevory恢复功能

戴尔游匣G16 7630原厂Win11系统带F12 Support Assist OS Recevory恢复功能 各机型预装系统&#xff0c;带所有dell主题壁纸、dell软件驱动、带戴尔SupportAssist OS Recovery恢复功能&#xff0c;一次性恢复成新机状态&#xff0c;并且以后不用重装系统&#xff0c;直接恢复即…

MVC终极版

MVC终极版 1.把上次的代码打包为架包。2.通过basedao优化代码1.前言 3.后台代码servlet的优化。4前台代码展示 再次优化代码&#xff0c;上两次优化&#xff0c;都不是最完善的&#xff0c;这一次是最完善的了。 1.把上次的代码打包为架包。 选中两个文件&#xff0c;右键然后选…

Unreal 5 Lyra初学者游戏包概览笔记

Lyra初学者游戏包相关的官方视频有两个&#xff1a; Lyra初学者游戏包概览 https://www.bilibili.com/video/BV16B4y197Zy/Lyra跨平台UI开发 https://www.bilibili.com/video/BV1mT4y167Fm/ 这个笔记主要记录的是Lyra初学者包概览笔记的相关内容。里面介绍了如何创建关卡、输…