为什么需要IP地址才能在本地网段内进行通信?

Suf*_*ori 8 networking mac-address ip arp

由于 MAC 地址只能在本地网段中使用,因此我们使用 IP 地址通过路由器与其他网段进行通信。同时,对于本地目标,ARP用于将 IP 转换为 MAC 地址,然后在会话中使用 MAC 地址。

这让我想知道为什么我们在本地网络上使用 IP 地址。假设所有系统都在同一个子网中,那么 IP 地址似乎是多余的,因为系统只是真正使用 MAC 地址来路由彼此之间的通信。

如果计算机不需要在本地网段外进行通信,它们真的可以完全没有 IP 地址吗?他们为什么不呢?

Law*_*ceC 6

IP 地址明确设计为不受硬件约束,而 MAC 地址则是。大多数情况下,MAC 地址可以临时更改,但每个设备都应该有一个全球唯一的工厂分配的 MAC 地址。

此外,MAC 特定于以太网,虽然它现在是事实上的第 2 层封装方法,但情况并非总是如此,您永远不知道将来是否会出现更好的东西。

  • 以太网是第 2 层,而不是第 1 层! (2认同)
  • 我缺乏咖啡因。更正。 (2认同)

The*_*Wiz 6

简而言之,不...您不需要 IP 地址来连接同一网络中的计算机。有几个这样的协议示例:IPX 或 Banyan 协议。

使用硬件地址的问题最好描述如下:

想象一下,计算机就像一个房间里的人...(每个人都粘在一个位置上,不能四处走动)如果 Bob 想与 Suzy 交谈...他会喊出“嘿 Suzy”...然后 Suzy回应...然后进行对话。很棒吧?当然......在小规模上,这工作得很好,并且实际上经常在两个(或几个)设备之间的某些网络协议中使用。(许多高 I/O 协议使用非IP协议,因为它们“更简单”并且针对任务进行了微调。)互联网(正如我们今天所知道的)不仅仅是 2...或几个人直接对话其他。互联网确实包含数十亿台设备。如果他们都被放置在同一个“房间”(网段)中......想象一下如果鲍勃想与苏西交谈会发生什么。鲍勃会大喊“嘿苏西!”……鲍勃的声音就会消失在人群中。(建造一个能容纳数十亿人的房间同样荒谬。)

因此,网络segmented进入“较小的房间”,允许同一segment(房间)中的人们直接相互交谈,但房间外的人需要某种方式router将消息从一个房间传递到另一个房间。但是大量的房间意味着您需要某种寻址方案,以便routers中间的各个人员知道如何从 Bob 向 Suzy 发送消息。通过 IP 协议,他们subnet为每个“房间”分配一个房间,然后路由器被告知如何将消息从一个房间传递到下一个房间。例如,如果 Bob 的地址是 1.1.1.1,Suzy 的地址是 2.2.2.2,Bob 的地址subnet是 1.1.1.0/24(意味着他的地址的前 3 个字节必须匹配才能位于他的房间),Bob 需要通过他的消息router传递到 Suzy 的“房间*”。Bob 知道他的地址router是 1.1.1.2,因此他将消息传递到router,路由器将其传递到中间的其他路由器,直到消息传递到Suzy 的路由器位于 2.2.2.1,它将消息直接传递给 Suzy...并且 Suzy 可以以相同的方式将回复发送回 Bob。

实际上,同一网络中的计算机subnet确实使用 MAC 地址直接相互通信。它实际上首先发送一个ARP请求(ARP = 地址解析协议),这意味着它会喊出“谁有地址 XXXX?”……无论谁有该地址都会回复,从那时起,他们就继续互相交谈直接地。

(如果您真的感兴趣,我可以继续这个类比并解释更多有关互联网如何工作的内容。)


Sco*_*ain 5

很简单,为网段内的人和网段外的人做同样的事情要容易得多,开销也很少。

其他一些可能的原因

  • 您可能想使用 IP 来帮助记住什么是什么(路由器以.1某种东西结尾)
  • 您可能希望在一个网段上运行两个互不通信的网络(您可以通过子网使用 IP 来实现)
  • MAC地址不容易记住。