为什么我们需要为每个接口分配IP地址?给每个设备一个就够了吗?
为什么我们需要为每个接口分配IP地址?给每个设备一个就够了吗?
Answers:
没有。
也就是说,让我们看一个简化的示例:
我有一台具有三个接口的计算机:(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地址“匹配”某个网络掩码(例如10.0.0.0/28)时,会将IP数据包“直接”发送到目的地。否则,数据包将通过路由器发送。
这表示:
从两个网络之一中的一台计算机发送到另一台计算机的数据包不会通过路由器。
这意味着每台计算机的IP地址都与它们连接到的网络的网络掩码匹配。
发送到路由器的数据包(包括由路由器路由的数据包!)不会通过第二个路由器从计算机发送到路由器。
这意味着路由器的IP地址必须与两个网络的网络掩码都匹配。
但是,从一个网络中的一台计算机发送到另一网络中的计算机的IP数据包是通过路由器发送的。
这意味着一个网络中计算机的IP地址不能与另一网络中的网络掩码匹配。
几乎不可能以一个IP地址与两个网络掩码都匹配的方式来选择一个IP地址和两个网络掩码,但是很多IP地址只能匹配一个网络掩码。
情况2:不同的专用网络
我们可能会遇到这样的情况,一台计算机连接到两个不能相互交换数据的专用网络。
在这种情况下,计算机在两个网络中可能具有相同的IP地址。
对于IPv4,大多数操作系统将不支持此功能,因为操作系统使用两个网络的网络掩码来区分它们。网络需要具有不同的网络掩码...
在IPv6的情况下(使用“链接-本地”地址)的计算机可以具有相同(链路本地)IP在两个不同的网络地址-因此,两块网卡可以有相同的IP地址!
具有一个IP地址的装置中存在内的网络。
路由器是一种主要目的是在网络之间传递流量的设备。
为了使路由器在两个网络之间传递数据包,它必须在两个网络中都存在。
路由器将在每个网络内部都有一个“臂”-或我们称之为接口。网络中接口的存在方式是通过为网络分配IP地址。
因此,将路由器配置时,每一个接口接收的IP地址,以确定哪些该路由器所属的网络内。
免责声明:上面的链接是我的博客。我的博客未获利。你读我没钱。我只是为了您(和任何其他读者)的利益提供链接。
我想知道为什么我们需要为每个接口提供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地址的数据包是常规的。路由表确定将地址分配给哪个接口对发送数据包的哪个接口没有直接影响。
在一般情况下,您确实需要为每个连接的本地网络提供一个IP,这就是TCP / IP的定义方式:给定本地网络上的每个主机都有一个IP地址,该IP地址允许:
只要您拥有连接了多个设备的局域网(大多数802.x局域网,包括以太网,Wi-Fi),除非您从根本上改变TCP / IP的工作方式,否则解决该问题非常困难。
但是,尽管很具体,但实际上可以避免这种情况。
考虑一个仅具有点对点链接的网络(两个没有交换机或集线器的设备之间的点对点以太网,DSL链接,SONET / SDH链接,帧中继或ATM VC ...)。
通常的惯例是对每个链接使用/ 30,因此两端的设备在该链接上都有一个IP地址。
但是您可以使用“未编号的IP”,并且不能将任何IP地址关联到那些链接。现在,您将IP分配给设备的环回接口(实际上是任何接口,但环回是为此目的最简单的接口),并且您使用了动态路由协议(IS-IS,OSPF,EIGRP ...)。该路由协议将通告如何通过各种未编号的链接将流量路由到该IP地址。
IP地址包括路由信息。IP地址根据分配的前缀长度(最初表示为网络掩码,这通常是在网络堆栈内部实现的方式)分为两个部分,即网络号和主机号。
为了使路由正常工作,连接到特定网络的所有设备必须具有相同网络号的地址。发送方通过将自己的网络号与接收方的地址进行比较,确定接收方是在同一网络上还是在不同网络上。如果它们在同一网络中,则直接发送;否则,它们将发送到路由器,路由器的工作是使消息更接近目的地。
因此,如果设备连接到多个网络,则它需要在每个网络上都有一个地址,以便该网络上的设备可以访问该地址。
也就是说,确实没有必要将地址专门分配给特定的网络接口。该设备可能只在一个表中列出了它拥有的所有IP。但是接口仍然需要有关它们连接到哪个网络的信息。通过为每个接口分配IP和网络掩码,我们可以将此信息放在一个地方,从而简化了设计。无需额外的代码即可将IP列表与接口所连接的网络列表保持一致。