我知道 IP 的基本工作原理,也知道 IP 地址由网络标识部分和主机 ID部分,但当我输入 IP 地址时,比如8.8.8.8
在网络浏览器中,我没有提供任何子网掩码信息。
那么,浏览器如何知道网络ID和主机ID的分界线在哪里呢?因为8.8.8.8
可能意味着8.8.8.8/8
,8.8.8.8/24
等等。
简而言之,我提供的 IP 地址不明确。
答案1
如果另一端位于您的本地网络之外,您的 PC 无需了解另一端的子网划分安排,只需了解将数据包传送到最近的路由器所需的信息即可。为此,它使用两条信息。
- 本地子网掩码
它将其与自己的 IP 地址结合使用来查看其他 IP 地址是否是本地的。 - 默认网关(或显式路由 - 请参阅
netstat -nr
)
任何非本地数据都会发送到那里
另一端的路由器(即具有另一个 LAN 接口的路由器)知道那里的子网安排。其他设备无需知道。
如果您查看,netstat -nr
您会发现您的 PC 的路由表由目标网络、网络掩码(子网掩码的另一侧)和网关(路由器)组成。通常,PC 有一个默认网关以及一些您不常用的东西(环回、多播等)。
您可以将路由表中的网络掩码视为相当于数百万个目标子网的高级摘要或聚合。
答案2
子网掩码仅用于确定地址是否属于特定网络的本地地址,以及用于路由。
如果您要联系的地址(8.8.8.8
在您的示例中)不在您的任何本地网络内(例如,172.16.3.0/24
& 127.0.0.1/8
& 192.168.45.88/29
),那么您的机器将无法直接联系它。在这种情况下,它会将流量发送到网关(例如192.16.3.1
),如果已配置,并希望它到达目的地。
答案3
查找掩码的不是浏览器,而是底层的 TCP/IP。这也取决于 TCP/IP 的实现。在大多数实现中,当配置 IP 时未指定子网掩码,将使用该 IP 类的默认掩码。例如,当配置 C 类 IP 时没有掩码,则默认使用掩码 255.25.255.0。