一、原理
因为TCP/IP协议的层次结构,当数据报文从协议栈内部下行送到L2层时,会添加以太网帧头部结构,即dst MAC/src MAC/type等字段,ARP协议能实现从IP地址到MAC地址的转换,src ip比较容易得到, dst ip可能就会用到路由中的下一跳了,扯远了。总之即:ip--->MAC;注意ARP的数据报是在一个局域网内部收发的。
二、报文格式:
字段说明:
硬件类型 --- 如0x0001表示MAC地址
协议类型 --- 如0x0800表示IP协议
硬件地址长度 --- 如0x6表示MAC地址6bytes
协议地址长度 --- 如0x4表示IP地址长度4bytes
操作 --- 如0x0001表示ARP请求,0x0002表示ARP应答
发送端以太网地址 --- 如“0003 2925 1110”即00:03:29:25:11:10
发送端IP地址 --- 如“c0a8 01cc” 即192.168.1.204
目的端以太网地址 --- “0000 0000 0000” 清空
目的端IP地址 --- 如“c0a8 0101”即192.168.1.1
三、报文实验:
IP地址192.168.1.204请求192.168.1.1的MAC地址,发送和反馈的ARP情况:
#tcpdump -i eth0 -ent -XX 'arp && (src 192.168.1.204 || dst 192.168.1.204)
四、内核源码的分析:
<完>