以太网协议

数据链路层中定义的协议有以太网协议(Ethernet)、高级数据链路控制(HDLC)、点对点协议(PPP) 、帧中继(FR)协议等。常见的是以太网协议。

MAC地址 #

MAC地址共48位(6个字节),以十六进制表示。前24位由IEEE决定如何分配,后24位由实际生产该网络设备的厂商自行指定。

MAC地址又可以分为单播MAC地址、广播MAC地址、多播MAC地址。单播MAC地址唯一地标识以太网上的一个终端; 广播MAC地址用来表示网络上的所有终端设备,全为1,表示为ff:ff:ff:ff:ff:ff;多播MAC地址用于代表网络上的一组终端,第8位位1, 例如lacp、流控等协议报文mac为01:80:C2:xx:xx:xx

以太网帧 #

Ethernet II, IEEE 802.Q.

DASATypePayLoadFCS
6 Bytes6 Bytes2 Bytes46~1500 Bytes4 Bytes
  • DA(Desstination Address): 目标节点的MAC地址
  • SA(Source Address): 源节点的MAC地址
  • Type: <=1500为length,>=1536为Ethertype
  • PayLoad: 上层协议有效载荷
  • FCS: 4字节的校验和

以太网中,最小帧长为64字节,这是由最大传输距离和冲突检测机制共同决定的。

常见以太网类型:

0x8100: VLAN

0x88A8: QINQ

0x0800: IP协议

0x0806: ARP协议

0x0835: RARP协议

报文有多层头时,例如QINQ、IP-IN-IP,将靠近以太头的称为外层,靠近PayLoad的称为内层。

前导码 #

每个以太网帧发送时都是以8个字节的前导码开始。

Preamble是1和0交替(1 0 1 0 1 0 …)的7个字节数据, 该部分的作用是通知接收方有数据帧到来, 使其与输入的时钟保持同步, 56bit 模式容许站点在帧的开始可以丢弃一些bit。

SFD是一个字节10101011, 最后使用11, 来通知接收方下一字段就是目的主机的地址了. 实际上前导码都是在物理层加进去的, 并不是帧的一部分.

帧间隙 #

以太网传送数据时, 每两个帧之间存在帧间隙IFG(Inter Frame Gap),帧间隙的作用是使介质中的信号处于稳定状态, 同时让帧接收者对接收的帧作必要的处理(如调整缓存取的指针、更新计数、发中断让主机对报文进行处理), 通常为12字节.

交换模式 #

交换机的交换模式有Cut-Through、Store-and-Forward两种。

在Cut-Through模式下,交换机在接受到目的地址后即开始转发过去,交换机不检测错误,直接转发数据帧,延迟小。

在Store-and-Forward模式下,交换机接受到玩家的数据帧后才开始转发过程,交换机检测错误,一旦发现错误,将丢弃数据包,延迟较大。