题目
既然有了 MAC 地址,为啥还需要 IP 地址?
答案
先有 MAC 地址,再有 IP 地址的。 ![](https://cs-wiki.oss-cn-shanghai.aliyuncs.com/image-20230329150002562.png) > 路由器是用来转发的(它拥有不同子网的信息,路由器的每一个端口/网卡都拥有一个 MAC 地址和一个 IP 地址,路由器的每一个端口都连着一个局域网或者另一个路由器) **假设只有 MAC 地址**,对于 A 来说,如何做到,把发送给 C 和 D 的消息,统统先发送给路由器呢? 不难想到这样一个点子,假如电脑 C 和 D 的 MAC 地址拥有共同的前缀,比如分别是 **C 的 MAC 地址:FFFF-FFFF-CCCC** **D 的 MAC 地址:FFFF-FFFF-DDDD** 那我们就可以说,将目标 MAC 地址为 **FFFF-FFFF-?开头的**,统统先发送给路由器。 这就需要要求厂商在生产网络设备烧录 MAC 地址时,提前按照规划好的子网结构来定 MAC 地址,并且日后这个网络的结构都不能轻易改变。这显然是不现实的。 于是就发明了一个新的地址,IP 地址! 现在每一个网卡,同时有自己的 MAC 地址,又有自己的 IP 地址,只不过 IP 地址是**软件层面**上的,可以随时修改,MAC 地址一般是无法修改的。 这样一个可以随时修改的 IP 地址,就可以根据规划的网络拓扑结构,来调整了。IP 地址是和地域相关的,对于位于同一个子网上的设备,我们给他们分配的 IP 地址前缀都是一样的 发给路由器之后,对于子网内部的查询,就可以根据 MAC 地址来了 所以总结说,**IP 地址用于动态标识设备,便于动态组网和分发,在大网络中效率更高;而 MAC 地址用于静态标识设备,在无需分发的小网络内效率更高** --- 另外,这种设计也符合 TCP/IP 协议体系的这种分层理念,**网络层(IP 协议)本身没有传输数据的功能,数据的实际传输是委托给数据链路层(以太网中的交换机)来实现的,网络层起指导作用,指导数据在数据链路层到底该怎么走**