以太网 V2 MAC帧的封装,解析,发送

核心算法分析:

 

1. 解析帧结构模块

       本模块实现了将封装好的MAC帧各字段解析为可阅读的文本的功能。

以太网 V2 MAC帧的封装,解析,发送_第1张图片

       其中,任意位置的读入失败都抛出文件已到达末尾异常,结束解析。

 

2. 封装数据帧模块

       本模块实现了将用户输入的文本封装为MAC帧的功能。

 

 以太网 V2 MAC帧的封装,解析,发送_第2张图片

 

 

3. 模拟发送帧模块

       本模块实现了简单的CSMA/CD协议,能够模拟单机发送一个MAC帧的过程。

步骤一:载波侦听过程(CSMA)

 

以太网中每个结点利用总线发送数据,总线是每个结点共享的公共传输介质。所以结点在发送一个帧前,必须侦听总线是否空闲。由于以太网的数据采用曼彻斯特编码方式,所以可以通过判断总线电平是否跳变来确定总线是否空闲。若总线空闲,就可以启动发送,否则继续监听。

 

步骤二:冲突检测(CD)

 

在数据发送过程中,可能会产生冲突(冲突是指总线上同时出现两个或两个以上的发送信号,他们叠加后的信号波形与任何发送结点的输出波形都不相同)。因为可能多个主机都在侦听总线,当他们侦听到总线空闲时,就会往总线上发送数据。所以在发送数据的过程中,也应该进行冲突检测,只要发现冲突就该立即停止发送数据。

以太网 V2 MAC帧的封装,解析,发送_第3张图片

步骤三:随即延迟后重发

 

随机延迟后重发。在检测到冲突,停止发送后,结点进行随机延迟后重发。若发16次后还未成功,则宣告发送失败,取消该帧的发送。随机延迟的算法一般采用截断二进制指数退避算法。

 

 

 

 

 

 

 

 

具体流程图如下所示:

      以太网 V2 MAC帧的封装,解析,发送_第4张图片

       本程序中,对冲突和总线忙两种状态的检测均采用随机值模拟。发生冲突的概率为87.5%,总线忙的概率为50%。

 

4.CRC8校验

       为求精简而高效,本程序采用适用于CRC8的高效率的查表法。具体算法在背景知识章节中已有描述。

 以太网 V2 MAC帧的封装,解析,发送_第5张图片


你可能感兴趣的:(计算机网络)