是否可以在不使用IP的情况下创建以太网


14

据我从ISO-OSI模型了解,MAC地址与IP地址在不同的层上运行。这对我来说很清楚。

我可以接受的是,以太网(LAN)只是不使用IP地址进行通信,而是使用MAC地址。我知道这些MAC地址不能用于局域网外部的路由,因为它们不是分层定义的。我也了解IP是在大型Internet上进行路由的最佳方法。我不完全相信MAC地址是在LAN中进行通信的最佳方式


我的问题如下:

  1. 以太网不能使用IP地址发送消息吗?我并不是说应该这样做,我只是问它是否可以选择这样做。
  2. 当以太网使用MAC地址进行通信时,我是否可以创建一个以太网网络,在该网络中设备将没有IP地址,只有MAC地址?

根据定义,以太网是设备没有IP地址的网络。正如您所指出的,TCP / IP网络是另一回事,而IP不在乎它是运行在IEEE 802.3、802.11还是802.5之上。
miken32

Answers:


5

以太网可以使用IP地址代替其自己的数据链路层地址吗?当然,如果它不希望使用什么第3层协议,则肯定不会。

我们分层设计网络协议,以便我们可以混合匹配各个层。

以太网最初是由Xerox PARC的Bob Metcalfe等人开发的,与网络层无关,因为它们的目标不仅是TCP / IP访问,而且还用于Xerox自己专有的XNS网络协议栈/套件。

DEC(数字设备公司)成为了另一个早期采用者,主要用于DECnet协议栈/套件。

在80年代末和90年代初,公司以太网LAN上运行着许多竞争性LAN协议套件(全部完全独立于TCP / IP)。除了XNS和DECnet,还有Apple的AppleTalk(EtherTalk),Novell的IPX,Banyan VINES,NetBEUI,DLC / LLC,IBM SNA,OSI / ISO,以及我忘记的其他产品。

因此,是的,您可以使用不带IP的以太网。许多公司网络都是在80年代和90年代做到的。

由于以太网被设计为不关心在其上运行的第3层(网络层)协议,因此这些公司LAN相对容易地支持各种供应商的设备的混合,而这些LAN添加IPv4则相对容易。 Internet在90年代中期到末期起步时提供了支持,现在添加IPv6支持相对容易。


1
感谢您提供一个将上下文相关的答案!我希望您也可以在问题的第二部分进行更多的扩展。是否可以在不使用任何网络层协议的情况下使基于以太网的局域网正常工作?如果我建立了到另一台主机的跨电缆以太网连接,为什么我需要使用IP与该主机通信?可以使用基于MAC的TCP代替基于IP的TCP吗?
jj_

4

当以太网使用MAC地址进行通信时,我是否可以创建一个以太网网络,在该网络中设备将没有IP地址,只有MAC地址?

如果您是从头开始编写所有自己的软件,那么您当然可以这样做。只需让该软件接受该程序的正常副本将接受IP地址的任何地方的MAC地址即可。使用所有系统调用来发送原始以太网数据包而不是IP地址,它可以工作-但这将是一个巨大的麻烦。

通常,网络上的MAC地址不遵循任何模式。它们由制造商刻录到硬件中。它们又长又笨重。我的现在是C8-60-00-CA-4B-9A。我旁边的电脑是00-40-F4-48-1B-88。

为了使机器能够互相交谈,您可以为每台机器提供网络上所有其他机器的所有MAC地址的硬编码列表,以便它知道将数据包发送到哪里。这是很多容易出错的输入,并且每当您更改任何网络硬件时,都必须四处移动并更改所有列表以反映新的MAC地址。

这是一个巨大的麻烦,因此您可能最终想出一种方法,使网络上的计算机使用广播数据包自动发现彼此的MAC地址。然后,您将为他们提供一种使用一些有意义的地址进行身份识别的方法,因此您将必须键入“ telnet C8-60-00-CA-4B-9A”之类的命令。

事实证明,这正是IP所要做的-这是一种使用有意义的数字来寻址网络上主机的方法,而不是对MAC地址进行硬编码。在IP顶部添加DNS,然后可以键入“ telnet webserver”之类的命令。

以太网不能使用IP地址发送消息吗?我并不是说应该这样做,我只是问它是否可以选择这样做。

MAC地址是6个字节的信息,而IP地址只有4个字节,因此您无法进行任何类型的1对1映射。您需要某种方式从IP地址(由要与网络上另一台主机通信的软件提供)中查找MAC地址(放入数据包中)。

一种(硬核)方法是进入网络中的每台计算机,并通过将前两个字节设为零(或其他相同的固定数字)来更改其硬件MAC地址,使其看起来像IP地址。 (对于网络上的每台计算机),并将底部的四个字节设置为您希望它们在网络上拥有的“ IP地址”。(大多数网卡可以让您进入并修改供应商分配的MAC地址)

为了使它真正起作用,接下来,您还必须破解网络堆栈中的代码以实际使用此系统。您基本上会淘汰与ARP有关的所有内容(IP用于将IP地址转换为MAC地址的方法)。您将剔除构建/读取IP标头的部分。取而代之的是,用非常简单的代码替换所有代码,给定一个IP数据包要发送到地址为wxyz的主机,然后构建一个DEST地址设置为00-00-wxyz的以太网帧。

您还需要一种方法来向数据包的接收方指示其意图使用的协议(UDP,TCP)。您可以通过覆盖现有字段将其粘贴在以太网头中的某个位置。也许使用源地址的前两个字节之一?这不会影响目标计算机的接收能力,但可能会使某些开关混乱。您还可以将协议添加到以太网帧的开头或结尾,并将有效负载大小增加一个-但这就像IP标头一样。

那么,所有这些工作能为您带来什么呢?

首先,它将节省您在每个传出数据包的ARP表中查找的开销。这大概只有几微秒。

您可以节省计算IP标头校验和的工作以及保存它们所需的内存。这在现代硬件上可能并不重要。

您将在网络上的每个数据包中节省16个字节,因为没有IP标头。这可能会加起来,具体取决于应用程序。

最大的好处是您不必执行任何ARP请求。将标准IP数据包发送到新主机会触发ARP交换,该交换可能需要数毫秒,并且是不可预测的。对于某些对延迟和抖动非常敏感的应用程序,这可以是巨大的收益。

对于某些非常专业的应用程序,这样做确实有意义。我曾经工作过一个实时系统,该系统仅使用广播UDP数据包进行所有主机间的通信,其唯一原因是,它避免了那些ARP序列的启动,并且意外地增加了延迟和抖动。我还曾经在一个资源受限的嵌入式系统上工作,该系统通过直接在IP数据包内发送UDP净荷(没有IP头)来工作,因为它节省了实现所有ARP和网络掩码以及额外的校验和所需的所有复杂性和内存。


1

以太网不能使用IP地址发送消息吗?我并不是说应该这样做,我只是问它是否可以选择这样做

我想以太网可能使用了IPv4之类的四字节地址,而不是六字节地址。最好是他们没有,因为我敢打赌,他们的数字已经用完了。

当以太网使用MAC地址进行通信时,我是否可以创建一个以太网网络,在该网络中设备将没有IP地址,只有MAC地址?

如果您有适用于MAC地址而不是IP地址的程序,则可以。当然,您将被困在该网络上,没有黑客就无法联系到其他人。

如果您打算进行路由,则实际上只需要IP层,尤其是如果另一个网络可能正在使用与以太网不同的第2层技术(例如令牌环网),则在大多数情况下这种可能性是存在的。谁知道将来是否还会有另一种第2层技术普及,如果这样的话,IP与之无关。


0
> Couldn't Ethernet make use of IP addresses to send messages? I'm not
> saying it should, I'm just asking if it could have chosen to do so.

如果将以太网称为网络层,则不能,但是不能。网络层需要网络设备的物理地址。为了简单起见,IP地址是分配给MAC地址的任意数字。IP地址是一种软件解决方案,而不是网卡的一部分-硬件解决方案。这就是为什么可以轻松更改IP地址,同时将MAC地址硬编码到卡上且无法更改的原因(尽管MAC地址欺骗软件仍然可以更改地址,但它并不会改变地址,因为它只是关于地址的含义) )

> As Ethernet uses MAC addresses for communication, could I create an
> Ethernet network where devices would not have an IP address, just a
> MAC address?

是的,可以,但是您不会喜欢使用它,因为该功能非常有限,而且根本不友好。实施传输层是有原因的。

来自WikiPedia的传输层通过流控制,分段/分段和错误控制来控制给定链接的可靠性。一些协议是面向状态和面向连接的。这意味着传输层可以跟踪分段并重新传输失败的分段。传输层还提供成功数据传输的确认,如果没有发生错误,则发送下一个数据。

因此,如果不使用如今表示TCP / IP协议的传输层,就无法确保数据到达目的地,也无法自动重置丢失的所有数据。


MAC地址当然可以更改。我的(已故已久)PC使用了损坏的以太网卡中的MAC多年,因为我的ADSL提供商将其捆绑并收费以进行更改(也花了几天的时间)。
vonbrand 2014年

0

本地网络上的机器当然可以在没有路由层的情况下进行通信。您只是将消息嵌入到以太网帧中,并希望获得最好的结果。这有点像在明信片上贴上便条纸,希望邮局能完成工作。

您必须希望接收方正在侦听,并仔细侦听答复消息(可能来自其他节点的许多其他消息中)。您将负责自己整理所有这些消息。

如果您想要1:1消息传递之类的东西,则在以太网帧之上需要另一个协议来为您处理所有此类监听。为此经常使用点对点协议(PPP),通过以太网将其称为PPPoE。PPPoE为您提供身份验证和加密,这在广播网络上都是非常好的主意。

但是,如果没有某种形式的路由信息​​,则只能与本地网络上的节点通信。一旦开始使用路由信息来中继消息(例如,到Internet),就需要某种形式的路由协议,例如IP或IPX。而且您可能还需要传输控制(TCP)...


0

IP网络是一个抽象层,是一个间接层,也就是说,它们是一个虚拟网络 -不永久绑定到任何特定的物理通信方法或设备。

以太网主机具有一个MAC地址(每个NIC),可以在全球范围内唯一地对其进行标识。但是,该主机可以同时属于多个IP网络,每个IP网络具有不同的IP地址,而始终使用一个MAC地址。

物理和逻辑寻址的分离或寻址的虚拟化允许一定的灵活性,例如将IP主机(例如服务器)从具有不同MAC地址的一台物理计算机移动到另一台物理计算机,但无需重新配置其他主机(例如客户端软件)。

IP或Internet协议以及以太网解决了不同的问题:以太网仅在单个LAN上在LAN级别提供通信,它不在乎LAN可能通过路由器连接到哪些其他网络。鉴于IP与互联网络有关,因此与LAN无关。那么,以太网可以利用IP地址代替MAC地址吗?当然可以,但是它并不能真正为您带来任何好处,因为这些消息仍然仅限于LAN。

作为对第二个问题的解答,在使用动态主机配置协议(DHCP)进行IP地址分配的以太网LAN中,这种情况在不同时间存在。当新主机连接到LAN时,它没有IP地址,因此它将广播的以太网帧发送到所有设备,并等待DHCP服务器的答复。此时,客户端既不知道DHCP服务器的MAC地址,也不知道其IP地址,因此不知道广播。现在,服务器在接收到请求后便知道了客户端的MAC地址,因此可以正确地处理回复。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.