学网络的时候,IP 地址和 MAC 地址几乎是同时出现的两个概念,很多人分不清它们到底谁管什么事,甚至觉得”是不是有一个就够了,为什么要搞两套地址”。
这篇文章就来把这两个地址的分工说明白。
先看一个类比:寄快递
假设你要给远在另一个城市的朋友寄一个包裹,整个流程涉及两种”地址”:
- 收件地址:写着”某某省某某市某某小区几栋几号”,这是用来告诉全国的快递系统,这个包裹最终要送到哪个城市、哪个小区。
- 实际交接人:包裹在运输过程中,会经过很多个环节——从你手里到快递员手里,快递员送到分拣中心,分拣中心转给下一个网点的快递员,最后送到你朋友手上。每一次交接,其实都是”这一小段路”上,由具体的某个人接手,而不是全程由同一个人从头送到尾。
IP 地址 就相当于那个”收件地址”——它标识的是”这个包裹最终要到哪个网络、哪个位置”,是全局的、用于跨网络长途定位的地址。
MAC 地址 就相当于”每一段路上具体交接的那个人”——它标识的是”在当前这一小段网络里,数据具体要交给哪台设备”,是局部的、只在本地网络里起作用的地址。
IP 地址:负责”去哪儿”
IP 地址的核心职责是定位和路由。
你可以把整个互联网想象成一张巨大的地图,被划分成无数个”网络区域”。IP 地址的设计里包含了”网络部分”和”主机部分”,这就好比一个地址里同时包含了”城市”和”具体门牌号”——路由器看到一个 IP 地址,不需要知道这台设备具体长什么样,只需要根据”网络部分”判断该往哪个方向转发,一步步把数据引导到目标所在的网络。
也正因为 IP 地址承担的是”全局定位”的角色,它是可以变化的。你的手机连上不同的 WiFi,会获得不同的 IP 地址,就像你搬家了,收件地址自然要跟着变。运营商也会根据设备所在的网络分配不同的 IP 段,这跟你人在哪个城市直接相关。
MAC 地址:负责”最后一步交给谁”
数据到达目标所在的本地网络之后,还有最后一个问题要解决:这个网络里可能挂着好几十台设备(电脑、手机、打印机……),到底该把数据实际交给谁?
这一步靠的就不是 IP 地址了,而是 MAC 地址。MAC 地址是烧录在网卡硬件里的一串编号,出厂时就定死了,理论上全球唯一,不会随便更改(虽然技术上可以伪装,但设计初衷是唯一且固定的)。在同一个局域网内,设备之间实际传数据前,会通过一种叫 ARP 的机制,把目标的 IP 地址”翻译”成对应的 MAC 地址,然后数据帧上写的收件人就是这个 MAC 地址,交换机看到之后,直接把数据转发给拥有这个 MAC 地址的那台设备。
所以 MAC 地址管的是”同一个网络内部,精确送到哪台机器的网卡上”,范围很小,但很精确。
为什么不能只用一种地址
如果只有 MAC 地址会怎样?MAC 地址是和硬件绑定的,没有”网络区域”这个概念,路由器没办法只凭一个 MAC 地址判断”这台设备大概在世界的哪个角落”,那全球范围内寻找一台设备就无从下手,好比一个地址里只写了收件人的身份证号,却不写省市小区,快递没法按区域一层层往下送。
如果只有 IP 地址会怎样?IP 地址是可以变化的,也是逻辑层面的概念,它不直接对应某个物理网卡。数据传输的最后一步,终究要落到”电信号具体发给哪张网卡”这个物理动作上,这一步必须靠 MAC 地址来完成,IP 地址替代不了。
所以这两个地址其实是配合工作的:IP 地址负责跨网络的宏观定位,把数据一路引导到目标所在的局域网;MAC 地址负责局域网内部的精确投递,把数据实际交到对应的硬件手里。 一个管全局路线,一个管最后一米,缺一不可。
一句话总结
IP 地址像收件地址,管的是”这个包裹该往哪个城市、哪个小区送”;MAC 地址像本地快递员手里那张交接单,管的是”到了小区之后,具体交给哪一户”。两者一个负责宏观导航,一个负责本地精准投递,配合起来,数据才能准确无误地从发送方一路走到接收方的设备上。