Rad*_*eve 3 networking ip-address ip subnet netmask
有人告诉我,没有相应子网掩码的公共 IP 地址毫无意义,因为人们不知道如何将网络 ID 与主机 ID 分开,这对我来说完全有意义。
然而,大多数时候我看到的 ip 地址(DNS、findmyip.com 等)只是关于 ip 而没有 cidr 号码。例如,我只是给一个网站提供了一个 ip 地址,它给了我正确的域名。
我错过了什么?我猜还有一些其他协议只能使用 ip 地址,但我还没有听说过这些协议。
如果我的问题表明对网络如何工作缺乏基本的了解,那么非常感谢资源。我是一名自学所有这些东西的开发人员,除了 5 分钟长的教程或 1000 多本晦涩难懂的书籍(Hi TCP Illustrated),我找不到我正在寻找的材料。
子网掩码对于主机本身和路由设备很有用。
您的PC不需要知道远程设备的子网掩码,它只需要知道地址,并将其自己的地址和自己的子网掩码进行比较,就可以知道该地址是本地还是远程。
如果是本地,则数据包将直接发送,如果是远程,数据包将发送到默认网关。
所有使用 TCP/IP 与其他系统通信的系统都会查询本地“转发信息库”或由系统维护的本地路由表。
路由表条目基本上如下所示:
目标网络/网关/目标子网掩码/指标
这是我当前的路由表:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 eth2
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 eth2
172.16.160.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
192.168.2.0 0.0.0.0 255.255.255.0 U 100 0 0 eth2
192.168.87.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
Run Code Online (Sandbox Code Playgroud)
每次系统想要将流量发送到 IP 时,它都会搜索此表。如果它找到匹配并适合子网掩码的目标网络,它会将流量从Iface标识的网络适配器发送出去。
所有这些网络适配器都是“直接连接的” - 这就是为什么您看到网关为 0.0.0.0 的原因。这意味着如果系统想要发送一些东西到 192.168.2.80,例如,它可以直接通过接口 eth2 发送到 192.168.2.80。
但是,由于子网掩码的原因,192.168.87.80 不会通过 eth2 出去,而是通过 vmnet1 出去。
如果一个 IP 适合两个条目,则使用具有较大 CIDR 子网掩码的一个(“更具体的一个”)。如果有两个具有相同子网掩码,则使用度量来打破平局,如果到了时间,系统可能会选择一个并坚持使用它或在它们之间进行负载平衡。
例如
192.168.2.0 0.0.0.0 255.255.255.0 U 100 0 0 eth2
192.168.2.0 0.0.0.0 255.255.255.240 U 100 0 0 ethX
Run Code Online (Sandbox Code Playgroud)
255.255.255.240 是 CIDR /28,而 255.255.255.0 是 CIDR /24。因此,如果这两个条目存在,则去往 192.168.2.1 的某些内容会从接口 ethX 出去,但去往 192.168.2.241 的某些东西会从接口 eth2 出去。
如果没有匹配怎么办?然后使用默认网关。请注意,它的“最低”子网掩码为 0.0.0.0(这是一个斜杠 /0)。
这就是子网的用途。告诉系统可以通过哪个接口访问哪些网络。您的系统在发送流量时使用它(以确定 Internet 和本地网络之间的差异),路由器使用它来转发流量。
在这些情况之外,不需要子网掩码。基本上不需要经过网络路由层。HTTP 是应用层。
| 归档时间: |
|
| 查看次数: |
1793 次 |
| 最近记录: |