成语大全网 - 汉语词典 - 使用arp查看树莓派的ARP高速缓存

使用arp查看树莓派的ARP高速缓存

仍旧, pi@raspberrypi:~ $ man arp 摘录一些,得

arp,该命令用于操纵系统的ARP缓存(ARP cache)。当没有参数时打印(到屏幕上)当前表中的内容。

试一下:

原来系统的ARP缓存中保存着这些,什么是ARP呢,ARP缓存中放的这些又是什么意思,干什么的呢?上面的 pi@raspberrypi:~ $ man arp 的输出中有介绍:

ARP(注意,大写)表示Address Resolution Protocol(地址解析协议),用于在网络邻居中(network neighbour)查找给定IPv4地址对应的媒体访问控制地址(media access control address)。

上面这句话什么意思呢?ARP是个协议,对于遵守这个协议开发出的软件,当你给这个软件一个IPv4的地址的时候,它能帮你在你的网络邻居中查找这个IPv4地址对应的媒体访问控制地址。

IPv4的地址我知道,就是IP地址,但还有两个问题:

网络邻居,就是指和你处于同一局域网中的主机。

以太网规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的媒体访问控制地址(MAC地址)。

MAC地址***48位(6字节),前24位由 IEEE 决定分配给某一网络设备厂商,后24位由实际生产该网络设备的厂商自行指定。通俗地讲,在生产一块网卡时,该网络设备的厂商就会给这块网卡一个MAC地址。从这里可看出,实际上MAC地址在世界范围内都是唯一的。

总结一下,通过MAC地址,我们可以辨别局域网中的主机,从而可以与指定的MAC地址的主机通信。

疑惑了吧,上面不是说了么,用来辨别局域网的主机来通信啊,还取这个小标题干嘛?

实际上,我们并不是用MAC地址来辨别主机,而是用MAC地址来辨别 以太网 上的主机。想想,如果说辨别,IP地址也同样可以辨别主机,为什么这里还要再加一个MAC地址来辨别?

因为以太网是一种***享型的网络,它采用的是一种称为CSMA/CD的媒体接入方法。

详情请见: 什么叫带冲突检测的载波侦听多路接入(CSMA/CD)

我这里直接放结论,当一个主机通过 ***享式的以太网 的线路发送数据的时候,连接在这条线路上的所有主机都会收到那个发送主机发出的数据。

问:既然网络邻居上的所有主机都能收到我的主机发出的报文,那他们如何确定我的主机发送的数据就是给他们的呢?

答:他们会查看你发送的数据的 “目的地”地址栏 上填的是不是自己的地址,如果是,就接收你发的数据,如果不是,就直接丢弃这个数据。(这种简单的处理方式让以太网卡变得便宜,侧面促进了以太网的流行)

而这个填在发送的数据的“目的地”地址栏上的地址就是用来分辨以太网上主机的 媒体访问控制地址 M edia A ccess C ontrol address),你更常听到的是它的英文缩写 MAC地址 或者是它的通俗名 硬件地址

放图...

图中的目的地址和原地址两个地址栏上填写的就是MAC地址。看到它们下方标的数字“6”了吗,它代表着这个地址是6个字节的地址,6字节=48位,和上面讲到的MAC地址有48位对上了。

实际上一些非***享型的网络确实是不需要MAC地址的,比如SLIP,比如PPP,如下图:

图中显示的是一个PPP接口的图,英文全称图的注释里有,就是点对点协议,顾名思义,不需要和别人***享,这个接口出去,下个接口一定是那个接口,就不需要分辨用的MAC地址了。

你可以看图中的第一个接口,eth0以太接口,它在链路封包方式的后面就明确写了HWaddr(HardWare address)硬件地址(就是MAC地址)。而下面那个接口w1g1接口,它后面就没有MAC地址。

同样,在w1g1接口的第二行,那几个大写的单词的最后一个,NOARP,明白了吗,不支持ARP。很简单啊,它MAC地址都没有,拿什么支持你ARP?

OK,现在可以回过来看这句话了

首先,你给的这个IP地址要是你的网络邻居的某个主机的IP地址,然后根据你给的这个IP地址,我这个软件,是遵守ARP协议的,我就能给你这个IP地址对应的MAC地址。

那这里的ARP缓存(ARP cache)意思也很明显了,就是用来保存我查询到的结果(网络邻居的IP地址对应MAC地址)的地方,这样就能在要用的时候以最快地速度告诉你。

在现实情况中,ARP的工作方式就是,先在ARP缓存中找,找不到了再在局域网上“发帖求助”。

这里输入arp命令的显示内容也就明白了,大意为:

由我自己的接口wlan0,连接出去的网络邻居中,IP地址为192.168.253.1的主机,主机名是?,网卡的硬件类型为以太网类型,对应的MAC地址(HardWare address:硬件地址)为b0:d5:9d:37:5d:2e

至于ARP如何根据IP查询网络邻居对应的MAC地址,等下次再说吧。

手机先连上和树莓派一致的无线局域网,查看手机的本地IP地址为192.168.253.6,然后断开。

在树莓派上用ssh连接手机IP地址,因为手机断开了,当然肯定是连不上的,那这时候ARP缓存中会变成什么样呢?

OK,这时候我把手机连上去...

有趣的事情发生了

那如果不是本地的IP会怎么样?我猜ARP缓存里不会更新数据,你想看?就自己试试呗,比如...ssh一下...