为什么我们需要为每个接口分配IP地址?不能给每个设备一个足够吗?

评论

某些设备仅获得用于管理的IP,该IP不受任何特定接口的约束。其他人以您描述的方式工作。它因设备,型号和软件/固件而异。此外,您可能需要根据任务要求为每个接口分配不同的IP地址。

简短答案-使路由器成为可能。路由器只是一台需要连接到不同网络的计算机(最近很可能是Linux),因此必须具有多个IP地址的能力。每个设备的多个IP与路由器的发明几乎同时出现。

这个问题没有任何意义,或者不是具体或完整的逻辑陈述。这只是单词的组合。 ip地址是在各种注释请求中定义的Internet协议中使用的整数。我不相信会定义“设备”或“接口”的概念。

例如,在同一台物理计算机上运行的两个Windows应用程序可以利用一个使用ip协议进行通信的网络。这有优点也有缺点。话虽如此,ip协议还是一种抽象的逻辑事物,它运行在底层上,这些底层本身可以与IP相同。

我也投了反对票,因为极端缺乏上下文,例如“接口”?嗯,它有很多不同的用途。接口是抽象的东西,但有无数实际用途。

#1 楼

将接口连接到网络使其成为该网络的一部分。因此,IP地址是连接的属性,而不是主机的属性。
同样,主机可以具有许多网络连接,因此IP地址也可以。不同的接口通常具有不同的功能,因此区分它们非常重要(例如内部控制台,公共服务,iSCSI)。
路由器的接口需要多个IP地址。
但是,在某些情况下, d想为接口后面的实际设备分配地址-例如当您拥有冗余的链接/接口时,您实际上并不关心连接采用的路径。然后,您可以使用设备内部的虚拟环回接口,该接口始终处于连接状态并处于打开状态。

#2 楼


假设我有一台具有三个接口的计算机:eth0(有线以太网),wlan0(无线)和vboxnet0(虚拟机)。其中一个接口连接到内部网络,一个接口连接到Internet,最后一个接口连接到虚拟计算机的网络。假设我只有一个地址10.1.2.3,并希望将大量数据包发送到192.168.1.2,而这些网络之一可以到达-我应该将它们发送到哪里?不能只是将它们发送到任何地方,这样的行为会在短时间内淹没所有网络。
但是,如果eth0接口具有192.168.1.3,wlan0具有10.1.2.3,而vboxnet0具有172.0.0.1,则默认路由表可能会说“发送eth0”。 (显然,如果使用更复杂的路由规则,可能会变得更加复杂。)
相反,我不希望只在对专用网络开放的接口上运行服务-因此,当请求来自其他接口时,根本不会处理。

评论


如果没有那些具有不同IP地址的接口,您为什么不知道每个接口都可以到达?

–PaŭloEbermann
19年1月17日,0:17

您可以(确实有这样的路由规则),但是您将进入一个较低的抽象级别,而不是说“发送与10.1.2.1不匹配的任何内容”并使用它来完成(OSI层3),现在您需要处理“我想要哪个接口(第2层)”。也可以,但是抽象简化了事情。

– Piskvor离开了建筑物
19年1月17日在9:45

还有一件事-IP地址也分配给其他人也可以与您联系。假设您通过wifi和以太网连接;每个接口都进入不同的网络,但是两个网络都可以连接到Internet。现在,您从10.1.2.3发送一个数据包到1.2.3.4-返回路线是什么? Wifi或有线?您可以猜测,但是如果您猜错了,则数据包会通过错误的接口返回并可能被丢弃。 (是的,在某些情况下,您需要具有相同IP地址的多个接口,或者具有更多IP地址的iface,或者根本不具有addr的iface-不寻常)

– Piskvor离开了建筑物
19年1月17日在9:50

#3 楼

情况1:路由器

从理论上讲是可能的。

但是,通常,当IP地址“匹配”某个网络时,IP数据包“直接”发送到目的地。遮罩(例如10.0.0.0/28);

这意味着:


路由器连接两个网络;两个网络中的每个网络都有一个网络掩码

在两个网络之一中从一台计算机发送到另一台计算机的数据包不会通过路由器。

这意味着IP每台计算机的地址都与它们所连接的网络的网络掩码相匹配。



发送到路由器的数据包(包括由路由器路由的数据包!)不是从计算机通过第二个路由器连接到路由器。

这意味着路由器的IP地址必须与两个网络的网络掩码都匹配。


IP数据包从一个网络中的一台计算机发送到另一网络中的计算机,但是是通过路由器发送的。

,这意味着一个网络中计算机的IP地址不能与另一个网络的网络掩码匹配网络。


几乎不可能选择一个IP地址和两个网络掩码,而一个IP地址与两个网络掩码都匹配,但是很多IP地址只能匹配网络掩码。

情况2:不同的专用网络

我们可能会遇到这样的情况:一台计算机连接到两个不能相互交换数据的专用网络。 />
在这种情况下,一台计算机在两个网络中可能具有相同的IP地址。

对于IPv4,大多数操作系统将不支持此地址,因为操作系统使用了两个网络来区分它们。网络需要具有不同的网络掩码...

对于IPv6(使用“本地链接”地址),一台计算机在两个不同的网络中可以具有相同的(本地链接)IP地址-因此,两个网卡可以具有相同的IP地址!

评论


在一种特定情况下,以太网的TSN规范确实允许具有相同IP,掩码和MAC地址的多个接口,以支持确定性以太网(802.1cb)的无缝冗余路径。冗余是在MAC级别(检测重复打包并忽略冗余信息)处理的,因此从主机角度来看,它是一个接口。

–疯狂
19年1月16日在22:35



#4 楼

网络中存在具有IP地址的设备。

路由器是主要目的是在网络之间传递流量的设备。

路由器在路由器之间传递数据包在两个网络中,它必须同时存在于两个网络中。

路由器在每个网络内部都有一个“臂”-或我们称之为接口。接口在网络中的存在方式是为其分配IP地址。

因此,在配置路由器时,每个接口都会收到一个IP地址以标识该路由器所属的网络。 。

免责声明:上面的链接是我的博客。我的博客未获利。你读我没钱。我只是为了您(和任何其他读者)的利益提供链接。

#5 楼


我想知道,为什么我们需要为每个接口提供IP地址?不能给每个设备足够的钱吗?


让我开始挑战您的假设。您为什么说这不是机器的行为方式?假设我将192.168.1.1/24分配给eth1,将192.168.2.1/24分配给eth2。除了为192.168.1.0/24 out eth1和192.168.2.0/24 out eth2安装路由并确定沿该路由发送的数据包的首选源IP地址之外,我将IP地址分配给哪个接口真的有多重要?真正的变化是什么?从什么意义上说,机器不会表现出分配给机器接口的所有IP地址都属于该机器?

这两种方法都被使用。最常见的方法实际上是这两种方法的混合。

在“给设备IP地址”极端中,您可以想象一个设备的行为就像其所有接口都已连接到IP地址一样。过滤桥,并为桥分配了一个IP地址。

在“给每个接口一个IP地址”上,您可以想象一个设备的行为就像每个接口都像一台单独的机器一样。 (如果您认为这是设备当前的工作方式,请参阅此处,或者考虑有人连接到分配给一个接口的IP地址,但是数据包到达并发送到另一个接口。)

实际上,大多数机器在两者之​​间运行。它们的作用就像所有IP地址都属于该计算机一样。将IP分配给特定设备实际上并没有做太多事情,只不过告诉操作系统安装该接口的默认路由并为从该接口发送的数据包(其中源IP地址是“ t被迫。

否则,它们的行为就像所有IP地址都属于该计算机一样。数据包的处理方式在很大程度上不取决于在哪个接口上接收数据包,而是将具有分配给一个接口的源IP地址的数据包作为常规数据包。分配给地址的接口对发送数据包的接口没有直接影响,路由表确定该地址。

#6 楼

在一般情况下,您确实需要为每个连接的本地网络提供一个IP,这就是TCP / IP的定义方式:给定本地网络上的每个主机都有一个IP地址,该IP地址允许:


,基于目标IP地址将流量路由到适当的本地网络
,以将流量定向到该本地网络上的适当设备(例如,在802.x本地网络上进行ARP查找之后) 。

只要您有连接了多个设备的局域网(大多数802.x局域网,包括以太网,Wi-Fi),除非您从根本上更改TCP / IP的工作方式。

但是,尽管它非常具体,实际上可以避免这种情况。

考虑一个仅具有点对点链接的网络(两个没有交换机或集线器,DSL链路,SONET / SDH链路,帧中继或ATM VC的设备之间的点对点以太网。)

通常的惯例是使用/每个链接30个,因此两端的设备在该链接上都有IP地址。

,但是您可以使用“未编号的IP”,并且不能将任何IP地址与这些链接关联。现在,您将IP分配给设备的环回接口(实际上是任何接口,但环回是为此目的最简单的接口),并且您使用了动态路由协议(IS-IS,OSPF,EIGRP ...)。此路由协议将通告如何通过各种未编号的链接将流量路由到该IP地址。

#7 楼

IP地址包括路由信息。 IP地址基于分配的前缀长度(最初表示为网络掩码,现在仍然经常在网络堆栈内部实现)分为两个部分,即网络号和主机号。 />
为使路由正常工作,连接到特定网络的所有设备必须具有相同网络号的地址。发送方通过将自己的网络号与接收方的地址进行比较,确定接收方是在同一网络上还是在不同网络上。如果它们在同一个网络中,则直接发送;否则,它们将发送到路由器,路由器的工作是使消息更接近目的地。

因此,如果设备连接到多个网络,则每个网络上都需要一个地址,以便该网络上的设备可以访问此地址。

那确实不需要将地址专门分配给特定的网络接口。该设备可能只在一个表中列出了它拥有的所有IP。但是接口仍然需要有关它们连接到哪个网络的信息。通过为每个接口分配IP和网络掩码,我们可以将此信息放在一个地方,从而简化了设计。无需额外的代码即可使IP列表与接口所连接的网络列表保持一致。

#8 楼

在标准情况下拥有一个IP可能就足够了,但是正如其他答案所强调的那样,在许多情况下却没有。

其他答案已经提到了路由器的情况。有人提到virtualbox,这是虚拟机的情况:您可能在单个物理设备上运行多个虚拟设备。
另一种情况是VLAN,您可能实际上已经连接到单个网卡,多个具有不同IP地址的不同虚拟LAN。而且,甚至出于某些原因,您可能都具有一个具有多个IP的接口,例如,因为您想在TCP端口80上运行多个Web服务器。这种配置在服务器上并不罕见,您租用的硬件可能只有一个网络接口卡。 ,但您将配置多个IP地址。