IP 地址和 MAC 地址都可以确定目标地址,为什么二者都在使用,舍弃一个是否可行?
首先要知道的是,并不是所有的网络之间传输数据都需要 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 那么大的优势缺还是难以取代),所以便沿用早期设计。
版权声明: 本文为 InfoQ 作者【阿柠xn】的原创文章。
原文链接:【http://xie.infoq.cn/article/d2f42b60088038e93457361ef】。文章转载请联系作者。
评论