logo资料库

广工计算机网络课程设计.doc

第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
资料共19页,剩余部分请下载后查看
一、课程设计目的与意义
二、课程设计要求
三、帧结构分析
1.帧的介绍
2.CRC校验分析
四、帧封装的过程
1、填充帧头部字段
2、填充数据字段
3、CRC校验
五、帧封装流程图
六、帧封装方法的相关扩展
1、比特型算法
2、字节型算法
七、程序调试分析与结果
八、课程设计心得与体会
附录一:参考文献
附录二:帧封装源程序
课程设计 课程名称计算机网络 题目名称 Ethernet 帧发送过程模拟程序 学生学院计算机学院 专业班级 学 号 学生姓名 指导教师柳毅 2011 年 12 月 25 日
目 录 一、课程设计目的与意义 ····································································· 4 二、课程设计要求 ·············································································· 4 三、帧结构分析 ················································································· 4 1.帧的介绍 ················································································4 2.CRC 校验分析 ·········································································6 四、帧封装的过程 ·············································································· 9 1、填充帧头部字段 ·······································································9 2、填充数据字段 ········································································ 10 3、CRC 校验 ··············································································11 五、帧封装流程图 ·············································································13 六、帧封装方法的相关扩展 ·································································14 1、比特型算法 ··········································································· 14 2、字节型算法 ··········································································· 14 七、程序调试分析与结果 ····································································15 八、课程设计心得与体会 ····································································16 附录一:参考文献 ·············································································17 附录二:帧封装源程序 ·······································································18
一、课程设计目的与意义 帧是在数据链路层数据进行传输与交换的基本单位。构造帧对于理解网络协 议的概念、协议执行过程以及网络问题处理的一般方法具有重要的意义。本次课 程设计的目的是应用数据链路层与介质访问控制层的知识,根据数据链路层的基 本原理,通过构造一个具体的 Ethernet 帧,从而深入理解网络协议的基本概念 与网络问题处理的一般方法。 二、课程设计要求 编写程序,根据给出的原始数据,组装一个 IEEE802.3 格式的帧,(默认的 输入文件为二进制原始数据)。 1) 要求程序为命令行程序。比如,可执行文件各为 framer.exe,则命令行 形式如下: framer inputfile outpurfile 其中,inputfile 为原始数据文件,outpurfile 为输出结果。 2) 输出:对应 input1 和 input2 的结果分别为 output1 和 output2。 3) 开发环境: 硬件环境:PC 微机 软件环境:Windows xp Microsoft Visual C++ 6.0 三、帧结构分析 1.帧的介绍 术语“帧”来源于串行线路上的通信。其中,发送者在发送数据的前后各添 加特殊的字符,使它们成为一个帧。Ethernet 从某种程序上可以被看作是机器 这间的数据链路层连接。 首先我们来认识一下 Ethernet 帧结构,Ethernet V2.0 规范和 IEEE802.3 标准中的 Ethernet 帧结构有一些差别,这里我们按 802.3 标准的帧结构进行讨 论,图一给出了 Ethernet 帧结构图。 前导码 帧前定界符 目的地址 源地址 长度字段 数据字段 校验字段 (7B) (1B) (2/6B) (2/6B) (2B) (长度可变) (4B) 图一 Ethernet 帧结构
如图一所示,802.3 标准的 Ethernet 帧结构由 6 部分组成。 (1)前导码与帧前定界符字段 前导码由 56 位(7B)的 1010101…101010 位序列组成。帧前定界符可以 视为前导码的延续。1B 的帧前定界符结构为 10101011。 如果将前导码与帧定界符一起看,那么在 62 位 101010…1010 位序列之后出 现 11。在 11 之后是 Ethernet 帧的目的地址字段。前导码与帧前定界符主要是 保证接收同步,这 8B 接收后不需要保留,也不记入帧头长度中。 (2)目的地址和源地址 目的地址(DA)与法制地址(SA)分别表示帧的接收结点地址与发送结点的硬 件地址。  在 Ethernet 帧中,目的地址和法制地址字段长度可以是 2B 或 6B。目前 的 Ethernet 都使用 6B(即 48 位)长度的地址。  Ethernet 帧的目的地址可以是单播地址(unicast address)、多播地址 (multicast address)与广播地址(broadcast address),目的地址的第一位 为 0 表示单播地址,为 1 表示多播地址,目的地址为全 1 表示广播地址。 (3)长度字段 802.3 标准中的帧用 2B 定义数据字段包含的字节数。协议规定,帧数据的 最小长度为 46B,最大长度为 1500B。设置最小帧长度的目的是使每个接收结点 能够有足够的时间检测到冲突。 (4)数据字段 帧数据字段的最小长度为 46B。如果帧的 LLC 数据少于 46B,则应将数据字 段填充至 46B。填充字符是任意的,不计入长度字段值中。 (5)检验字段 帧校验字段(FCS)采用 32 位的 CRC 校验。校验的范围包括目的地址字段、 源地址字段、长度字段、LLC 数据字段。 此处,为了简便起见,采用 8 位的 CRC 校验。CRC 校验的生成多项式为: G(x)= x8+ x2+x+1 某些帧结构中还会包括帧类型字段,用来识别些帖所承载的数据的类型。当 一个帧到达指定的计算机时,操作系统根据帧类型决定用哪个协议软件模块对它
进行处理。自识别帧的主要优点是,可以在同一物理网络中使用多个协议而互不 干扰。 2.CRC 校验分析 我们已经知道了差错控制在通信中的重要意义,以及简单的差错校验码计算 过程。在这里我们进一步来了解循环冗余编码(CRC)的编码方式。它是一种重要 的线性分组码、编码和解码方法,具有简单、检错和纠错能力强等特点,在通信 领域广泛的用于实现差错控制。实际上,除数据通信外,CRC 在很多领域也是大 有用武之地的。 利用 CRC 进行检错的过程可简单描述如下:在发送端根据要传送的 k 位二进 制码序列,以一定的规则产生一个校验用的 r 位监督码(CRC 码),附在原始信息 的后边,构成一个新的二进制码序列(共 k+r 位),然后发送出去。在接收端,根 据信息码和 CRC 码之间所遵循的规则进行检验,以确定传送中是否出错。这个规 则在差错控制理论中称为“生成多项式” 。 (1)CRC 编码的代数学原理 在代数编码理论中,将一个码组表示为一个多项式,码组中的各码元作为多 项式的系数。 例如,1100101 表示为 1·x6+1·x5+0·x4+0·x3+1·x2+0·x+1, 即 x6+x5+x2+1。 设编码前的原始信息多项式为 P(x), P(x)的最高幂次加1等于 k;生成多项 式为 G(x),G(x)的最高幂次等于 r;CRC 多项式为 R(x);编码后的带 CRC 的信息 多项式为 T(x)。 发送编码的方法是:将 P(x)乘以 x^r(即对应的二进制码序列左移 r 位),再 除以 G(x),得余式即为 R(x)。 用公式可以表示为 T(x)=xrP(x)+R(x) 接收方解码的方法是:将 T(x)除以 G(x),如果余数为 0,则说明传输中无错 误发生,否则说明传输有误。 举例来说,设信息码为 1100,生成多项式为 1011,即 P(x)=x³+x²,G(x)=x³ +x+1,则可以用以下方法计算 CRC 。
xrP(x) x3(x3+x2) x6+x5 x -------- = ---------- = -------- = (x3+x2+x) + -------- G(x) x3+x+1 x3+x+1 x3+x+1 即 R(x)=x。注意到 G(x)最高幂次 r=3,得出 CRC 为 010。如果用竖式除法,计算 过程为: 1110 1011/1100000 (1100 左移 3 位) 1011 1110 1011 1010 1011 0010 0000 010 因此,T(x)=(x6+x5)+(x)=x6+x5+x,即 1100000+010=1100010。 如果传输无误,则 T(x) G(x) x6+x5+x x³+x+1 x³+²+x 无余式。看一下上面的竖式除法,如果被除数是 1100010,显然在商第 3 个 1 时, 就能除尽。 上述推算过程有助于我们理解 CRC 的概念。但如果直接编程来实现上面的算 法,不仅繁琐,而且效率也不高。实际上在工程中不会直接这样去计算和验证 CRC。 表一 标准的 CRC 名称 生成多项式 简记式 * 应用举例 ITU G.704 x4+x+1 x12+x11+x3+x+1 x16+x12+x2+1 CRC-4 CRC-12 CRC-16 CRC-ITU** 1005 IBM SDLC x16+x12+x5+1 1021 ISO HDLC, ITU X.25, V.34/V.41/V.42,
CRC-32 x32+x26+x23+...+x2+x+1 04C11DB7 CRC-32c x32+x28+x27+...+x8+x6+1 1EDC6F41 PPP-FCS ZIP, RAR, IEEE 802 LAN/FDDI, IEEE 1394, PPP-FCS SCTP 该表中列出了一些标准 CRC 资料。 ① 生成多项式的最高幂次项系数是固定的 1,故在简记式中,将最高的 1 统 一去掉了,如 04C11DB7 实际上是 104C11DB7 。 ② 前称 CRC-CCITT。ITU 的前身是 CCITT。 (2)CRC 的硬件电路实现 图 2 给出了 CRC 运算通用电路的方框图。 g1 g2 gn-2 + + gn + + + + LSB b0 数据输入 + + + MSB bn-1 b1 b2 bn-2 图二 CRC 运算通用电路方框图 CRC 计算生成多项式 G(x)通常用 n 次多项式定义:G(x)=Xn+gn-1Xn-1+…giXi+… +g2X2+g1X+1,其中 gi 为 0 或 1,i=1,2,…,n-1。通常 CRC 计算可以用有 n 个存 储器级的移位寄存器实现,如图二所示。如果多项式的相应项的系数为 1,那么 相应的存储器级输入端的模 2 加法器是有分支的。根据应用的不同,在系统开始 工作前将所有的移位寄存器全部置“0”或“1” 。 在图二中输入端送入的是原始数据序列,移位寄存器各级的输出 b0、b1、…、 bn-2、bn-1 便是 CRC 码字。其中 b0 和 bn-1 分别代表最低有效位(LSB)和最高有效位 (MSB)。 (3)CRC 的基本实现
分享到:
收藏