首先要知道的是,并不是所有的网络之间传输数据都需要MAC地址和IP地址,比如说点对点线路之间的通信就不使用MAC地址,网络层使用IPX协议时就没有IP地址,但是在当前的主流网络中,我们都同时使用IP地址和MAC地址
一.有MAC地址为什么还需要IP地址
有MAC地址固然可以寻址,但是却不方便。MAC地址是出厂自带的,至于后续设备到了哪里都是不可控的,所以MAC地址没有规律可循。就好像快递员只用身份证号找人,虽然身份证上有户口所在地,但是由于人口是流动的,不一定就待在身份证号上的户籍地址,所以寻找难度过大。IP的优势正在于此。因为IP地址是可变的,尤其是移动设备,IP地址会经常变更。且分为网络地址和主机地址,每一个接入网络的设备由DHCP服务器自动分配IP地址,同一个子网中的IP前几位是一样的,类似于城市名+道路号+门牌号的概念,空间上靠近的设备IP前几位一样大大方便了寻址过程,再也不用满世界去找了,可以先找到子网,再在子网内找寻找目标设备。 MAC地址的设计不携带设备在网络中的位置信息,想要通过MAC地址通信,我们得在所有的设备上维护一张很大的表,记录所有MAC地址路由在当前位置的的下一跳,这显然是那是难以实现的。
二.有了IP地址为什么还需要MAC地址
(1)IP地址不是与生俱来,需要在接入网络后设备发送广播请求IP,DHCP服务器收到请求发送一个空闲的IP,设备收到回复发送租用请求,最后DHCP发送消息表示租用成功。在这个过程中由于设备还没有IP地址,所以需要MAC地址来标识自己。假如同时有两个没有MAC地址的设备接入网络,同时请求IP,那么DHCP服务器将不能区分是收到了两个请求还是同一个请求收到了两遍。
DHCP服务器功能: 两台连接到互联网上的电脑相互之间通信,必须有各自的IP地址,由于IP地址资源有限,宽带接入运营商不能做到给每个报装宽带的用户都能分配一个固定的IP地址(所谓固定IP就是即使在你不上网的时候,别人也不能用这个IP地址,这个资源一直被你所独占),所以要采用DHCP方式对上网的用户进行临时的地址分配。也就是你的电脑连上网,DHCP服务器才从地址池里临时分配一个IP地址给你,每次上网分配的IP地址可能会不一样,这跟当时IP地址资源有关。当下线的时候,DHCP服务器可能就会把这个地址分配给之后上线的其他电脑。这样就可以有效节约IP地址,既保证了网络通信,又提高IP地址的使用率。
(2)历史原因:MAC地址先于IP地址存在,TCP/IP协议诞生之前就有五花八门的网络,互相之间协议不互通,MAC就是其中一个,TCP/IP在更高层次上将他们连接起来,至于底层是什么交由各自管理。后来MAC接近一统江湖,但是大局已定,而且这样做并没有明显的缺点,如果改动反而是困难重重(ipv6比v4那么大的优势缺还是难以取代),所以便沿用早期设计。