4.4 可靠传输的工作原理

欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅!

文章目录

  • 前言
  • [1 停止等待协议](#1 停止等待协议)
    • [1.1 无差错情况](#1.1 无差错情况)
    • [1.2 出现差错的情况](#1.2 出现差错的情况)
    • [1.3 解决方案:超时重传](#1.3 解决方案:超时重传)
    • [1.4 确认丢失与确认迟到](#1.4 确认丢失与确认迟到)
    • [1.5 信道利用率的瓶颈](#1.5 信道利用率的瓶颈)
  • [2 连续 ARQ 协议](#2 连续 ARQ 协议)
    • [3 Go-Back-N 协议](#3 Go-Back-N 协议)

前言

在现代网络通信中,确保数据传输的可靠性是至关重要的。然而,IP 网络本身并不保证数据传输的可靠性。由于网络中存在数据包丢失、损坏或顺序错乱的情况,必须依赖可靠传输协议来保障数据的正确传输。

1 停止等待协议

理想情况下,网络信道不产生差错,发送方可以按需发送数据,而接收方能够即时处理。

但现实中,网络环境通常并不理想,因此需要通过多种可靠传输协议来应对如丢包、错序、重复传输等问题。

停止等待协议(Stop-and-Wait Protocol)是最基础的可靠传输协议之一,设计简单,确保数据传输可靠性。其基本思想是,发送方每次发送一个数据包后,会暂停,等待接收方确认消息(ACK)才能继续发送下一个数据包。

1.1 无差错情况

在理想情况下,发送方 A 发送数据包 M1 后,暂停发送,等待接收方 B 发送确认消息 ACK。当 A 收到 ACK 后,继续发送下一个数据包 M2。此过程可以通过以下流程图展示:

1.2 出现差错的情况

在网络传输过程中,若发生差错,则可能出现以下两种情况:

  1. B 接收 M1 时检测出了差错,就丢弃 M1,其他什么也不做(不通知 A 收到有差错的分组)。
  2. M1 在传输过程中丢失了,这时 B 当然什么都不知道,也什么都不做。

问题 :A 如何知道 B 是否正确收到了 M1 呢?

1.3 解决方案:超时重传

为了解决上述情况,发送方 A 为每个数据包设置超时计时器

A 只要在超时计时器到期之前收到了相应的确认,就撤销 该超时计时器,继续发送下一个分组 M2 ;若 A 在超时计时器规定时间内没有收到 B 的确认,则认为分组错误或丢失,重发 该分组。

这种超时重传机制确保了数据的可靠传输,但也带来了一些性能上的影响,信道利用率较低。

1.4 确认丢失与确认迟到

  • 确认丢失 :如果接收方 B 的确认消息丢失,发送方 A 会超时重传 数据包。B 会丢弃重复的 M1,并向 A 发送新的确认。
  • 确认迟到 :如果确认消息延迟到达,A 在超时后会重传数据包,尽管 B 已经收到 M1,B 会丢弃 重复的包并重新确认。A 收到重复确认时只需忽略它。

1.5 信道利用率的瓶颈

尽管停止等待协议在确保可靠性方面有效,但它的信道利用率较低。特别是在网络延迟较大时,发送方会因为等待确认而停顿,导致信道的空闲时间较长。

这使得停止等待协议难以高效利用网络带宽,尤其在高延迟环境中表现明显。

为了解决停止等待协议的低效问题,流水线传输 (Pipelining)应运而生。

流水线传输允许发送方在未收到前一个数据包确认的情况下,连续发送多个数据包 ,从而提高信道的利用率,减少空闲时间。流水线传输的核心思想是让发送方并行发送多个数据包 ,而不必等待单个数据包的确认

由于信道上一直有数据不间断地传送,流水线传输拥有很高的信道利用率

2 连续 ARQ 协议

流水线传输可以通过两种主要协议实现:连续 ARQ 协议滑动窗口协议。这两种协议通过不同方式提高信道的利用率,并减少等待确认的时间。

在连续 ARQ 协议中,发送方维护一个发送窗口 ,可以在窗口内连续发送 多个数据包,而无需等待每个数据包的确认。每收到一个确认,发送窗口会向前滑动一个位置。

接收方采用累积确认 机制,确认序列中按序到达的最后一个数据包,从而确认所有前面的数据包都已成功接收。

  • 优点:简洁易实现,能提高带宽利用率,特别是在网络延迟较高时具有显著优势。
  • 缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。

3 Go-Back-N 协议

Go-Back-N 协议是连续 ARQ 的一种实现方式。在该协议中,发送方可以在不等待确认的情况下连续发送多个数据包。若某个数据包丢失或损坏,接收方会丢弃该数据包及之后所有的数据包,并要求发送方从丢失的包重新发送。

Go-back-N(回退N)表示需要再退回来重传已发送过的 N 个分组。

  • 优点:实现简单,能够有效提高传输效率。
  • 缺点:在丢包率较高的网络环境中,可能导致大量数据的重复传输,影响协议效率。
相关推荐
果丁智能7 小时前
智能锁赋能网约房民宿数字化管控:身份核验+远程授权,筑牢安全防线、降本增效
网络·数据库·人工智能·安全·智能家居
wp123_17 小时前
射频前端无源器件观察:Coilcraft WBC1-1TLC vs TONEVEE WBT1-1CT 国产与进口巴伦变压器的技术博弈
网络
映翰通朱工9 小时前
工业4G网关无公网IP远程运维实战(内网终端异地访问方案)
运维·服务器·网络·安全·智能路由器
天南散修9 小时前
MT7916 BA流程
网络·驱动开发·wifi·802.11
Yang96119 小时前
多功能一体化,成都鼎讯 LDMN-JM1 满足石油煤矿设备检定与训练需求
网络·能源
IP老炮不瞎唠9 小时前
Python 价格监控如何实现?思路与实用方法分享
运维·服务器·网络
睡不醒男孩03082310 小时前
CLup 6.x 版本中针对StarRocks 存算一体集群的完整操作手册
java·服务器·网络·clup
dog25010 小时前
网络长尾延时的重尾本质
开发语言·网络·php
戴西软件10 小时前
戴西 DLM 许可授权管理系统:破解无网络环境下工业软件授权难题,助力制造企业降本增效
网络·人工智能·python·深度学习·程序人生·算法·制造
6v6-博客10 小时前
u盘出现图片、文件,文件夹全部隐藏怎么办
网络