四、ARP协议(网络层)
当网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即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地址时