1)前导字符,在每种格式的以太网帧的开始处都有64比特(8字节)的前导字符,其中,前7个字节称为前同步码(Preamble),内容是16进 制数 0xAA,最后1字节为帧起始标志符0xAB,它标识着以太网帧的开始。前导字符的作用是使接收节点进行同步并做好接收数据帧的准备。
2)目标MAC,共6字节,表示该数据帧被局域网中哪台主机接收。
3)源MAC,共6字节,表示该数据帧发出方的MAC。
4)类型,共2字节,标识出以太网帧所携带的上层数据类型,其中:
1536 XEROX NS IDP
2048 Internet 协议 (IP)
2049 X.752050NBS
2051 ECMA
2053 X.25第3层
2054 ARP
2055 XNS
4096 伯克利追踪者
21000 BBS Simnet
24577 DEC MOP 转储/装载
24578 DEC MOP 远程控制台
24579 DEC 网 IV 段
24580 DEC LAT
24582 DEC
32773 HP 探示器
32821 RARP
32823 Apple Talk
32824 DEC 局域网桥
如果使用Winpcap抓ARP包,那么抓到的包中这两字节应该都是0x0806即十进制2054,表该帧承载一个ARP包,Winpcap就以这 两个自己来是别一个包属于那种包(如果捕TCP或者UDP包,那么这两个字节应该是2048,因为TCP和UDP等等很多协议都属于IP族的协议)。
5)数据,长度为46-1500字节,数据包的内容。对于ARP包,它应该是:
a)硬件地址类型,2字节,为1时表示以太网,为6表示令牌环网格式等等。
b)协议地址格式,2字节,同以太网帧的各种取值情况,因为ARP一般负责MAC和IP地址间的转换,所以这两个字节一般固定取0x0800。
c)硬件地址长度,1字节,表MAC地址的长度,一般取6.
d)协议地址长度,1字节,表协议地址的长度,这跟b)中指定的协议类型有关,所以一般也固定取4.
e)操作码,2字节,表示该ARP包的用意,为1时表示已知IP地址查询MAC,为2时表示应答一个IP地址对应的MAC。
f)发送者硬件地址,长度由c)指定
g)发送者协议地址,长度由d)指定
h)目的方硬件地址,长度由c)指定
i)目的方协议地址,长度由d)指定
6)验证码,是4个字节的帧校验序列(Frame Check Sequence,FCS),采用32位CRC循环冗余校验对从"目标MAC地址"字段到"数据"字段的数据进行校验。