前言

继前段时间复习了一下MYSQL后,我开始补起了网络协议的相关知识。网络这一块的知识我最早是在大一学的,由于那时候学得比较"生硬"(基本靠背),且期末考试过了以后我再也没有复习过,所以对这一块的知识我几乎忘得一干二净,想趁着这个寒假多看点书加深下理解,顺便写写博客记录一些以前没想过的问题。

PS:科班出身对网络这一块未必就很了解,网络这一块初学的时候可能更多的是考记忆力取代理解力,比如我,有些知识经不住时间考验啊,给科班丢人了(笑)。

那么废话不多说,本文就来聊一聊:既然说MAC地址是网络中唯一的,那为什么还需要IP地址呢?直接根据MAC通信不是可以了吗?


MAC地址定义

先看一下百度对MAC地址的描述:

MAC地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址。

可以确定,如果不手动改写,网卡的MAC地址在网络中是唯一的。


那为什么还需要IP地址呢

回到问题,既然MAC地址都是唯一的,那为什么还需要IP地址呢?

关于这个问题,我主要是整理一下某些社区的答案,整理到本篇中便于以后查找。

局域网角度

如果只从局域网角度出发,光用MAC地址是没问题的。局域网内IP地址是动态分配的,假如我是192.168.2.100,如果我下线了,可能IP就分配给了另一台电脑。IP和设备并不总是对应的,这对通信就产生了问题,但是MAC地址不同,MAC地址和设备是一一对应且全球唯一的。所以局域网使用MAC地址通信没有问题。

历史遗留角度

早期的以太网只有交换机,没有路由器,以太网内通过MAC地址通信。后来才有了互联网,为了兼容原本的模式,采用了IP+MAC地址通信的方式。为啥不推到了重来呢?看看IPv6的处境你就知道了。所以是先有MAC地址后有的IP,IP的提出主要还是因为MAC地址本身的缺陷,这个问题换成有了MAC为何还要IP地址也很有意思。

MAC本身的缺陷

因为MAC地址是硬件提供商写在网卡中的,MAC地址虽然唯一但是不能表明用户在整个互联网中的位置,除非维护一个超级大MAC地址对应表,那寻址效率肯定爆炸。但是IP地址解决了这个问题,因为IP地址是网络提供商给你的,所以你在哪里整个网络都是知道的。

安全问题:获取MAC地址是通过ARP协议来完成的,如果只用MAC地址通信,那么广播风暴是个难题。

二层通信使用广播的方式,如果广播域过大,或者本身存在环路,就会产生广播风暴。和ipv4还是ipv6关系不大。

小结

之所以还需要IP地址,其实和历史遗留问题以及MAC本身的作用/缺陷有关。

这里打个比方,MAC地址其实就相当于我家的门牌号:某路某小区n号,而IP地址就像是:中国某省某市某区某镇。尽管我的门牌号是唯一的,但你要找到我,还是需要省市区定位。IP和MAC的关系也是如此,MAC地址适用于局域网或小范围的定位,而IP地址则是用来远程定位,等远程定位到某个交换机或路由器,再通过OPSF和ARP协议转换成MAC地址。