当网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须要包含目的MAC地址,因此发送端还必须获取到目的MAC地址。通过目的IP地址来获取目的MAC地址的过程是由ARP(Address Resolution Protocol)协议来实现的。
ARP
数据在链路层进行封装时需要目的MAC地址。同一网段为目的MAC地址,不同网段为网关MAC地址。
ARP数据包格式
ARP是广播类型。例如图一所示,主机A发送一个ARP数据包询问谁的IP地址是10.1.1.2?10.1.1.2IP指向的主机(主机B)接收到该广播以后回复一个ARP数据包给发送端(主机A),发送端将10.1.1.2中的MAC地址缓存,这样就实现通过IP地址得到MAC地址的目的。
ARP报文不能穿越路由器,不能转发到其它广播域。
抓包显示:
如图所示,很容易就能看出10.1.1.2主机回复了它的MAC地址。
打开可看到:
下面再来看看回复的报文:
很明显能看到从主机B(10.1.1.2)回复的报文为单播报文。因为arp请求包中已经包含了主机A(10.1.1.1)的IP和MAC地址,所以此时回复只需要单播即可。
ARP缓存
如图所示,当主机A想要去请求主机C的MAC地址时,会发送一个ARP请求报(广播),此时主机B和主机C会同时接收到该广播,主机B发现并不是请求自己的MAC地址,所以进行丢弃,而主机C发现该IP地址与自己的IP地址吻合,所以将主机A的MAC地址进行缓存,同时给主机A进行回复。主机A接收到回复报文以后,也将主机C的MAC地址进行缓存,则下次再次请求主机C时不需要发送ARP报文(1200s之内)。
可以使用arp -a 进行查看主机缓存的MAC地址
ARP代理及免费ARP
代理ARP
好处:
1.保护内部网络
2.减少内部带宽
ARP代理功能:
1.同一网段、不同物理网络上的计算机之间,可以通过ARP代理实现相互通信。
在接口模式下输入arp-proxy enable(华为设备默认关闭)
免费ARP
作用:用来检测IP地址是否冲突(是否有人使用)
原理:请求自己的IP地址(想要配置的IP地址),如果有人使用 ,则会收到一个REPLY报文,如果没有收到回复,则表明该IP地址没人使用。