为什么将IP地址分配给每个接口而不是设备?这意味着什么?


12

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


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

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

没有历史信息的答案?失望的:-)
Daniel W.

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

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

Answers:


25

将接口连接到网络使其成为该网络的一部分。因此,IP地址是连接的属性,而不是主机的属性。

同样,主机可以具有许多网络连接,并因此具有IP地址。不同的接口通常具有不同的功能,因此区分它们非常重要(例如,内部控制台,公共服务,iSCSI)。

路由器的接口需要多个IP地址。


14

没有。

也就是说,让我们看一个简化的示例:

我有一台具有三个接口的计算机:(eth0有线以太网),wlan0(wifi)和vboxnet0(virtualbox)。其中一个接口连接到内部网络,一个接口连接到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”。(这显然会随着更复杂的路由规则而变得更加复杂)。

相反,我可能希望仅在对专用网络开放的接口上运行服务-因此,当请求进入其他接口时,根本不会处理该请求。


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

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

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

5

情况1:路由器

从理论上讲,这是可能的。

但是,通常,当IP地址“匹配”某个网络掩码(例如10.0.0.0/28)时,会将IP数据包“直接”发送到目的地。否则,数据包将通过路由器发送。

这表示:

  • 路由器连接两个网络。两个网络中的每一个都有一个网络掩码
  • 从两个网络之一中的一台计算机发送到另一台计算机的数据包不会通过路由器。

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

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

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

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

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

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

情况2:不同的专用网络

我们可能会遇到这样的情况,一台计算机连接到两个不能相互交换数据的专用网络。

在这种情况下,计算机在两个网络中可能具有相同的IP地址。

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

在IPv6的情况下(使用“链接-本地”地址)的计算机可以具有相同(链路本地)IP在两个不同的网络地址-因此,两块网卡可以有相同的IP地址!


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

4

具有一个IP地址的装置中存在的网络。

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

为了使路由器在两个网络之间传递数据包,它必须两个网络都存在。

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

因此,将路由器配置时,每一个接口接收的IP地址,以确定哪些该路由器所属的网络

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


1
简洁明了的答案,非常清楚的解释原因
Stilez

3

我想知道为什么我们需要为每个接口提供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地址的数据包是常规的。路由表确定将地址分配给哪个接口对发送数据包的哪个接口没有直接影响。


2

在一般情况下,您确实需要为每个连接的本地网络提供一个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地址。


0

IP地址包括路由信息。IP地址根据分配的前缀长度(最初表示为网络掩码,这通常是在网络堆栈内部实现的方式)分为两个部分,即网络号主机号

为了使路由正常工作,连接到特定网络的所有设备必须具有相同网络号的地址。发送方通过将自己的网络号与接收方的地址进行比较,确定接收方是在同一网络上还是在不同网络上。如果它们在同一网络中,则直接发送;否则,它们将发送到路由器,路由器的工作是使消息更接近目的地。

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

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


0

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

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

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.