MAC地址

硬件地址又称为物理地址或MAC地址,IEEE 802标准规定了一种48位的全球地址,是指每一台计算机中固化在适配器的ROM中的地址。

以太网帧结构

  • DMAC:6字节,目的MAC地址,IPV4为6字节,该字段确定帧的接收者。可以是一个单播MAC地址,或组播MAC地址或者广播MAC地址。
  • SMAC:6字节,源MAC地址,IPV4为6字节,该字段标识发送帧的工作站。只能是一个单播MAC地址。
  • Type:2字节,用来表示荷载数据的类型。例如:该字段值如果是0x0800,则表示荷载数据是一个IPv4 Packet ,0x86dd是IPv6 Packet,0x0806是ARP Packet,0x8848是MPLS报文等。
  • Data:变长,数据字段的最小长度必须为46字节以保证帧长至少为64字节,这意味着传输一字节信息也必须使用46字节的数据字段。如果填入该字段的信息少于46字节,该字段的其余部分也必须进行填充。数据字段的最大长度为1500字节。
  • CRC:4字节,用于帧内后续字节差错的循环冗余检验(也称为FCS或帧检验序列)

注意:CRC在wireshark中无显示,若CRC错误,可能在网卡层或传入内核时被丢弃

相关知识点

  1. MTU:最大传送单元(Maximum Transfer Unit),规定了以太网帧的最大长度,默认为1518字节
  2. 以太网帧最小长度为64字节,小于64自动填充,传输时将有效数据和填充字节一起传递给上层协议,上层协议会有有效数据长度标识,将填充字节丢弃
  3. 若数据长度和以太网帧格式大于MTU,则进行IP分片,后续文章会进行介绍
  4. MAC帧向下传递到物理层时还要再帧的前面插入8字节(由硬件生成),它由两个字段构成
    • 7字节的前同步码(1和0交替码),它的作用是使接收端的适配器在接收MAC帧时能够迅速调整其时钟频率,使它和发送端的时钟同步,也就是实现“位同步(比特同步)”
    • 1字节的帧开始界定符,定义为10101011,它的前六位的作用和前同步码相同,最后的两个连续的1告诉接收端MAC帧马上来了,
  5. MAC帧的FCS帧检验序列不包括前同步码和帧开始界定符
  6. 在以太网上传输数据时以帧为单位传送,在各帧之间需要保持一定的间隔,因此,接收端只要找到帧开始界定符,其后面连续到达的比特流就都属于同一个MAC帧,又由于以太网帧在物理层采用曼彻斯特码,用下降沿标识1,上升沿标识0,必须有电平变化,当帧结束后,网卡接口上的电压就不再变化,那么就可以确定何时结束了,所以以太网不需要帧结束界定符,也不需要在帧格式中指出长度
  7. 无效MAC帧:
    • 帧长度不是整数个字节
    • FCS校验出错
    • MAC帧长度不在64-1518字节之间
      无效的MAC帧网卡直接丢弃,以太网不负责重传