计算机网络 (34)可靠传输的工作原理

前言

       计算机网络可靠传输的工作原理主要依赖于一系列协议和机制,以确保数据在传输过程中能够准确无误地到达目的地。

一、基本概念

       可靠传输指的是数据链路层的发送端发送什么,在接收端就收到什么,即保证数据的完整性、正确性和顺序性。由于网络环境的复杂性和不确定性,如误码、丢包、乱序等问题时有发生,因此需要通过可靠传输机制来应对这些问题。

二、主要机制

  1. 停止-等待协议

    • 这是最简单的可靠传输协议。发送方每发送一个分组就停止发送,等待接收方的确认。如果收到确认,则发送下一个分组;如果超时未收到确认,则重传前一个分组。
    • 该协议的优点是简单易懂,但缺点是信道利用率低,因为发送方在等待确认的过程中无法发送其他分组。
  2. 连续ARQ协议

    • 为了提高信道利用率,引入了连续ARQ协议。发送方可以连续发送多个分组,而不必每发送一个分组就等待确认。
    • 接收方采用累积确认的方式,即对按序到达的最后一个分组发送确认,表示到这个分组为止的所有分组都已经正确收到。
    • 如果发送方在超时时间内未收到某个分组的确认,则会重传该分组及其之后的所有未确认分组(在回退N帧协议GBN中)或仅重传未确认的分组(在选择重传协议SR中)。
  3. 滑动窗口协议

    • 滑动窗口协议是连续ARQ协议的一种实现方式。它通过维护一个发送窗口和一个接收窗口来控制数据的发送和接收。
    • 发送窗口的大小决定了发送方在未收到确认之前可以连续发送的分组数量。接收窗口的大小则决定了接收方可以接收但尚未确认的分组数量。
    • 滑动窗口协议通过调整窗口的大小来平衡传输效率和可靠性。窗口越大,传输效率越高,但可靠性可能降低;窗口越小,可靠性越高,但传输效率可能降低。

三、关键技术

  1. 校验和:在数据发送前,发送方会计算数据的校验和并将其附加在数据后。接收方在收到数据后,会重新计算校验和并与发送方的校验和进行比较,以检测数据是否在传输过程中发生错误。
  2. 确认和重传:接收方在收到正确的数据后,会向发送方发送确认信息。如果发送方在超时时间内未收到确认信息,则会认为数据丢失或出错,并触发重传机制。
  3. 序号管理:每个数据分组都会被分配一个唯一的序号,以便接收方能够按序接收和处理分组。同时,序号也可以用于检测重复分组和乱序分组。
  4. 流量控制和拥塞控制:流量控制用于防止发送方发送数据过快而导致接收方无法及时处理;拥塞控制则用于防止网络中的数据包过多而导致网络拥塞和性能下降。

四、实现层次

       在计算机网络中,可靠传输通常是在运输层实现的,如TCP协议。TCP协议通过一系列复杂的机制和算法来保证数据的可靠传输,包括三次握手建立连接、四次挥手断开连接、超时重传、拥塞控制等。相比之下,数据链路层通常只提供尽最大努力的服务,不保证数据的可靠传输。

总结

       综上所述,计算机网络可靠传输的工作原理是一个复杂而精细的系统工程,它依赖于多种协议和机制来确保数据的完整性、正确性和顺序性。在实际应用中,需要根据具体场景和需求选择合适的可靠传输机制和参数配置。

 结语    

认识未来是一回事

而走向未来是另一回事

!!!

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

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

相关文章

C++:string

一、string概念 之前介绍过通过字符数组保存字符串,然后对字符数组中的字符串做各种操作;为了更加简单方便,在C中,又增加了 string 来处理字符串。 char str[20] "hello world"; string 字符串其实是一种更加高级的封…

SQL Server 数据库给第三方用户开权限,限制可见内容

单独数据库权限的设置: 方法: 给外方公司开用户,让其访问本地有限资源。 分两步,1新建服务器登录名,2设置数据库用户权限 1,首先用管理员sa登录数据库,在服务器级别下“安全性\登录名”&#…

搭建一个fastapi的项目,调用ollama服务

1. 项目结构 my_project/ │ ├── app/ │ ├── main.py # FastAPI应用的入口 │ ├── services/ # 包含服务逻辑 │ │ └── ollama_service.py │ ├── models/ # 定义数据模型 │ │ └── response.py │ ├─…

提升 PHP 编码效率的 10 个实用函数

PHP开发者始终追求更简洁、高效的代码。幸运的是,PHP 提供了丰富的内置函数,能显著减少手动编码,提升开发效率。无论经验深浅,掌握这些函数的使用技巧都至关重要。 以下列出了 10 个可以显著加快您的编码过程的 PHP 函数&#xf…

Opus Clip AI技术浅析(二):上传与预处理

1. 视频上传 1.1 用户接口 用户通过网页或移动应用上传视频文件。文件上传通常使用HTTP协议,支持多种视频格式(如MP4, AVI, MOV等)。上传接口需要处理大文件上传、断点续传等问题。 1.2 文件传输 上传的视频文件通过安全的传输协议&#…

二叉树层序遍历 Leetcode102.二叉树的层序遍历

二叉树的层序遍历相当于图论的广度优先搜索,用队列来实现 (二叉树的递归遍历相当于图论的深度优先搜索) 102.二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右…

Linux第一课:c语言 学习记录day06

四、数组 冒泡排序 两两比较,第 j 个和 j1 个比较 int a[5] {5, 4, 3, 2, 1}; 第一轮:i 0 n:n个数,比较 n-1-i 次 4 5 3 2 1 // 第一次比较 j 0 4 3 5 2 1 // 第二次比较 j 1 4 3 2 5 1 // 第三次比较 j 2 4 3 2 1 5 // …

C#里对已经存在的文件进行压缩生成ZIP文件

先要对目录下所有文件获取到: private List<string> GetXDFiles(string dirPath){//获取目录中的所有文件string suffix = "*.txt"; // 要查找的文件后缀var files = Directory.GetFiles(dirPath, suffix, SearchOption.TopDirectoryOnly).ToList();return fi…

保护性暂停原理

什么是保护性暂停&#xff1f; 保护性暂停&#xff08;Guarded Suspension&#xff09;是一种常见的线程同步设计模式&#xff0c;常用于解决 生产者-消费者问题 或其他需要等待条件满足后再继续执行的场景。通过这种模式&#xff0c;一个线程在执行过程中会检查某个条件是否满…

嵌入式C语言:二维数组

目录 一、二维数组的定义 二、内存布局 2.1. 内存布局特点 2.2. 内存布局示例 2.2.1. 数组元素地址 2.2.2. 内存布局图&#xff08;简化表示&#xff09; 2.3. 初始化对内存布局的影响 三、访问二维数组元素 3.1. 常规下标访问方式 3.2. 通过指针访问 3.2.1. 指向数…

【ArcGIS微课1000例】0137:色彩映射表转为RGB全彩模式

本文讲述ArcGIS中,将tif格式的影像数据从色彩映射表转为RGB全彩模式。 参考阅读:【GlobalMapper精品教程】093:将tif影像色彩映射表(调色板)转为RGB全彩模式 文章目录 一、色彩映射表预览二、色彩映射表转为RGB全彩模式一、色彩映射表预览 加载配套数据包中的0137.rar中的…

CAPL语法基础

CAPL语法基础 目录 CAPL语法基础1. 引言2. 数据类型、变量与常量2.1 数据类型2.2 变量2.3 常量2.4 案例1&#xff1a;使用变量和常量计算圆的面积 3. 运算符与表达式3.1 算术运算符3.2 关系运算符3.3 逻辑运算符3.4 位运算符3.5 案例2&#xff1a;使用运算符实现简单的逻辑判断…

Java 将RTF文档转换为Word、PDF、HTML、图片

RTF文档因其跨平台兼容性而广泛使用&#xff0c;但有时在不同的应用场景可能需要特定的文档格式。例如&#xff0c;Word文档适合编辑和协作&#xff0c;PDF文档适合打印和分发&#xff0c;HTML文档适合在线展示&#xff0c;图片格式则适合社交媒体分享。因此我们可能会需要将RT…

基于 GEE 下载逐年 MODIS 地表温度 LST 数据

目录 1 地表温度&#xff08;LST&#xff09; 2 数据准备 3 代码实现 3.1 加载研究区与数据集 3.2 数据预处理与标准化 3.3 逐年批量导出 3.4 可视化结果 4 运行结果 5 完整代码 1 地表温度&#xff08;LST&#xff09; 在遥感领域&#xff0c;地表温度&#xff08;L…

Vue2:el-table中的文字根据内容改变颜色

想要实现的效果如图,【级别】和【P】列的颜色根据文字内容变化 1、正常创建表格 <template><el-table:data="tableData"style="width: 100%"><el-table-column prop="id" label="ID"/> <el-table-column …

【CSS】设置滚动条样式

文章目录 基本语法用法案例 基本语法 在CSS中&#xff0c;可以使用 ::-webkit-scrollbar 和相关伪元素来为滚动条设置样式&#xff0c;但请注意这些伪元素是非标准的&#xff0c;主要用于WebKit内核浏览器&#xff08;如Chrome、Safari&#xff09;。 ::-webkit-scrollbar CSS …

虚拟机使用MQ及介绍

mq官网&#xff1a;https://www.rabbitmq.com 一、虚拟机与 MQ 的结合优势 隔离与安全&#xff1a;虚拟机为 MQ 的运行提供了一个独立的环境&#xff0c;与宿主机以及其他虚拟机相互隔离。这意味着即使 MQ 所在的虚拟机出现故障或遭受安全威胁&#xff0c;也不会直接影响到宿主…

【Python】Python之Selenium基础教程+实战demo:提升你的测试+测试数据构造的效率!

这里写目录标题 什么是Selenium&#xff1f;Selenium基础用法详解环境搭建编写第一个Selenium脚本解析脚本脚本执行结果常用的元素定位方法常用的WebDriver方法等待机制 Selenium高级技巧详解页面元素操作处理弹窗和警告框截图和日志记录多窗口和多标签页操作 一个实战的小demo…

单通道串口服务器(三格电子)

一、产品介绍 1.1 功能简介 SG-TCP232-110 是一款用来进行串口数据和网口数据转换的设备。解决普通 串口设备在 Internet 上的联网问题。 设备的串口部分提供一个 232 接口和一个 485 接口&#xff0c;两个接口内部连接&#xff0c;同 时只能使用一个口工作。 设 备 的网 口…

力扣经典题目之912.排序数组(使用希尔排序解决)

今天继续给大家分享一道力扣的做题心得今天这道题目是 912.排序数组 题目链接&#xff1a;912. 排序数组 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a;给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 你必须在 不使用任何内置函数 的情况下解决问题…