IEEE802标准将数据链路层划分为两个子层:逻辑链路控制子层(LLC)和数据链路控制子层(MAC)

一、介质访问控制子层

MAC子层构成数据链路层的下半部分,直接与物理层相连,负责介质访问控制机制的实现处理与特定类型的局域网相关问题。
介质访问控制方法
IEEE802载波侦听多路访问/冲突检测(CSMA/CD)
IEEE802.5令牌环
IEEE802.4令牌总线
不同的介质访问控制方法代表不同的局域网类型。

MAC寻址

1)MAC地址的构成
MAC地址共六个字节,前三个字节由网卡厂商向IEEE购买构成一个号码(地址块,OUI),后三个字节由厂商自行制定。注意前三个字节(OUI)并不能够单独用来标志一个公司,一个公司可以拥有多个OUI,一个OUI也可能有多个公司使用。
2)发送数据帧方式
MAC寻址是数据链路层中的MAC子层的主要功能,一个局域网可以发送单播帧,广播帧,多播帧。注意只有目的地址才能使用广播地址和多播地址。
3)过程
每个网卡都一个MAC地址,由于以太网的广播属性,网段中的MAC帧会被发送到以太网中的所有接口(一般是在由路由器划分的局域网中进行广播),网卡每接到一个MAC帧就会检测帧中的目的MAC地址并与自己的MAC地址进行比较,若是相同则接收进行下一步处理;若是不同则丢弃不进行处理。
注意:虽然要求不同设备的MAC要求是唯一的,但由于每经过一个路由网段,数据的源和目的MAC都要更改(源和目的IP地址不变),所以不同网段中存在相同的MAC地址也是可以的,只要在同一网段不重复即可。

二、帧格式

以太网帧数据中的类型必须是十六进制数,如0x0800(Ethernet II)。

以太网帧类型

Ethernet II(主要使用)
RAW 802.3
IEEE802.3/802.2 LLC
IEEE802.3/802.2 SNAP
使用时的区分
image.png
数据链路层 - 图2

以太网帧长度和最大传输单元(MTU)与前导帧

最小的以太网帧长度为64字节,最大的以太网帧长度为1518字节。如果帧不能满足64字节的要求必须填充相应的字节数据。如果IP层传输的数据长度超过最大传输单元(MTU),那么IP层就需要包分片。
为达到与比特流同步,从MAC子层向下传输到物理层还要在MAC帧的前面插入8个字节的前导帧,它是由硬件自动生成的。
前导帧有两个字节构成:
第一个字节称为前导码,每个字节的十六进制为0xAA,是接收端能够接受以太网帧时能够实现同步,因此又称为前导码;
第二个字节成为起始帧定界符,值为十六进制数0xAB标识以太网帧的开始。
image.png

1. Ethernet II帧格式(type大于等于1500)

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/478017/1623116870880-10710eea-a5ce-4f38-b72a-5bbf9125227c.png#align=left&display=inline&height=105&margin=%5Bobject%20Object%5D&name=image.png&originHeight=209&originWidth=937&size=45836&status=done&style=none&width=468.5)<br />工作在介质访问控制子层(MAC)
  1. DMAC/SMAC——源和目的地址,长度为六个字节;源地址仅包含单播地址。
  2. type:标识上层协议类型,如:IP v4—0x0800(2048)arp—0x0806(2054)
  3. image.png
  4. data:长度为46-1500(数据最小46=最小以太网帧长度64-帧头帧尾18)
  5. FCS:包含长度为4个字节的循环冗余校验值(CRC),由发送设备计算产生,在接收方被重新计算以确定帧在传送过程中是否被损坏。

前三个字段(DMAC、SMAC、Type)构成帧首部,FCS为帧尾部。
注意:帧首部并没有指出数据字段的长度,在有填充字段时,接受的MAC子层再剥去首部和尾部后就将数据字段和填充字段交给上层协议。上层协议必须具有识别有效帧数据长度的机制。
上层协议为arp的数据链路层
image.png
上层协议为ip的数据链路层
image.png

2. IEEE802.3/802.2 LLC(length小于等于1500,大多数用此协议)

image.png
工作在逻辑链路控制子层(LLC)

  1. DMAC/SMAC——源和目的地址,长度为六个字节;源地址仅包含单播地址。
  2. length:标识上层协议类型,如:IP v4—0x0800(2048)arp—0x0806(2054)
  3. DSAP/SSAP——用于标识目的/源协议,如:0x60标识IP协议,0xE0标识Novell协议
  4. control——指明该帧时无编号格式还是信息/监督格式
  5. data:长度为43-1497
  6. FCS:包含长度为4个字节的循环冗余校验值(CRC),由发送设备计算产生,在接收方被重新计算以确定帧在传送过程中是否被损坏。

参考文章:https://www.cnblogs.com/larry-luo/p/10983262.html