网工干货知识

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

计算机网络中的乌托邦式简单协议

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

我们可以考虑这样一种协议:这种协议根本不需要考虑可能出现的问题。数据只会在单向方向上传输。无论是发送还是接收数据的网络层,都始终处于准备状态。处理时间可以忽略不计。此外,还有无限多的缓冲空间可用。这种协议完全不符合现实情况,我们不妨称之为“不现实的协议”。乌托邦这只是用来展示我们后续构建的基础结构而已。其具体实现方式如下所示。

乌托邦式的简单协议:数据传输只能从发送方流向接收方。在这里,我们假设通信通道是无误差的,同时接收方能够非常快速地处理输入的数据。发送方则以尽可能快的速度将数据传输到接收方。

typedef enum {frame_arrival} event_type;#include"protocol.h"void sender1(void){ frame s;                     /* buffer for an outbound frame */ packet buffer;                /* buffer for an outbound packet */ while(true) {  from_network_layer(&buffer);   /* go get something to send */  s.info=buffer;               /* copy it into s for transmission */  to_physical_layer(&s);        /* send it on its way */ }                           }void receiver1(void){ frame r; event_type event;             /* filled in by wait, but not used here */ while(true)  {   wait_for_event(&event);       /* only possibility is frame_arrival */   from_physical_layer(&r);      /* go get the inbound frame */   to_network_layer(&r.info);     /* pass the data to the network layer */  }}

该协议包含两种不同的流程:发送方和接收方。由于不需要使用序列号或确认机制,因此不需要使用MAX_SEQ。唯一可能的事件类型是“帧到达”,即未损坏的帧被接收到时发生的事件。发送方会以无限循环的方式快速发送数据。这个循环体包含三个操作:

  • 从网络层获取一个数据包。
  • 使用变量s来构造一个出站帧。
  • 请把这个框架发送出去吧。

其他领域则与错误检测与流量控制有关。在这里,不存在错误或流量控制的限制,因此这里只使用信息字段。 接收器同样非常简单。 当帧到达时,wait_for_event函数会被调用,此时event字段会被设置为frame_arrival。 从硬件缓冲区中新获取到的帧,会被 call_from_physical_layer 函数移除,然后被存储在变量 r 中,这样接收方就可以获取到它了。 在数据链路层,当数据部分被传递到网络层时,该层会暂停自己的工作,等待下一个帧的到来。 它既无法处理流量控制问题,也无法处理错误校正问题。因此,这种处理方式是不现实的。

乌托邦式简单协议的特性:

  • Utopian Simplex Protocol的设计基于两种机制:发送者和接收者。
  • 发送方和接收方都运行在数据链路层。不过,发送方运行在源机器的数据链路层,而接收方则运行在目标机器的数据链路层。
  • 它适用于单向数据传输。
  • 发送方和接收方始终处于准备处理数据的状态。
  • 他们两人都拥有无限多的缓冲空间可用。
  • 这些通信链接永远不会丢失任何数据帧。
  • 这种处理方式被认为是不现实的,因为它没有处理流量控制或错误校正的问题。
  • 该协议假设通信通道仅由发送方和接收方使用,没有任何其他设备能够干扰数据传输过程。
  • 发送方和接收方具有相同的时钟频率,因此它们之间不需要任何同步机制。
  • 该协议假设数据帧的大小是固定的,且发送方和接收方都知晓这一信息。
  • 不需要任何寻址机制,因为假设接收器是唯一连接到该通道的设备。
  • 该协议不支持对丢失或损坏的数据帧进行重传,因为它假设通信通道永远不会丢失任何数据。
  • 由于该通道是专用于一对发送器-接收器的,因此不存在对数据流进行多路复用或解复用的情况。
  • 该协议并未提供任何机制来检测接收到的数据帧中的错误,因为它假设通信通道是无错误的。
  • 该协议适用于简单的一对一通信场景,并不适合复杂的双向数据传输场景。
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

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