802.3 以太网帧结构
前导码 | 帧开始符 | MAC 目标地址 | MAC 源地址 | 802.1Q 标签 (可选) | 以太类型或长度 | 负载 | 冗余校验 | 帧间距 |
---|---|---|---|---|---|---|---|---|
10101010 7个octet | 10101011 1个octet | 6 octets | 6 octets | (4 octets) | 2 octets | 46–1500 octets | 4 octets | 12 octets |
64–1522 octets | ||||||||
72–1530 octets | ||||||||
84–1542 octets |
1、前导码和帧开始符:
一个帧以7个字节的前导码和1个字节的帧开始符作为帧的开始。快速以太网之前,在线路上帧的这部分的位模式是10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011。由于在传输一个字节时最不重要的位最先传输(即低位最先传输),因此其相应的16进制表示为0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xD5。
10/100M 网卡(MII PHY)一次传输4位(一个半字)。因此前导符会成为7组0x5+0x5,而帧开始符成为0x5+0xD。1000M网卡(GMII)一次传输8位,而10Gbit/s(XGMII) PHY芯片一次传输32位。 注意当以octet描述时,先传输7个01010101然后传输11010101。由于8位数据的低4位先发送,所以先发送帧开始符的0101,之后发送1101。
2、目的地址:6字节
3、源地址:6字节
4、类型/长度:2字节,0~1500保留为长度域值,1536~65535保留为类型域值(0x0600~0xFFFF)
5、数据:46~1500字节
6、帧校验序列(FCS):4字节,使用CRC计算从目的MAC到数据域这部分内容而得到的校验和。
当数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和错,就丢弃此帧。如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交”设备驱动程序”做进一步处理。这时我们的抓包软件才能抓到数据。
以太网规定,以太网帧数据域部分最小为46字节,以太网帧最小是6+6+2+46+4=64。