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 个分组。

  • 优点:实现简单,能够有效提高传输效率。
  • 缺点:在丢包率较高的网络环境中,可能导致大量数据的重复传输,影响协议效率。
相关推荐
wadesir1 小时前
当前位置:首页 > 服务器技术 > 正文Linux网络HSRP协议(实现路由器热备份与高可用性的实用指南)
linux·服务器·网络
带土12 小时前
4. 两台win11 笔记本局域网内文件传输
网络
xixixi777773 小时前
“C2隐藏”——命令与控制服务器的隐藏技术
网络·学习·安全·代理·隐藏·合法服务·c2隐藏
在多学一点3 小时前
iptables的源地址转换和iptables的目标地址转换
网络
gadiaola3 小时前
【计算机网络面试篇】HTTP
java·后端·网络协议·计算机网络·http·面试
罗汉松(山水白河)3 小时前
关于串口与UDP通讯的实验
单片机·嵌入式硬件·网络协议·udp·tcp·串口、
报错小能手4 小时前
计算机网络自顶向下方法57——网络安全 基础与密码学原理
计算机网络·安全·web安全
Xの哲學4 小时前
Linux 分区表深度技术剖析
linux·网络·算法·架构·边缘计算
fei_sun5 小时前
【复习】计网每日一题1124---UDP首部检验和计算、检验和特殊含义
网络·网络协议·udp
2***57425 小时前
前端WebSocket案例
网络·websocket·网络协议