数据链路层及 MAC 地址

局域网

局域网组网中,以太网是目前唯一的标准。

以太网相关标准

  1. IEEE802:

    IEEE802帧

    • Length:表示 data 数据长度,需满足 <= 1500(0x05DC)。
    • LLC(逻辑链路控制):属于公有化协议,包含以下部分:
      • D.SAP:目标服务接入点。
      • S.SAP:源服务接入点。
      • Control(0x03):在逻辑意义上控制链路。
    • SNAP(子网络接入点):属于私有化协议,包含:
      • OrgCode:厂商标识。
      • Type:标识使用的是哪一个私有化协议。
  2. Ethernet2(以太网二型帧):

    Ethernet2帧

    • D.MAC(6B):目的 MAC,记录接收者的 MAC 信息。
    • S.MAC(6B):源 MAC,记录发送者的 MAC 信息。
    • Type(2B):类型,用于标识上层公有协议,数值 >= 1536 (0x0600)。例如,ARP = 0x0806 、IPV4 = 0x0800 、IPV6 = 0x086DD。
    • FCS(4B):帧校验序列,采用 CRC 循环冗余校验进行差错检测。
    • Data(46-1500B):为上层传过来的数据。

数据传输流程

  1. 发送者:填充源目的 MAC 信息、type(标识上层协议),进行 CRC 检验并将结果填充到 FCS。然后借助物理层,将数据转变成二进制比特流从链路中传递。
  2. 接收者
    • 检查数据的目的 MAC 地址,若不是本地 MAC 则丢弃;若是,则进行下一步。
    • 对数据进行 CRC 检验,与 FCS 比较,若不同则丢弃;若相同,则进行下一步。
    • 查看 type 字段,将数据交由标识的上层协议进行处理,至此数据链路层工作完成。

相关概念

  1. E2 和 IEEE 802.3 的作用:定义帧头和帧尾的格式。
  2. 分组转发:将数据切割成大小一致的长度,使网络中传递的数据长度大致相同,提升数据转发效率。
  3. MTU(最大传输单元):是每条链路上的概念。若报文 MTU 值过大,而链路所能承载的 MTU 过小,会导致数据分片或丢弃。

广域网

广域网涉及的协议有 PPP 和 HDLC 等。

MAC 地址(物理地址 / 网卡地址)

  1. 概念:每个设备出厂时,MAC 地址烧录进网卡芯片中,共 48 位。前 24 位代表供应商代码,后 24 位由厂商自行分配。
  2. 分类及通信特点
    • 单播:点对点、单对单的通信。数据封装时,源 MAC 和目的 MAC 都是单播 MAC 即为单播通信。单播 MAC 地址从高位向低位(从左往右)第 8 位一定为 0,其他位任意。
    • 组播:点对多点、单对多的通信,类似 qq 群聊。组播 MAC 地址从高位向低位第 8 位一定为 1,其他位任意。组播 MAC 仅能充当目的地址,不能作为源地址。设备加组可通过 IGMP(互联网组管理协议)或应用软件实现。
    • 广播:点对所有、单对所有的通信,是强制的接受处理。广播 MAC 地址从高位向低位 48 位全部为 1。广播 MAC 仅能充当目的地址,不能作为源地址。
  3. 不同场景下接收者的动作
    • 单播数据
      • 检查目的 MAC,若不是本地 MAC 则丢弃;若是,则进行下一步。
      • 进行 CRC 检验,与 FCS 比对,若不同则丢弃;若相同,则进行下一步。
      • 查看 type 字段,交由标识的上层协议处理,数据链路层工作结束。
    • 组播数据
      • 检查目的 MAC,若本地未加组则丢弃;若已加组,则进行下一步。
      • 进行 CRC 检验,与 FCS 比对,若不同则丢弃;若相同,则进行下一步。
      • 查看 type 字段,交由标识的上层协议处理,数据链路层工作结束。
    • 广播数据
      • 检查目的 MAC,若是广播则直接进行下一步。
      • 进行 CRC 检验,与 FCS 比对,若不同则丢弃;若相同,则进行下一步。
      • 查看 type 字段,交由标识的上层协议处理,数据链路层工作结束。