为接口分配IP地址时,为什么需要指定子网掩码?例如,我了解路由表中子网掩码的用途(将 IP 地址范围指定为目的地)。但是为什么在接口上有必要呢?它有什么用?
既然已经在路由表中指定了,为什么还要在接口上指定呢?
为接口分配IP地址时,为什么需要指定子网掩码?例如,我了解路由表中子网掩码的用途(将 IP 地址范围指定为目的地)。但是为什么在接口上有必要呢?它有什么用?
既然已经在路由表中指定了,为什么还要在接口上指定呢?
超级简单的答案...
它会在将流量发送到网关之前告诉计算机它可以通信的地址范围,以决定它下一步去哪里。
该范围内的流量永远不会到达网关。只有不在该范围内的流量,因为计算机不能与除其子网范围之外的网关之外的任何人“交谈”。
更多细节...
如果您的计算机是 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 通信。
仅供参考...网关是路由器或第 3 层设备,如交换机或防火墙,在将流量发送到自己的网关或“下一跳”之前,它也有一个可以与之通信的范围
我希望这的简单性质会有所帮助。
路由器使用接口上配置的 IP 地址和掩码来确定连接到该接口的网络。该网络和掩码然后作为直接连接的网络成为路由表的一部分。
路由器通过三种方式了解网络:
主机将使用掩码来确定目标地址是否与主机在同一网络上。如果它在不同的网络上,主机必须在第 2 层将流量发送到配置的网关,而不是直接发送到目的地。
虽然所有三个答案都是正确的,但它们并没有回答实际的问题,即
如果路由表中已经指定了[网络掩码],为什么还要在接口上指定它 ?
当在接口上指定子网掩码时,例如通过 linux 上的 ifconfig,会在路由表中添加一个条目,该条目声明所有与该主机具有相同网络前缀的主机无需通过网关即可到达。
但是,您可以在接口上指定错误的网络掩码(只是为了好玩),然后手动更正路由表中的条目。
例子:
虽然我不想说这种方法有多大意义,但它清楚地表明接口上的网络掩码除了自动设置链路上的路由表条目之外,还没有什么用处。
如果我遗漏了任何信息,我会很想知道的!
如果主机将流量发送到 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 回复。之后,它将在链路层向 192.168.0.100发送一个MAC 地址为 192.168.0.100的PING。
另一方面,如果您想 PING 并在 LAN 外寻址(例如 8.8.8.8),您的计算机将不会对 8.8.8.8 MAC 地址发出 ARP 请求,而是将PING发送到具有默认 MAC 地址的 8.8.8.8链路层的网关(例如 192.168.0.1)