1.3.1 介质访问控制协议
IEEE 802.3的MAC层主要定义了CSMA/CD介质访问控制协议,以及数据帧的封装与发送、数据帧接收与解封等功能。
CSMA/CD是一种争用型介质访问控制协议。它起源于美国夏威夷大学开发的ALOHA网络系统所采用的ALOHA协议,并进行了改进,提高了介质利用率。
CSMA/CD也是一种分布式介质访问控制协议,网络中的各个节点都能独立地决定数据帧的发送与接收。每个节点在发送数据帧之前,首先要进行载波监听,只有介质空闲时,才允许发送帧。这时,如果两个以上的节点同时监听到介质空闲并发送数据帧,则会产生冲突现象,导致数据帧受到损坏,成为无效的数据帧,被损坏的数据帧必须重新发送。每个节点都有能力随时检测冲突是否发生,一旦发生冲突,则应停止发送,以免介质带宽因传送无效帧而被白白地浪费。然后随机延时一段时间后,重新争用介质,重发该帧。CSMA/CD协议简单、可靠,采用该协议的Ethernet被广泛使用。
1.CSMA/CD的帧格式
在IEEE 802.3的CSMA/CD协议中,定义了如图1-4所示的帧格式。
图1-4 CSMA/CD的帧格式
帧格式中的各个字段的意义如下。
(1)PA(前导码):帧同步序列,其格式为连续7字节的“10101010”二进制序列,它的作用是使接收节点的接收电路在正式开始接收帧之前达到稳定的同步状态,但它不作为帧的有效成分。
(2)SFD(帧定界符):表示一个有效帧的开始,其格式为“10101011”二进制序列,它也不作为帧的有效成分。
(3)DA,SA(目的地址,源地址):分别表示目的节点和源节点地址,可以选择16位或48位地址长度,但这两个地址长度必须保持一致。DA可以是单地址、多播地址或广播地址;而SA必须是单地址。在选用48位地址时,可用特征位来指示该地址是作为局部地址还是作为全局地址。
(4)FL(帧长度):以字节为单位来表示PDU数据的实际长度。
(5)PDU(协议数据单元):表示要传送的LLC层数据,LLC层数据应是一个字节序列,最大数据长度为1500字节。
(6)PAD(填充):MAC帧要求有最小帧长限制,最小帧长为64字节,其中包括18字节固定长度的帧头(帧头为DA、SA、FL和FCS等4个字段,共18字节)在内。如果实际的PDU数据长度小于46字节,必须在PAD字段上填充若干字节的0,使PDU和PAD字段的总长度不小于46字节;否则,接收节点会把超短帧作为“帧碎片”过滤掉,不予接收。
(7)FCS(帧校验序列):采用32位CRC校验,用规定的生成多项式去除数据信息,获得的余数作为校验序列填入FCS字段。
因此,包括18字节的帧头和帧尾在内的最大帧长为1518字节。
从图1-4的帧结构可以看出,MAC层协议在LLC层PDU的外面,加上帧头和帧尾,组装成完整的MAC帧,然后经物理层传送出去。也就是说:
(1)上层的信息I经过LLC层时被封装成LLC帧。其中,DSAP、SSAP是服务访问点地址,它是一种逻辑接口,以便在源节点和目的节点的对等协议层之间建立通信关系,目的节点将接收的信息I提交给DSAP所指示的上层协议。
(2)LLC层经过MAC层时又被封装成MAC帧。其中,DA、SA地址是目的节点和源节点地址,主要在两个节点之间建立通信关系,节点将根据DA来确定是否接收数据帧,如果节点地址与DA相匹配,则接收该数据帧;否则,将不接收该数据帧。可见,数据帧必须通过这样的层层封装,才能最终实现数据传输。
目的节点要对接收到的数据帧进行解封,解封过程与封装过程正好相反,一层层地去掉附加的地址信息和辅助信息,最后只将信息I提交给由DSAP指示的上层协议。
2.CSMA/CD的帧发送过程
CSMA/CD协议的帧发送工作过程如图1-5所示。
图1-5 CSMA/CD的帧发送流程
(1)一个节点在发送数据帧之前,首先要检测介质是否空闲,以确定介质上是否有其他节点正在发送数据。
(2)如果介质空闲,则可以发送;如果介质忙碌,则要继续检测,一直等到介质空闲时方可发送。
(3)在发送数据帧的同时,还要持续检测介质是否发生冲突。一旦检测到冲突发生,便立即停止发送,并向介质上发出一串阻塞脉冲信号来加强冲突,以便让介质上其他节点都知道已发生冲突。这样,介质带宽不致因传送已损坏的帧而被白白地浪费。
(4)冲突发生后,应随机延迟一个时间量,再去争用介质。通常采用的延迟算法是二进制指数退避算法,其算法的过程如下:
① 对于每个帧,当第一次发生冲突时,设置参数>L=2。
② 退避时间间隔取1~>L个时间片中的一个随机数。1个时间片等于2>a,>a为数据从始端传输到末端所需的时间。
③ 每当帧重复发生一次冲突,则将参数>L加倍。
④ 设置一个最大重传次数,如果超过这个次数,则不再重传,并报告出错信息。
这个算法是按照后进先出的次序控制的,即未发生冲突或很少发生冲突的帧,具有优先发送的概率。而发生过多次冲突的帧,发送成功的概率反而小。
3.CSMA/CD的帧接收过程
其他非发送节点总是处于检测介质状态。当介质上有信号而变成活跃状态时,将启动帧接收过程,见图1-6。
图1-6 CSMA/CD的帧接收流程
每个接收节点对接收到的帧必须进行如下的帧有效性检查。
(1)滤除因冲突而产生的“帧碎片”,即当接收的数据帧长度小于最小帧长限制(64字节)时,则认为是不完整的帧而将它丢弃掉。
(2)检查帧目的地址字段(DA)是否与本节点地址相匹配。地址匹配分两种情况:如果DA为单地址,两个地址必须完全相同;如果DA为组地址或广播地址,则认为是地址相匹配,因为MAC层没有能力处理组地址或广播地址的帧,必须先接收下来,然后提交给上层协议来处理。如果地址不匹配,则说明不是发送给本节点的,而将它丢弃掉。
(3)对帧进行CRC校验。如果CRC校验有错,则丢弃该帧。
(4)对帧进行长度检验。接收到的帧长必须是8位的整数倍,否则丢弃掉。保留有效的数据帧、去除帧头和帧尾后,将数据提交给LLC层。
4.MAC层与相邻层的接口
MAC层定义了两个与相邻层的接口。
(1)MAC与LLC之间的接口。MAC层通过该接口向LLC层提供LLC帧的发送与接收服务。该接口定义了两个功能,即帧发送和帧接收。LLC层可以通过该接口使用MAC层设施来发送和接收LLC帧。
(2)MAC与PLS之间的接口。PLS子层通过该接口向MAC层提供MAC帧的发送与接收服务。该接口定义了两个功能,即位发送与位接收。三个状态变量,冲突检测、载波监听和发送正在进行中。MAC层通过该接口使用物理层设施,并根据物理层提供的介质状态,对介质访问实施相应的控制。
表1-2是10BASE5参数值,其中最大重传次数表示当发生16次冲突后,MAC控制器便停止动作,向高层软件报告错误;退避极限表示当发生10次冲突后,随机后退等待的最大时隙被固定在1023,而冲突次数小于10时,等待时隙数则从2i-1中随机选出。
表1-2 10BASE5参数值
Ethernet规范中的帧格式与IEEE 802.3中的帧格式基本相同,只是IEEE 802.3帧格式中的FL(帧长度)字段在Ethernet帧格式中被定义为FT(帧类型)字段。在其他方面,IEEE 802.3的CSMA/CD标准非常接近于Ethernet规范。事实上,两者之间的大多数差异已经在该标准的高版本中得到解决。
按照传输速率,Ethernet可分为10Mbps Ethernet、100Mbps Ethernet、1Gbps Ethernet和10Gbps Ethernet等,由于10Mbps Ethernet已经被淘汰,下面主要介绍100Mbps Ethernet、1Gbps Ethernet和10Gbps Ethernet的物理层协议及其网络组成方法。