To be a better coder
分类: LINUX
2019-08-05 18:59:32
我把原始数据考了过来
0000 ff ff ff ff ff ff 00 0c f1 d4 d9 60 08 06 00 01 ...........`....
0010 08 00 06 04 00 01 00 0c f1 d4 d9 60 c0 a8 01 0f ...........`....
0020 00 00 00 00 00 00 c0 a8 01 02 ..........
根据定义
头6个字节是以太网目的地址 ff ff ff ff ff ff 这是一个广播地址,全网下的所有终端都能接受到
紧跟着的6个字节是以太网源地址就是发送者的mac地址 00 0c f1 d4 d9 60 是我的mac地址
真类型占两个字节 所以是 08 06 到这里以太网头就完了,08 06指的是后面的数据是属于arp包的
接着分析arp包。头两个字节是硬件类型 00 01 接着两个字节是协议类型arp使用的是ip协议代号08 00
硬件地址长度协议地址长度分别是6和4.这与arp报文格式是对应的(更详细信息可以参考TCP-IP详解卷1)
后面的2个字节op指的是这是一个请求包还是应答包,分别对应的值是0x0001和0x0002,原始数据里是
00 01 所以这是一个请求包,然后6个字节又是发送者mac地址00 0c f1 d4 d9 60 ,后面4个字节是发送者ip
地址c0 a8 01 0f ,换成比较容易理解的10进制格式就是192 168 1 15,这是我的ip,然后的6个字节留空00
00 00 00 00 00 在arp请求包里也可以是其他数据 因为等会 ip地址为c0 a8 01 02 (192.168.1.2)会把自己的mac地址填充那6个字节,