有MAC地址了为什么还要用IP地址

文章讨论了MAC地址和IP地址在网络通信中的重要性,包括子网划分、路由效率提升、协议识别简化和跨网络通信的必要性。指出虽然IP地址确保了跨区域通信,但MAC地址在设备未获得IP地址时仍起关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先来解释一下我个人对网上各种观点的评价。
在这里插入图片描述

首先像这个博客所说的,因为切换WIFI导致IP地址变更,如果没有MAC地址的话就会导致收不到数据。 实际上如果IP地址变更了,游戏里掉线重连后,服务端会接收到最新的IP地址并且与最新的IP地址进行连接,之前的数据就直接是丢包处理了,最终数据还是由重连后继续传输,所以这里并不是IP地址存在的必要条件。

接下来就说一下我个人搜索与认识后觉得比较可靠的答案:

原因一

当我们只有MAC地址,没有IP地址的时候。
如果我们想对一个范围内(一个子网内)的设备进行群发数据包,是很难做到的。
有几台机器的MAC地址分别为
设备A:aa-aa-aa-aa-aa-aa
设备B:bb-bb-bb-bb-bb-bb
设备C:cc-cc-cc-cc-cc-cc
设备D:dd-dd-dd-dd-dd-dd
假如设备A跟设备B同一个子网,设备C跟设备D同一个子网,那么我们只有MAC地址是很难实现这个子网识别跟针对子网群发数据包的。

问题在于我们如何才可以将aa-aa-aa-aa-aa-aa,bb-bb-bb-bb-bb-bb用东西标识为它们是一个子网范围内才行。

写死MAC地址前缀

有一个方法,就是设备出厂的时候写死MAC地址前缀,到时候根据地址前缀来识别子网进行群发就可以了。(这个方法是非常不现实的,实际上不会这样做)
用这种方法后的设备MAC地址可能会变成这样,拥有共同的公共字符串前缀。
设备A:xx-aa-aa-aa-aa-aa
设备B:xx-bb-bb-bb-bb-bb
到时候群发的时候写一个规则,针对xx开头的mac地址进行发送数据包即可。

交换机、路由表中新增记录

另一个方法是,交换表或者路由表中记录子网里面有哪些设备的mac地址。
子网A:aa-aa-aa-aa-aa-aa,bb-bb-bb-bb-bb-bb。
然而这个工作由交换机或者路由器进行记录,这无疑增大了交换机跟路由器的交换表以及路由表的存储容量,所以我们有没有更好的方法呢?
此时IP地址的作用性就来了。

IP地址

现在我们几台机器的不仅有了MAC地址,并且有了IP地址。
设备A:aa-aa-aa-aa-aa-aa,192.168.0.2
设备B:bb-bb-bb-bb-bb-bb,192.168.0.3
设备C:cc-cc-cc-cc-cc-cc,192.168.1.2
设备D:dd-dd-dd-dd-dd-dd,192.168.1.3

子网掩码

此时不仅有了IP地址,还产生了一个新概念,也就是子网掩码

  • 设备A:192.168.0.2 & 255.255.255.0 = 192.168.0.0
  • 设备B:192.168.0.3 & 255.255.255.0 = 192.168.0.0
  • 设备C:192.168.1.2 & 255.255.255.0 = 192.168.1.0
  • 设备D:192.168.1.3 & 255.255.255.0 = 192.168.1.0
    因此我们可以判断出设备A与B共属一个子网,设备C与D也共属一个子网。
    这样就可以方便快捷的群发数据包到指定子网中了。

所以有MAC地址为什么还需要IP地址,其中之一的原因就是方便子网划分,IP地址具有地域性特征。单靠MAC地址进行子网划分是不现实、很麻烦的事情,因为MAC地址基本是写死的,不能随意改变,而IP地址是进一步的抽象,允许灵活变更,取决于用户的配置。

原因二

原因二实际上也是跟子网划分有关,不过这个角度更多是从路由转发减少数据量的角度出发。随着网络中的设备逐渐憎多,路由转发数据包的路径会变得很庞大,子网划分就像城市划分一样,如果不存在城市划分,我们的快递就要一层一层的从城市,到市区,再到具体街道,再到具体房间去找到收件人。而如果城市进行了划分,我们直接将快递寄到当地城市的收件站,让当地城市收件站去负责接下来的分层配送就可以了。也就是说,我们寄件本来要流转很多环节,现在直接就能寄送到最顶层,从而减少了流转环节的负责。 路由转发数据包也是这样,有了子网后,数据包直接传到指定子网,剩下的工作交给子网去处理就可以了。这样一来,数据包转发的速度变快了,因为更容易找到目的地,让寻找到的路径接近最优,大大减少了路由器的计算量。

原因三

当初以太网发明的时候,仍然存在很多网络层协议,比如IPX/SPX协议、CLNP网络协议、Apple Talk协议,以太网需要对这些协议进行支持,如果没有MAC地址,那么识别一个网络设备就需要去读网络层协议头的地址,这就需要网卡对多种协议进行识别,增加了网卡的实现难度,而MAC地址是不管上面网络层是什么协议,网卡只需要根据MAC地址这唯一的规则去做解析,就能得到具体的MAC地址对应的设备是什么。
网卡当有了MAC地址后,就可以不依赖于任何网络层协议,来独立判断一个以太帧是否接收,简化了网卡的实现。

原因四

计算机网络自顶向下的说法:
在这里插入图片描述

原因五

MAC地址设计的时候本来只打算使用在局域网之中,而IP地址设计的时候是打算用来广域网中使用。如果没有IP地址的话,我们拥有MAC地址的设备A比如从路由A切换到了路由B,此时MAC地址不变,那么路由C如果想找到设备A就很麻烦了,因为它根本不知道设备A已经路由变更了,此时路由C实际上是找不到在路由B中的设备A。除非我们修改网络转发协议,制定相关不存在的补充转发规则。 如果有了IP地址的地域性,我们每次发包之前都可以直接将包塞到IP地址指定的路由中,这样就不会盲无目的的去路由搜索了。
所以IP地址可以说是保证了设备在不同局域网之中的通信,也保证了在广域网的通信。

其他问题

既然IP地址不能去掉,那么能不能去掉MAC地址呢?
也不能。因为IP地址是要设备上线以后才能根据他进入了哪个子网来分配的,在设备还没有IP地址的时候(或者分配IP地址的过程中),我们还需要用MAC地址来区分不同的设备。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bali16

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值