计算机网络技术 第一次作业
学号:2120110434
专业:计算机技术
姓名:高辰
一、背景知识
1. 以太网的基本帧结构
以太网最早是由 Xerox(施乐)公司创建的,在 1980 年由 DEC、Intel 和 Xerox 三
家公司联合开发为一个标准。以太网是应用最为广泛的局域网,包括标准以太网
(10Mbps)、快速以太网( 100Mbps)、千兆以太网( 1000 Mbps)和 10G 以太网,
它们都符合 IEEE802.3 系列 标准规 范。 Ethernet 是当今 应用最 广泛的 局域网 技术 。
TCP/IP 支持多种不同的链路层协议,不同的链路层协议使用不同形式的帧结构。这里
只讨论基于 IEEE 802.3 标准的 Ethernet 帧。帧是数据链路层传送数据的基本单位 。
Ethernet V2.0 的帧结构如下表所示。
前导码 帧前定界符 目的地址 源地址 类型字段 数据字段 帧校验字段
7B 1B 6B 6B 2B 46~1500B 4B
(1)
前导码和帧前定界符
在帧中设置前导码和帧前定界符,以便于帧的识别。前导码由 56 位(7Byte)的
10101010…1010 比特序列组成,每个字节都是 16 进制 0xAA。从 Ethernet 物理层电路
设计的角度,接受 Manchester 编码信号的电路是锁相技术,锁相电路从开始接收到进
入稳定状态的时间大约为 12b。设置前导码与帧前定界符的目的是保证接收电路在目的
地址字段到达前进入稳定状态,能正常接收比特流。前导码不计入帧头长度。帧前定
界符可以视为前导码的延续。帧前定界符由一个 8 位的字节组成,其比特序列位
10101011。帧前定界符不计入帧头长度。如果将前导码与帧前定界符一起看,则在 62
位“10101……1010”比特序列后出现“11”。在“11”两个比特后是目的地址字段,从而实现
接受同步的作用。
(2)
目的地址与源地址
目的地址与源地址分别表示帧的接收结点与发送结点的硬件地址,又称为 MAC
地址,长度为 6 个字节。为了保证 MAC 地址的唯一性,专门由 IEEE 注册管理委员会
负责为每个网卡生产商分配 Ethernet 物理地址的前 3 个字节,即公司标识 (commpany-
id),也称为机构唯一标识符( Organzationally Unique Identifier,OUI)。
(3)
类型字段
类型字段长度为 2 个字节,在本程序中,它作为长度字段使用,表示数据段的长
度。
网络节点之间要想成功通信,就要将待发送的数据放帧的数据字段上,数据字段的长
度范围为 46B-1500B,若用户所发送的数据不满 46B,则由程序将数据填充到 46B,否
则,帧的长度过短就会被丢弃。设置最小帧长的目的是使每个接受节点有足够的时间
来检测冲突。
(4)
数据字段
数据字段是高层待发送的数据部分,数据字段的最小长度为 46B。如果帧的数据字
段值小于 46B 则应将其填充至 46B,填充字符是任意的,不计入长度字段中。数据字
段的最大长度为 1500B。Ethernet 帧最小长度为 64B,最大长度为 1518B。帧长为 64B
时,按 10Mbps 发送 512bit 需要 51.2us,正好是协议中规定“冲突窗口”的时间长度。当
一个结点收到的帧长度短语 64B 时,就可以判断它是一个不合法的冲突碎片,并且应
该立即丢弃。。设置最小帧长度的主要目的是让每一个结点都能尽快检测到冲突,以
提高总线的利用率。
(5)
校验字段
校验字段采用 32 位 CRC 校验,校验码校验的字段包括目的地址,源地址,类型
字段,数据字段。本次程序中采用的 8 位 CRC 校验,故校验字段长度为 1B。
CRC 校验的工作原理是:将要发送的数据比特序列当作一个多项式 f(x)的系数,在发
送端用收发双方预先约定的生成多项式 G(x)去除,求得一个余数多项式。将余数多项
式附在数据多项式之后发送到接收端。在接收端用同样的生成多项是 G(x)去除接受数
据多项式 f(x),得到计算余数多项式。如果计算余数多项式与接受余数多项式不相同,
则表示传输有差错;否则数据认为正确而被接受。 CRC 编码实际上是一个循环移位的
模 2 运算,在加法中不进位,在减法中不借位,等价于操作数的按位异或(XOR)。
8 位 CRC 校验的生成多项式为:G(x)=x8+x2+x+1
2. 常见的 CRC 校验种类及查表法
MAC 帧中使用的 CRC 校验,是一种在 K 位信息码后再拼接 R 位的校验码的校验
方式。整个编码长度为 N 位,因此, 这种编码又 叫(N,K)码。对于一个给定的
(N,K)码,可以证明存在一个最高次幂为 N-K=R 的多项式 G(x)。根据 G(x)可以生
成 K 位信息的校验码,而 G(x)叫做这个 CRC 码的生成多项式。
常见的 CRC8 校验及多项式有以下 5 种:
CRC-8-CCITT x8 + x2 + x + 1
CRC-8-Dallas/Maxim x8 + x5 + x4 + 1
CRC-8 x8 + x7 + x6 + x4 + x2 + 1
CRC-8-SAE J1850 x8 + x4 + x3 + x2 + 1
CRC-8-WCDMA x8 + x7 + x4 + x3 + x + 1
校验码的具体生成过程为:假设发送信息用信息多项式 C(X) 表示,将 C(x)左
移 R 位,则可表示成 C(x)*2 的 R 次方,这样 C(x)的右边就会空出 R 位,这就是校验码
的位置。通过 C(x)*2 的 R 次方除以生成多项式 G(x)得到的余数就是校验码。
通常在实用中并不采取这样的计算方式,而是使用效率更高的查表法。我们假设
通过前述的移位处理了 8 个 bit 的数据,相当于把之前的 CRC 码的高字节(8bit)全部移
出,与一个 byte 的数据做 XOR 运算,根据运算结果来选择一个值(称为余式),与原来
的 CRC 码再做一次 XOR 运算,就可以得到新的 CRC 码。
3. CSMA/CD 的冲突检测方法