在网络中,arp有两种作用:
1:(在路由器的情况下,终端设备不会自动发免费包arp)当你在配置ip地址,arp会发出一个(arp announcement,中文为arp通告协议)“免费包”arp,而这个免费包arp的源地址和目的地址都是你配置的ip地址,源mac就是你配置ip端口的mac地址,目的mac地址会设置为全0。即如下
而这时有人会问为什么免费包arp 的目的mac地址不是全f,作为广播地址,而是全0呢。这里我们要注意到arp的协议是运在一个什么层次上的协议?arp协议是一个运行在数据路层和网络层之间的协议(个人理解)。
应用层 |
---|
传输层 |
网络层 |
数据链路层 |
物理层 |
而arp的作用是将一个已知的ip地址,去寻址与这个ip地址配对的mac地址的协议。
所以当arp包发出的时候,我们抓包会发现数据包有三层即物理层,数据链路层,和网络层。而这个网络层的协议就是arp。所以,通常情况下发出的arp包的数据链路层和网络层度都会有ip地址和物理地址。
好了继续我们刚刚的话题:
当免费包发出之后就只有两种情况:
a:没有冲突的地址,那么因为所有设备的ip地址与arp协议的目的地址不同,那么当设备收到免费包时就会丢弃。
b:当有地址冲突时,那么本设备就会收到一个免费包 的replay(回应包)。在这个数据包中的网络层会有一个ip冲突提示,并且告诉你冲突的物理地址即mac地址是什么。
2:当你本设备去访问其他设备却不知道对方mac地址时:
本设备会发送一个arp报文,通过arp报文得到目的mac,从而保证数据包的正常转发。
从报文可以看出,设备会首先发一个广播的arp,并询问谁是192.168.1.2 ,请告诉192.168.1.1,然后目的设备发了一个reply包,指明了192.168.1.2 的mac地址。然后下面就是正常的ping的过程。