1.ARP协议作用
通过ip地址来找mac地址的。当发送报文时:
1.如果目的ip和自己在同一个网段:
当ip层arp高速缓存表中有对应的<ip,mac>缓存信息时,则提交数据给网关接口发送数据包。
当ip层arp高速缓存表没有对应的<ip,mac>缓存信息时,则ip层现将tcp的SYN缓存下来,发送ARP广播请求目的ip的mac,收到ARP应答之后将<ip,mac>缓存到表中,然后提交syn数据给网关接口发送数据包。
2.如果目的ip和自己不在同一个网段:
需要现将包发送给默认网关,这就先要知道默认网关的mac,如果arp高速缓存表中有<默认网关地址,mac>就直接发送给网关,否则先ARP广播得到默认网关mac,在添加到缓存,在发送数据到默认网关。
2.数据包
先要清楚,一般说以太网地址就是指MAC地址。
字段1是ARP请求的目的以太网地址,全1时代表广播地址。
字段2是发送ARP请求的以太网地址。
字段3以太网帧类型表示的是后面的数据类型,ARP请求和ARP应答这个值为0x0806。
字段4表示硬件地址的类型,硬件地址不只以太网一种,是以太网类型时此值为1。
字段5表示要映射的协议地址的类型,要对IPv4地址进行映射,此值为0x0800。
字段6和7表示硬件地址长度和协议地址长度,MAC地址占6字节,IP地址占4字节。
字段8是操作类型字段,值为1,表示进行ARP请求;值为2,表示进行ARP应答;值为3,表示进行RARP请求;值为4,表示进行RARP应答。
字段9是发送端ARP请求或应答的硬件地址,这里是以太网地址,和字段2相同。
字段10是发送ARP请求或应答的IP地址。
字段11和12是目的端的硬件地址和协议地址。
下图是抓的arp包,从上到下对应的字段1到字段12
ARP应答包
老生常谈:深圳有爱好音乐的会打鼓(吉他,键盘,贝斯等)的程序员和其它职业可以一起交流加入我们乐队一起嗨。我的QQ:657455400 表演视频实例https://v.qq.com/x/page/f0517awx0x4.html