计算机网络课程设计 - 模拟以太网帧封装

更新时间:2023-10-13 08:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机通信网络报告 —以太网帧封装模拟

学 生1: 叶 健 12122268 贡献比:20% 学 生2: 赵思晨12121461 贡献比:20% 学 生3: 刘 赟 12122549 贡献比:20% 学 生4: 王晨浩 12122090 贡献比:20% 学 生5: 游赛夫 12160006 贡献比:20% 组 长: 赵思晨 组长电话: 18221796781 指导老师: 冯玉田 完成时间: 2015年10月

目 录

1.设计任务和要求 ........................................ 2 1.1 课程设计任务 ..................................... 2 1.2 课程设计要求 ..................................... 2 2.设计原理 .............................................. 2 2.1 802.3标准帧结构 .................................. 2 2.2 CRC的基本实现 .................................... 3 3.设计实现 .............................................. 3

3.1 设计思路 ......................................... 3 3.1.1 填充帧头部字段 ................................ 3 3.1.2填充数据字段 .................................. 3 3.1.3 计算填充CRC .................................. 4 3.2 流程图 ........................................... 4 3.2.1 程序流程图 .................................... 4 3.2.2 CRC计算流程图 ................................ 5 4.程序源码 .............................................. 6 5.运行结果 .............................................. 8 6.总结体会 ............................................. 11

1

1.设计任务和要求

1.1课程设计任务

帧是数据链路层的协议数据单元,它包括三部分:帧头,数据部分,帧尾。其中,帧头和帧尾包含一些必要的控制信息,比如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如IP数据包。本项目设计软件,实现以太网帧的封装、传输、解析。

1.2设计要求

1.编写程序,从文件中读取数据; 2.将数据组装成IEEE802.3格式的帧;

3.通过两台计算机的通信,把帧从一台计算机传输到另一台计算机。

2.设计原理

2.1 802.3标准帧结构

以太网Ethernet帧格式:

前序(P) 目的地址(SD) 源地址(SA) 8 B

1. 前序字段

前序字段由7个字节的交替出现的1和0组成,设置该字段的目的是指示帧的开始并便于网络中的所有接收器均能与到达帧同步。 2.帧起始定界符字段

它可以被看作前序字段的延续。实际上,该字段的组成方式继续使用前序字段中的格式,这个一个字节的字段的前6个比特位置由交替出现的1和0构成。该字段的最后两个比特位置是11,这两位中断了同步模式并提醒接收后面跟随的是帧数据。 3.目的地址字段

目的地址字段确定帧的接收者。6个字节的源地址和目的地址字段是局域网中的所有工作站必须使用同样的地址结构。 4.源地址字段

源地址字段标识发送帧的工作站。和目前地址字段类似,源地址字段的长度六个字节。 5.长度字段

2

长度 2B 数据 46~1500B FCS 4B 6B 6B

用于IEEE802.3的两字节长度字段定义了数据字段包含的字节数。从前序 到FCS字段的帧长度最小必须是64字节。基于最小帧长为64字节和使用六字节地址字段的要求,意味着每个数据字段的最小长度为46字节。如果传输数据少于46个字节,应将数据字段填充至46字节。不过,填充字符的个数不包括在长度字段值中,数据字段的最大长度为1500字节。 6.数据字段

数据字段的最小长度必须为46字节以保证帧长至少为64字节,这意味着传输一字节信息也必须使用46字节的数据字段:如果填入该该字段的信息少于46字节,该字段的其余部分也必须进行填充零。数据字段的最大长度为1500字节。 7. 校验序列字段

将计算出的CRC填入32位的FCS校验字段。帧校验序列字段提供了一种错误检测机制,包括了地址字段、长度字段和数据字段的循环冗余校验(CRC)码。

2.2 CRC的基本实现

利用CRC进行检错的过程可简单描述如下:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息的后边,构成一个新的二进制码序列(共k+r位),然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。这个规则在差错控制理论中称为“生成多项式”。

3.设计实现

3.1设计思路

3.1.1 填充帧头部字段

在这一部分需要向输出文件写入前导码、帧前定界符、目的地址、源地址和长度字段。写入前四个部分相对简单,而写入长度字段时需要计算输入文件的长度。所以计算输入文件长度的方法如下:

ioBuffer.put(head);

ioBuffer.put(Common.getLocalMac(\ioBuffer.put(Common.UMAC); ioBuffer.put(Common.TYPE);

3.1.2 填充数据字段

在程序中是用以下方法实现的:

ioBuffer.putString(s,charsetEncoder); }

3.1.3计算填充CRC

3

帧封装的最后一步就是对数据进行校验,并将校验结果记入帧校验字段。本程序中实现的是CRC32校验算法,方法如下所示: ioBuffer.put(Common.getCRC32(s.getBytes())); ioBuffer.flip();

3.2程序流程图

3.2.1程序流程图

4

本文来源:https://www.bwwdw.com/article/ss4f.html

Top