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

估计很多人都有这个疑问,但没见哪本书上解释清楚,都只是描述IP是什么,MAC是什么。当数据包到达局域网后,完全可以直接送到对应的IP地址主机,为什么还…
关注者
2,984
被浏览
2,057,706
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

问题的核心在于网络上的分层概念。IP地址是不区分传播介质的,他的作用是在internet网中能够投递到边界。在网络边界的局域网,有可能使用不同的层二网络,以太、wifi、ppp、3g、wimax等等。

在这个局域网中,才出现了与介质相关的终端标识。mac地址用于以太网,imsi用于3g网,线路号用于拨号上网。internet边界路由器可以在这个特定的介质网中找到特定终端。

如果没有IP地址,那么3g网络用户无法和以太网用户通信,因为没办法去做这么复杂的协议让几十种协议两两对通。即使做了,发起方也需要方法去知道对端用的是什么层二网。因此,所有网络协议都用IP,只在两头网关上做转换,就是一种设计很先进的奇妙方法。

反过来,为什么全球只要mac地址不能用于全球通信?问题在于mac地址和IP地址的汇聚性。mac地址是出厂就决定的,不是上网的时候决定的。也就是说intel设备或使用intel芯片的mac地址前面多少位是相同的,然后intel在给芯片分地址的时候保证所有的芯片没有重号的,这样才能保证随便哪个终端接入到同一个局域网中没有重复的。

这样问题就来了:网络上希望路由器的转发规则尽量简单,所以一般要用ip地址前多少位而不是整个IP地址去做转发。mac地址显然没法汇聚,前面已经讲过,工厂决定的。

给每个用户分配一个只由路由器网关决定的地址,每个网关上附着一个段,例如100.200.x.x,也就是所有以100.200开头的ip都送到这个网关上来,就可以保证internet转发规则的简单化。而且,一个用户从一个局域网离开,换到另一个局域网中,mac地址不需要变,只需要换个ip地址就行。