在为接口分配IP地址时,为什么需要指定子网掩码?我了解路由表中子网掩码的用途(例如,将IP地址范围指定为目的地)。但是为什么在接口上有必要呢?

如果已经在路由表中指定了接口,为什么还要在接口上指定它呢?

#1 楼

路由器使用接口上配置的IP地址和掩码来确定该接口所连接的网络。然后,该网络和掩码将作为直接连接的网络成为路由表的一部分。

路由器通过三种方式了解网络:


直接连接的网络
静态配置的网络
通过路由协议学习的网络

主机将使用掩码来确定目标地址是否与主机位于同一网络上。如果它在其他网络上,则主机必须将第2层的流量发送到配置的网关,而不是直接发送到目的地。

评论


我了解路由的工作原理以及为什么在路由表中使用网络掩码。我不明白的是为什么在为接口提供地址时需要指定网络掩码。

–渐变
16年4月4日在1:07

我解释了。它可以让路由器弄清楚什么是直接连接的网络。您如何认为路由器或主机知道直接连接的网络是什么?

–罗恩·莫潘♦
16年4月4日在1:08

我的印象是路由器没有有关如何在计算机上配置接口的任何信息。我的路由器设置了自己的路由表,该表将192.168.0.0/16中的所有内容(例如)路由到本地网络。它对所连接的机器一无所知。是不是?

–渐变
16年4月4日,1:15

正如我所解释的,您在路由器上输入IP地址和掩码,以便它可以找出直接连接的网络,并将其输入到其路由表中。主机需要找出其直接连接的网络,以便主机知道是否需要将流量直接发送到目的地,或者是否需要将流量发送到配置的网关。路由器对第3层的主机一无所知。

–罗恩·莫潘♦
16-9-4在1:18



我的问题可能不清楚。我的个人计算机(主机)具有接口以及路由表。我确实了解需要正确配置其路由表(使用子网掩码)以按预期路由数据包。我不明白的是为什么接口(与路由表无关)需要知道子网掩码。

–渐变
2016年9月4日,下午1:25

#2 楼

超级简单的答案...

它告诉计算机将流量发送到网关之前可以与之通信的地址范围,以确定下一步的地址。在那个范围内永远不会去网关。仅流量不在此范围内,因为计算机无法与子网范围以外的网关进行“对话”。

更多详细信息...是192.168.1.10 255.255.255.0,无需使用网关就可以与192.168.1.1-192.168.1.255通讯。

如果子网为255.255.0.0,则计算机可以与192.168.1.1-192.168。通讯255.255,不带网关。

Fyi ...网关是路由器或第3层设备,例如交换机或防火墙,在将流量发送到其自己的网关或“下一个”之前,也将具有与之对话的范围Hop'

我希望这种简单的性质有所帮助。

#3 楼

尽管所有三个答案都是正确的,但它们并不能回答实际的问题,即


如果已经指定了
,为什么在接口上指定了[netmask]在路由表中?


在接口上指定子网掩码时,例如通过linux上的ifconfig,将一个条目添加到路由表中,该条目指出具有与该主机相同的网络前缀的所有主机都可以访问,而无需通过网关。接口上的网络掩码错误(只是为了好玩),然后手动更正路由表中的条目。

示例:


设置IP 10.0。使用ifconfig的0.1和netmask 255.255.255.0删除创建的路由
设置一个新路由,对于具有netmask 255.0.0.0的网络10.0.0.0虽然我有一个/ 24 IP,但在同一链路上可以到达整个10.0.0.0/8网络。

虽然我不想说这种方法很有意义,但它清楚地表明:除了自动设置链接路由表条目之外,接口上的网络掩码几乎没有用。 br />

评论


当主机/服务器配置不在此处时,我不确定您上Linux课程的目的。您能否在主题为主题的企业级路由器的背景下制定答案。

–罗恩·莫潘♦
18年5月16日在14:40

不,我不能,因为我没有用于测试它的企业级路由器。

–或1on
18年5月17日14:56

#4 楼

如果主机发送的流量是说8.8.8.8(google.com),则它必须知道8.8.8.8是在同一LAN中还是在LAN之外。 255.255.255.0和IP地址192.168.0.50,则知道IP地址192.168.0.0到192.168.0.255位于同一网络中,因此不需要网关即可访问另一个网络。

这非常重要。例如:如果您要PING网络上的某些主机(例如192.168.0.100),您的计算机将首先发送ARP请求,如下所示:谁拥有192.168.0.100?它将等待包含MAC地址192.168.0.100的ARP答复。之后,它将在链路层将PING发送到192.168.0.100,MAC地址为192.168.0.100。

另一方面,如果要PING并在LAN外部进行地址(例如8.8。 8.8),您的计算机不会针对8.8.8.8 MAC地址发出ARP请求,而是会在链接层使用默认网关的MAC地址(例如192.168.0.1)将PING发送到8.8.8.8

#5 楼

当您使用该接口连接到另一个IP地址时,该接口的子网掩码通过路由器定义“在此LAN上”(或本地)的地址与“在此LAN上”的地址。 >
以示例的方式,如果您使用IP地址为100.100.99.5且子网掩码为“ / 24”(或255.255.255.0)的计算机,则该掩码表示“要查找具有100.100.99.0-255的主机,请询问ARP表,因为它们在我的局域网上。......对于所有其他地址(因此,在掩码之外),您应该将数据包发送到路由表(路由器)或默认路由。

#6 楼

我非常同意or1on的回答。我忘记了是否做过相同的实验。在我看来,接口具有的子网掩码值根本没有关系。内核仅参考路由表来确定是否可以通过网关,链接或其他IP来访问另一个IP。

在接口上同时设置IP和网络掩码的原因是只是您设置路线条目的一种方法。之后,只有路由表才是问题。开关的上下文。多么有趣!