ARP协议的基础理论知识就不写了,翻翻书就能查到。
每个主机或路由器在内存中都有一个ARP表,这个表记录着IP地址到MAC地址的映射关系。打开命令窗口,可以用arp命令来查询这个ARP表。
1、当计算机不连任何网络的时候,是查不到这个ARP表的,我以为至少会有本机的IP地址和MAC地址的对应关系吧,可惜啥都没。如下图所示:
2、我用网线连接计算机到一个不能上网的路由器,然后用wireshark来观察ARP协议的运行情况。
插上网线后,可以看到计算机立刻就会查询网关的MAC地址
可以看到,计算机先发出广播信息:“谁有192.168.1.1的MAC地址?”
然后路由器收到后,单独给计算机发送信息:“网关192.168.1.1的MAC地址是XXXXX”。
计算机这样就知道了路由器的MAC地址。而且之后计算机会时不时的查询网关的MAC地址。
这里也可以看到,查询ARP报文是在广播帧中发送的,而响应ARP报文在一个标准帧中发送。
插上网线后,再查一下计算机的ARP表,这时候就能查到了。
没有网络连接的时候没有ARP表,连接了路由器后就有了。这也说明ARP是一个即插即用的协议。这个ARP表是自动建立的,不需要管理员来配置。并且主机和子网断开连接后,对应的ARP表项会被删除。
下面是ARP协议的报文格式,按照这个格式,来和wireshark抓到的包对比一下。
来看看wireshark抓到的ARP包,这是计算机发出的广播帧:
首先是以太网的首部:
然后是ARP协议的部分:
好了,今天就写这么多了。