看到有人是反着问这个问题的,即为啥有了IP还要MAC?个人觉得,这多少有点本末倒置。
因为这个世界上是先有的MAC地址(且MAC地址也具有全球唯一性),后才有的IP地址。
整个互联网就像一座小楼,物理线路在第一层,MAC地址在第二层,IP地址在第三层。
这时,就像你不能指着一座小楼问人家“为啥有三楼了还要二楼?”一样,你其实也不应该将本文标题反着问。
某种角度上说,MAC地址就像人的姓名,IP则像人的身份证号。
姓名绝对是一个人的刚需,它是人在群体中的“标识”。除了独居的野人,只要和其他人打交道(哪怕只是和家人),本质都是接入了一个网络,都需要一个将自己与其他人区分开来的标识,这就是MAC地址的存在意义:它是主机的姓名。
可为什么又要搞一个IP地址呢?
在前文说IP地址就像身份证号,这时不防研究下身份证号的结构。
第1-2位代表省级行政区(省、自治区、直辖市);
第3-4位代表地级市(地区、自治州、盟及直辖市下属区县);
第5-6位代表县级区划(市辖区、县级市、县等)。
你会发现上述结构本质就是一个“分层网络”。首先是一级网络,由“省级行政区”组成。然后是二级网络,由“地级行政区”组成。最后是三级网络,由“县区级行政区”组成。
你会发现身份证号虽然在客观上给了持有者一个全国唯一的“编号”或者说“ID”,但这并非是本来目的,也就是即使所有人的姓名都不重复,身份证号仍然是需要的。
身份证号的存在目的其实是为了表示一个人所属的“子网”,即他是属于哪个省、哪个市、哪个区县的,其本质其实是“标识个体所属的网络”,而非“标识个体本身”。
IP也是如此,IP的目的不是为了给每台网络主机一个唯一ID,因为那个任务MAC地址已经完成了,IP的作用是为了标识这台主机所属的“子网”。
这也是为什么IP总是和“子网掩码”同时出现的原因,因为子网掩码就像IP读取器,它可以通过“按位与”计算从IP中获取具体的子网信息。
很多人会觉得IP是在网络中定位主机用的,这么讲不能说错,但却十分表面化,甚至会产生歧义,进而让MAC地址的地位也变得尴尬起来。
但如果你明确了IP本质不是在定位主机,而是在定位主机所属的子网,你就能将它和MAC地址更清晰的区分开来了。
IP的本质其实就是“网络设备所属子网的唯一标识”。
这里的定义和文章开头有了些许变化,即将主语“网络设备”变成了定语,用来修饰新的主语“子网”。但要强调的是,这里不是在否认前者,而是提供另一种视角,一种帮助人更好地认识IP与MAC的视角。
当我们明确了MAC地址是网络设备的唯一标识符,而IP地址是网络设备所属子网的唯一标识符后,一切就变得清楚明白了。
因为所谓互联网其实是“网络互联网”的简称,主语是“网络”而非“设备”。一台设备不可能独立的直接接入互联网,一定是要先接入某个局域网子网,再以当前局域网子网的身份接入互联网。
于是,当我们要定位一台主机时,必然要先确认其所属子网,再确认其是子网中哪台主机。而实现前者依靠IP,实现后者则依靠MAC。