我不明白为什么需要以太网MAC地址。所有计算机不能直接连接到统一网络并使用IP地址进行通信吗?
例如以太网中有如下机制:
- IP 地址为
192.168.1.1
(X.1
) 的计算机想要发送一个数据包到192.168.1.2
(X.2
) X.1
使用 ARP 获取X.2
- 为此,
X.1
需要向网络中的所有计算机发送一个数据包;只有一台计算机会回答 X.1
获取 MAC 并发送数据包
只需执行一步,不是更简单吗:
X.1
向网络中的所有计算机发送数据包;只有计算机X.2
会处理它,其他计算机将忽略它
补充问题是:如果所有设备都有唯一的 MAC 地址,为什么需要 IP 地址?
答案1
这不同的网络层是为了能够将它们转换为不同的技术。
您在此处讨论的两层是第 2 层和第 3 层。在这种情况下,第 2 层是以太网 - MAC 地址由此产生,第 3 层是 IP。
以太网仅在本地级别工作,即在连接到广播网络“数据链路”的网络设备之间工作,而 IP 是一种可路由协议,因此可以定位远程网络上的设备。
每种协议的要求都不同。以太网指定了一系列允许在网络设备之间发送和接收数据包的技术,而 IP 定义了一种允许数据包穿越多个网络的协议。
两者都不依赖于对方,这赋予了网络灵活性。例如,您可以选择使用以太网上的 IP 连接到互联网服务,但在内部网络中,您可能选择使用纸张上的 IP。有人写下每个数据包的内容,然后将其物理地带到另一台机器上并输入。显然,这不会特别快,但只要携带纸张的人遵守 IP 路由规则,它仍然是 IP。
在现实世界中,存在不同的数据链路协议,您已经在使用两种不同的协议(尽管它们的寻址方案相同):802.3 - 以太网和 802.11 - wifi。
IP 并不关心底层是什么。
同样,IP 也可以替换为不同的网络层协议(前提是所有参与者都这样做)。例如自动取款机。
虽然没有什么直接阻止创建包含第 2 层和第 3 层的协议,但它的灵活性较差,因此吸引力较小,也不太可能被使用。
答案2
那么,是处理还是忽略该数据包的决定应该在哪里做出呢?没有一个答案能真正令人满意:
1) 在交换机中?嗯,这意味着交换机必须理解每个协议,这些协议决定了哪些计算机对哪些数据包感兴趣。这不仅会增加交换机的成本并降低其速度,而且还会使 IP 协议的更改更难以实施。
2) 在以太网接口的硬件中?嗯,这会使网络速度慢得多,因为每个数据包都必须发送到每台机器。WiFi 和桥接网络等技术将无法实现,而不同速度的以太网将无法实现互操作。IPv6 或 IP 多播等技术需要更改硬件才能部署在所有以太网终端站中。
3) 在软件方面?嗯,这会使计算机运行速度变慢,因为它们必须处理大量网络接口中断。上述所有桥接、VPN 和 Wifi 问题也将成为问题。
所有这些都会导致以太网在没有 IP 的情况下无法使用,也意味着需要对以太网进行更改才能对 IP 进行更改。真恶心。
关注点分离是好的。
答案3
IP地址和MAC地址在不同的层上运行互联网协议套件。MAC地址用于在第2层上标识同一个广播网络内的机器,而IP地址用于在第3层上标识跨不同网络的机器。
即使您的计算机有 IP 地址,它仍然需要 MAC 地址来查找同一网络上的其他机器,因为每个层都使用底层。在前面提到的页面上,您可以找到一些很好的图表,详细解释了协议套件。
答案4
随着以太网规模的扩大,以太网面临着拥塞问题。这反过来又会使网络阻塞并导致延迟。这是引入子网概念的因素之一。但是,对于子网,我们需要一个称为路由器的附加实体,以使数据包能够从一个子网中的机器传输到另一个子网中的机器。
以太网电缆的传输距离是另一个主要问题,因为如果距离超过一定限制,传输成功率就会受到限制。这带来了更多新的实体,如集线器/中继器。
注意,所有通讯机制都不使用MAC地址进行通讯。PPP和HDLC不使用MAC地址进行识别。
另请注意,有些网络不使用以太网。令牌环网络需要不同的数据链路层。
如果您通过网络 B 中设备的 mac 地址寻址将数据包从网络 A 发送到网络 B 中的设备,该数据包将在网络 A 中被丢弃。请注意,即使网络 A 和网络 B 之间有路由器,路由器也会丢弃数据包,因为路由器的工作方式是接收寻址到其 mac 地址但 IP 地址不同的数据包。
从上述场景可以清楚地看出,互联网并不是一个扁平的网络,因为存在各种本地/私有网络。源和目的地之间也有各种网络实体。
由于互联网不是平面网络,MAC 地址不用于所有类型的通信,并且某些网络需要除以太网之外的不同数据链路层,我们需要 IP 地址来将其路由到所需的节点,而不管节点的位置如何,这是通过网络层实现的。
另外,请参阅https://stackoverflow.com/questions/26290069/arp-vs-ip-why-do-we-need-both