MAC地址(Media Access Control Address)和ARP(Address Resolution Protocol)
    网络设备间要想实现通讯,设备之间不光要知道彼此的IP地址,还要知道设备的MAC地址(也叫MAC码)。

    网络中的每一个设备都有一个独立的MAC地址。这个MAC地址是固化在网络设备硬件中的。我们可以通过系统设置或工具软件改变MAC地址,但这也仅仅是临时的修改,而不是真正将设备硬件的MAC地址进行永久性的更改。如果想永久性的修改MAC地址,那就要借助硬件产商所提供的工具软件了。

    为了说明MAC地址的用途,我们还是用刚刚的网络示例。如下图所示:

    MAC地址与ARP - 图1
    NodeMCU开发板在网络中的IP地址

    假如我们的ESP8266想要发送数据给网络中的手机, 首先ESP8266要知道手机的IP地址是192.168.0.3。除了这个信息以外,ESP8266还要知道手机的MAC地址。

    现在问题就来了,如果ESP8266和手机都是刚刚连入WIFI的, 它们从来没有互相通讯过,因此它们是不可能知道彼此的MAC地址。这可怎么办?

    要想解决这个问题,ESP8266会向网络中的所有设备广播一条“寻人启事”。这条广播信息的内容大概是这样的。“各位网络中的兄弟姐妹,我是住在IP地址192.168.0.2的设备。我的MAC码是AB-CD。我现在要发送数据给住在IP地址192.168.0.3的设备。请192.168.0.3地址的设备告知你的MAC码。” (注意:现实中的MAC码肯定不是AB-CD这 4个字母构成的。这里为了便于您的理解而将MAC地址进行了简化。)

    如果手机听到了这条广播就会回复一条信息给ESP8266,大概的信息是这样的:“你好!我是住在192.168.0.3的设备。我的MAC码是EF-GH。”发送这条信息的同时,手机也会把ESP8266所拥有的IP地址以及MAC码记录下来,以备后用。

    到这里,ESP8266和手机就彼此知道了对方的IP地址和MAC码了。接下来他们就可以愉快的网络通(Liao)讯(Tian)了。这种让两台完全不认识彼此的设备获取到对方IP和MAC地址的协议就是ARP了。