《计算机网络课程设计(第2版)》——3.3节相关知识

3.3 相关知识


  1. 术语“帧”来源于串行线路上的通信。其中,发送者在发送数据的前后分别添加特殊的字符,使它们成为一个帧。Ethernet从某种程度上可以被看做是机器之间的数据链路层连接。

首先我们来认识一下Ethernet帧结构,Ethernet V2.0规范和IEEE 802.3标准中的Ethernet帧结构有一些差别,这里我们按802.3标准的帧结构进行讨论。图3-1给出了Ethernet帧结构图。

如上图所示,802.3标准的Ethernet帧结构由7部分组成。
(1) 前导码与帧前定界符字段
前导码由56位(7 B)的10101010…101010位序列组成。帧前定界符可以视为前导码的延续。1 B的帧前定界符结构为10101011。
如果将前导码与帧前定界符一起看,那么在62位101010…1010位序列之后出现11。在11之后是Ethernet帧的目的地址字段。前导码与帧前定界符主要是保证接收同步,这8 B接收后不需要保留,也不记入帧头长度中。
(2) 目的地址和源地址
目的地址(DA)与源地址(SA)分别表示帧的接收结点地址与发送结点的硬件地址。

  • 在Ethernet帧中,目的地址和源地址字段长度可以是2 B或6 B。目前的Ethernet都使用6 B(即48位)长度的地址。
  • Ethernet帧的目的地址可以是单播地址(unicast address)、多播地址(multicast address)与广播地址(broadcast address),目的地址的第一位为0表示单播地址,为1表示多播地址,目的地址为全1则表示广播地址。
    (3) 长度字段

Ethernet帧用2 B定义数据字段包含的字节数。协议规定,帧数据的最小长度为46 B,最大长度为1500 B。设置最小帧长度的目的是使每个接收结点能够有足够的时间检测到冲突。
(4) 数据字段
帧数据字段的最小长度为46 B。如果帧的LLC数据少于46 B,则应将数据字段填充至46 B。填充字符是任意的,不计入长度字段值中。
(5) 校验字段
帧校验字段(FCS)采用32位的CRC校验。校验的范围包括目的地址字段、源地址字段、长度字段、LLC数据字段。
此处,为了简便起见,采用8位的CRC校验。CRC校验的生成多项式为:

G(X) = X 8 + X 2 + X1 + 1

某些帧结构中还会包括帧类型字段,用来识别此帧所承载的数据的类型。当一个帧到达指定的计算机时,操作系统根据帧类型决定用哪个协议软件模块对它进行处理。自识别帧的主要优点是,可以在同一物理网络中使用多个协议而互不干扰。

  1. CRC校验
    在前一章中我们已经介绍了差错控制在通信中的重要意义,以及简单的差错校验码计算过程。在这里我们进一步介绍循环冗余编码(Cyclic Redundancy Code, 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)乘以xr(即对应的二进制码序列左移r位),再除以G(x),得余式即为R(x)。
用公式可以表示为T(x) = xrP(x) + R(x)。
接收方解码的方法是:将T(x)除以G(x),如果余数为0,则说明传输中无错误发生,否则说明传输有误。
举例来说,设信息码为1100,生成多项式为1011,即P(x) = x3 + x2,G(x) = x3 + x + 1,则可以用以下方法计算CRC。

即R(x) = x。注意到G(x)最高幂次r = 3,得出CRC为010。如果用竖式除法,计算过程为:

1011       1110
1100000         (1100左移3位)
         1011
           1110
           1011
             1010
             1011
               0010
               0000
                 010

因此,T(x) = (x6 + x5) + (x) = x6 + x5 + x,即1100000+010=1100010。
如果传输无误,则

无余式。看一下上面的竖式除法,如果被除数是1100010,显然在商第3个1时,就能除尽。
上述推算过程有助于我们理解CRC的概念。但如果直接编程来实现上面的算法,不仅繁琐,而且效率也不高。实际上在工程中不会直接这样去计算和验证CRC。
表3-1列出了一些标准CRC的资料。

① 生成多项式的最高幂次项的系数固定为1,故在简记式中,将最高的1统一去掉了,如04C11DB7实际上是104C11DB7。
② 前称CRC-CCITT。ITU的前身是CCITT。
(2) CRC的硬件电路实现
图3-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个存储器级的移位寄存器实现,如图3-2所示。如果多项式的相应项的系数为1,那么相应的存储器级输入端的模2加法器是有分支的。根据应用的不同,在系统开始工作前将所有的移位寄存器全部置“0”或“1”。
在图3-2中输入端送入的是原始数据序列, 移位寄存器各级的输出b0、b1、…、bn-2、bn-1便是CRC 码字。其中b0 和bn-1分别代表最低有效位(LSB) 和最高有效位(MSB)。
(3) CRC的基本实现
以CRC-8(X 8 + X 2 + X 1 + 1)为例(如图3-3所示),它由多个移位寄存器和加法器组成。编码、解码前将各寄存器初始化为0,输入位作为最右边异或操作的输入之一。三个寄存器上的移位操作同时进行,均为左移一位,左边寄存器的最左一位作为三个异或操作的输入之一。每次移位时,最右边的寄存器内容作为中间异或操作的输入之一,中间的寄存器的内容作为最左边异或操作输入之一,各个异或操作的结果作为与它左边那个寄存器的移入位。重复以上步骤,每输入一位就做一次移位操作,直到输入了所有要计算的数据为止。这时,这个寄存器组中的数据就是CRC-8的结果。图3-3给出了CRC基本实现方法。
CRC的工作原理是:CRC在发送端编码和接收端校验时,都可以利用事先约定的生成多项式G(x)来得到,K位要发送的信息位可对应于一个(k-1)次多项式K(x),r位冗余位对应于一个(r-1)次多项式R(x),由r位冗余位组成的n = k + r位码字对应于一个(n-1)次多项式T(x) = X r * K(x) + R(x)。
(4) 循环冗余校验码的特点
CRC校验码的检错能力很强,不仅能检查出离散错误,还能检查出突发错误。CRC校验码具有以下检错能力:

  • CRC校验码可检测出所有单个错误。
  • CRC校验码可检测出所有奇数位错误。
  • CRC校验码可检测出所有双位的错误。
  • CRC校验码可检测出所有小于、等于校验位长度的突发错误。
  • CRC校验码可以[1-(1/2)k-1] 的概率检测出长度为(K + 1)位的突发错误。
时间: 2024-10-08 02:01:48

《计算机网络课程设计(第2版)》——3.3节相关知识的相关文章

《计算机网络课程设计(第2版)》——1.1节计算机网络课程的教学特点

第1章 计算机网络课程教学.实验与课程设计的关系 1.1 计算机网络课程的教学特点在进行计算机网络课程设计之前,我们需要对计算机网络课程的教学大纲.学习要求与教材体系做一个说明.因为不同的教材对学习内容的安排有所差异,但是本书综合考虑了不同教材的基本特点,总结计算机网络课程中必须掌握的基础知识与基本技能,在此基础上选择了14个课程设计的课题.根据计算机网络技术的特点,在计算机网络课程教学的组织中需要处理好以下三个方面的关系. 计算机技术知识与通信知识的关系从计算机科学与技术学科的角度来看,计算机

《计算机网络课程设计(第2版)》——1.3节计算机网络课程的知识点

1.3 计算机网络课程的知识点 1. 组织计算机网络课程的知识点 在组织计算机网络课程的知识点时,一般都是以Internet技术与高速网络技术为主线,加入网络发展的最新成果. 网络最重要的应用是Internet.Internet对科技进步和社会发展的影响是非常显著的,并且这种影响还在继续扩大,这也正体现出网络技术发展的生命力.因此,学习网络知识重要的是通过学习网络的基本知识,认识Internet的核心技术,理解Internet的实现方法.通过本课程的学习,学生能够初步掌握网络和Internet技

《计算机网络课程设计(第2版)》——导读

目 录 第一部分 课程设计目标第1章 计算机网络课程教学.实验与课程设计的关系 1.1 计算机网络课程的教学特点1.2 计算机网络课程的实验教学与课程设计的关系 1.3 计算机网络课程的知识点 1.4 课程设计要求及评分标准 第二部分 课程设计指导第2章 计算校验和 2.1 课程设计目的 2.2 课程设计要求 2.3 相关知识 2.4 课程设计分析 2.5 相关扩展 第3章 封装Ethernet帧 3.1 课程设计目的 3.2 课程设计要求 3.3 相关知识 3.4 课程设计分析 3.5 相关扩

《计算机网络课程设计(第2版)》——1.4节课程设计要求及评分标准

1.4 课程设计要求及评分标准 安排网络课程设计的目的有两个:一是引导学生将书本上抽象的概念与具体实现技术结合起来,使学习深化:二是消除学生对协议的神秘感,调动学生学习的积极性与主动性. 网络课程设计基本是按照上述的知识体系安排的.本书中的14个课程设计课题基本覆盖了上述4个学习单元的主要内容.每个题目都具有一定的代表性,希望学生通过完成课程设计课题,体会网络协议设计与实现过程,以及专业技术人员所使用的基本方法和技巧. 课程设计要求: 1) 正确理解题意. 2) 有良好的编程规范和适当的注释.

《计算机网络课程设计(第2版)》——3.1节课程设计目的

第 3 章 封装Ethernet帧 3.1 课程设计目的帧是在数据链路层中进行数据传输的基本单位.熟悉帧结构对于理解网络协议的概念.网络层次结构与协议执行过程具有重要意义.本课程设计的主要目的是通过封装Ethernet帧,了解Ethernet帧中各个字段的含义与用途.

《计算机网络课程设计(第2版)》——2.3节相关知识

2.3 相关知识 校验和的概念网络上的数据最终都是通过物理传输线路进行传输的,如果高层没有采用差错控制,那么物理层传输的数据可能有差错.为了保证传输数据的正确性,在物理层的基础上设计了数据链路层.设计数据链路层的主要目的就是在原始的.有差错的物理传输线路的基础上,采用差错检测.差错控制与流量控制等方法,将有差错的物理线路改进成逻辑上无差错的数据链路,以向网络层提供高质量的服务. 目前,进行差错检测和控制的主要方法是:发送方在需要发送的数据后面增加一定的冗余信息,这些冗余信息通常是通过对发送的数据

《计算机网络课程设计(第2版)》——3.4节课程设计分析

3.4 课程设计分析 1. 填充帧头部字段 要完成一次帧封装的过程,首先要完成的就是帧头部的装入,这一过程非常简单,只要将前导码.定界符.目的地址.源地址.长度字段的相应数值按顺序写入就可以了.其中,长度字段的值即为要发送的数据的实际长度.我们可以通过以下两种方式来获得长度字段的值. 方法一 while(!in.eof()) //读数据至缓冲区buf { in.get(a); buf[j]=a; //通过j来记录输入数据的长度 j++; } 方法二 infile.open(argv[1],ios

《计算机网络课程设计(第2版)》——2.4节课程设计分析

2.4 课程设计分析 校验和的计算过程主要分为三个步骤:数据文件的输入.校验和的计算和校验结果的输出.其中,主要的是数据的输入和校验和的计算. 1. 数据的输入方式 输入数据可能是以字符形式存储的,而校验和的计算则要采用数据形式,所以在从文件读取数据时,都要进行字符到数据的相互转换. 1) 将读入的ASCII码转化为相应的整型变量. if(ch>='0'&&ch<='9') ch-='0'; else { if(ch>='a'&&ch<='f') c

《计算机网络课程设计(第2版)》——3.2节课程设计要求

3.2 课程设计要求 根据后面介绍的IEEE 802.3帧结构,编写程序将指定数据封装为Ethernet帧. 1)以命令行形式运行: EncapFrame input_file output_file 其中,EncapFrame为程序名,input_file为输入数据文件,output_file为输出数据文件. 2)输出内容:Ethernet帧的各字段内容.

《计算机网络课程设计(第2版)》——2.2节课程设计要求

2.2 课程设计要求根据后面介绍的校验和算法,编写程序为给定数据计算校验和.1) 以命令行形式运行: Checksum input_file 其中Checksum为程序名,input_file为输入数据文件名.2) 输出内容:数据文件的校验和.