网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

无噪音通道协议

更新时间:2026年03月27日   作者:spoto   标签(Tag):

协议是一组用于两个设备之间通信的规则。这些规则通常由头部来定义(即由协议所确定的固定头部)。这些头部规定了消息的内容以及消息的处理方式。为了检测错误,头部中必须包含目标地址、源地址以及消息的校验和等信息。

协议的分类

根据所设计的通信通道类型,协议可以被分为两大类:

无噪声(无错误)通道的协议

  • 该设计假设在传输过程中不会出现任何错误(即没有丢失、损坏或重复的数据帧)。
  • 主要用于理论研究或作为更复杂协议的基础。
  • 在现实世界的通信中,这种方法并不实用,因为信道中通常存在噪声。

2. 针对噪声干扰(导致错误的)通道的协议

  • 该设计旨在处理诸如帧丢失、损坏或重复等情况所带来的错误。
  • 在现实生活中,这种技术被广泛应用于那些通信渠道并不完美的场景。
  • 应包含用于错误检测与纠正的机制。

无噪音通道

这是一种理想化的通道,其中没有任何帧会丢失、损坏或重复。为这种类型的通道设计的协议不会实施错误控制机制。l因为该通道被假设为完美的。

无噪声传输的协议

目前,有两类主要协议被设计用于无噪声的通信通道。

最简单的协议/方式

假设:接收器能够立即处理每一帧数据,而不会造成任何延迟或积压现象。

接收器操作:接收器的数据链路层会迅速从每个传入的数据帧中移除头部信息,然后将数据包传递给网络层进行处理。网络层也能够立即对数据包进行加工处理。这意味着接收器不会因接收到过多的数据帧而陷入混乱。

最简单的协议的设计

  • 发送方:
    • 数据链路层从其网络层接收数据。
    • 它利用这些数据来创建一个框架。
    • 它负责将帧通过物理层进行传输。
  • 接收方:
    • 数据链路层从物理层接收帧数据。
    • 它从帧中提取数据。
    • 它将数据传递给网络层。
  • 通信服务:
    • 发送方和接收方的数据链路层分别为其各自的网络层提供通信与传输服务。
    • 数据链路层利用物理层来物理地传输比特数据。
设计一种最简单的协议,该协议不需要进行错误控制或流量控制。

算法

发送端算法

接收端算法

while(true) // 无限循环

{

waitForEvent(); // 等待事件发生

如果(有事件需要发送) //有数据包需要发送

{

获取数据;

调用MakeFrame()函数。

SendFrame(); //发送该帧数据

}

}

while(true) // 无限循环

{

waitForEvent(); // 等待事件发生为止

如果(事件“到达通知”)成立,则://数据帧已送达

{

接收帧数据;

提取数据();

DeliverData(); //将数据传递给网络层

}

}

最简单的协议的流程图

该流程图展示了使用最简单的协议进行通信的过程。整个过程非常简单明了:

  • 发送方会连续不断地发送一系列帧,而无需等待接收方的任何反馈。
  • 例如,发送方发送了三个帧,而接收方则按顺序接收了这三个帧。

2. 停止-等待协议

当数据帧的传输速度超过其处理速度时,接收方必须暂时存储这些数据帧,直到可以对其进行处理为止。

  • 通常,接收器的存储容量是有限的,尤其是在从多个来源接收数据时。
  • 这需要仔细管理数据流,以避免出现过载情况。

了解更多关于……的信息停止-等待协议

停止等待协议的实现方式

  • 与最简单的协议相比,停止等待协议能够在两个通道上同时处理数据流量。
    • 前向通道:从发送方到接收方(传输数据帧)。
    • 反向通道:从接收者传递到发送者手中(同时携带确认帧)。
  • 在任何时候,情况要么如此:
    • 一个数据帧通过前向通道传输,或者
    • 一个ACK帧正在反向信道上传输。
  • 这种设计需要半双工链路,也就是说,通道上一次只能在一个方向上进行通信。
停止等待协议的实现方式

算法

发送端算法

接收端算法

while(true) //无限循环

canSend = true // 允许在第一个帧中发送数据

{

waitForEvent(); // 等待事件发生为止

如果(有事件需要发送)且能够发送的话,那么就需要发送一个数据包了。

{

获取数据;

调用MakeFrame()函数。

SendFrame(); //发送数据帧

canSend = false; //在收到确认消息之前,无法发送数据

}

WaitForEvent(); // 等待事件发生为止

if(Event(ArrivalNotification)) //已经收到了确认信号

{

ReceiveFrame(); //接收ACK帧

CanSend = true;

}

while(true) //无限循环

{

waitForEvent(); // 等待事件发生为止

如果(事件发生,类型为“到达通知”)//数据帧已经到达

{

接收帧数据;

ExtractData();

DeliverData(); //将数据传递给网络层

SendFrame(); //发送一个ACK帧

}

}

Stop & Wait协议的流程图

该图展示了使用停止等待协议时,通信是如何进行的:

  • 发送方会先发送一个帧,然后等待接收方的确认消息,之后才会继续发送下一个帧。
  • 当发送方收到ACK信号后,就会发送下一个帧。
  • 这个过程会重复对所有帧进行相同的处理。

重要提示:

  • 对于两个帧来说,发送方会经历四个阶段:
    1. 先发送第一帧图像吧。
    2. 等待并接收第一个帧的ACK响应。
    3. 发送第二张图片吧。
    4. 等待并接收第二帧的ACK信号。
  • 接收方会经历两件事情:
    1. 接收每一帧图像
    2. 对每接收一个帧,都发送ACK信号。
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料