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

ops/2025/1/14 1:16:45/

前言

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

一、基本概念

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

二、主要机制

  1. 停止-等待协议

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

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

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

三、关键技术

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

四、实现层次

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

总结

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

 结语    

认识未来是一回事

而走向未来是另一回事

!!!


http://www.ppmy.cn/ops/149874.html

相关文章

React 常用高阶组件使用

在 React 中,常用的高阶组件(HOC)模式包括增强组件功能、复用逻辑等。它们是接受一个组件并返回一个新组件的函数。高阶组件让我们在不修改原始组件的情况下,扩展组件功能。以下是几个常见的高阶组件的示例: 1. withL…

【Ubuntu与Linux操作系统:十二、LAMP平台与PHP开发环境】

第12章 LAMP平台与PHP开发环境 12.1 LAMP安装与配置 LAMP简介 LAMP 是一种经典的开源 Web 开发平台,代表 Linux(操作系统)、Apache(Web 服务器)、MySQL(数据库管理系统)和 PHP(脚本…

如何在 IDEA 中配置 npm ?

在 IntelliJ IDEA 或其他基于 IntelliJ 的 IDE(如 WebStorm)中配置 npm 主要涉及以下几个步骤。这些步骤将帮助你确保项目可以正确使用 npm 来管理依赖项和运行脚本。 1. 安装 Node.js 和 npm 首先,确保你的计算机上已经安装了 Node.js 和 …

STM32内置Flash

一、原理 利用flash存储用户数据需要注意查看,用户数据是否会覆盖芯片运行程序。 IAP(在程序中编程)利用程序修改程序本身,和OTA是一个原理。IAP在程序中编程支持任意一种通信下载。 ICP(在电路中编程,通…

【开源免费】基于Vue和SpringBoot的城镇保障性住房管理系统(附论文)

本文项目编号 T 122 ,文末自助获取源码 \color{red}{T122,文末自助获取源码} T122,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

FinGPT:通过传播意识和上下文增强的LLM提升基于情感的股票走势预测

“FinGPT: Enhancing Sentiment-Based Stock Movement Prediction with Dissemination-Aware and Context-Enriched LLMs” 论文地址:https://arxiv.org/pdf/2412.10823 摘要 金融情感分析对于解读新闻如何影响股价具有关键作用,大型语言模型&#xff…

【Ubuntu与Linux操作系统:十一、Java与Android应用开发】

第11章 Java与Android应用开发 11.1 Java开发 Java是一种广泛使用的面向对象编程语言,以其平台无关性和强大的生态系统而闻名。它在Android开发中占据重要地位,同时也是企业级应用和服务器开发的首选语言。 1. Java语言的特点 跨平台性:Ja…

Spring 中的常用注解

Spring 作为 Java 企业级开发中最广泛使用的框架之一,以其强大的功能和灵活性为开发者提供了高效的开发体验。在 Spring 中,注解(Annotation)是其核心机制之一,它简化了配置文件的繁琐操作,通过声明的方式实…