我知道 CIDR 和网络掩码都指定了 IP 地址的网络前缀。
例如 192.168.1.123/24 等价于 192.168.1.123 网络掩码为 255.255.255.0
那么,CIDR 只是网络掩码的语法糖吗?我们可以使用 CIDR 做什么而使用网络掩码无法做到?
我知道 CIDR 和网络掩码都指定了 IP 地址的网络前缀。
例如 192.168.1.123/24 等价于 192.168.1.123 网络掩码为 255.255.255.0
那么,CIDR 只是网络掩码的语法糖吗?我们可以使用 CIDR 做什么而使用网络掩码无法做到?
对于 IPv4,CIDR 表示法只是表示网络掩码的一种不同方式。以下任何一种方式呈现的网络掩码都没有区别(即它是相同的网络掩码):
Dotted decimal notation: 255.255.255.0
CIDR notation: /24
Binary notation: 11111111.11111111.11111111.00000000
Hex notation: ff.ff.ff.00
在您自己的文档和设计工作中,您可以使用任何您喜欢的符号,但请记住,如果您使用前三个之外的任何符号,其他人可能无法理解。前两个很常见,第三个你通常只在培训/教育中看到,我很久以前在和一个喜欢用十六进制工作的开发人员一起工作时才看到最后一次。
至于设备配置中的支持,您通常只会看到对前两个中的一个(或可能两者)的支持。
使用 IPv6,几乎所有内容都将使用 CIDR 表示法,尽管我见过(有一次,虽然没什么意义)有人也使用十六进制表示法作为掩码。
我们可以使用 CIDR 做什么而使用网络掩码无法做到?
同样,完全清楚,CIDR 表示法只是表示网络掩码的不同方式。我们可以用 CIDR 表示法做什么,而我们不能用点分十进制表示法?
用最少两个字符表示网络掩码。无论是打字还是写字,都更容易、更短。
CIDR(Classless Inter-Domain Routing)意味着您不再关注网络类别,它可以与网络掩码或掩码长度(CIDR 表示法,这就是我认为您的意思)一起使用。
使用 CIDR 表示法可以更轻松地阅读前缀,并且可以帮助防止在输入网络掩码时可能发生的拼写错误。
最初的 IP 寻址规范实际上允许您使用不连续的网络掩码,因此您必须拼出掩码。CIDR 不适用于非连续的网络掩码,因此简单地使用掩码长度会使事情更容易读写。
IPv6 仅使用 CIDR 和 CIDR 表示法,因为它是在 CIDR 之后开发的。IPv4 中使用通配符掩码的技巧在 IPv6 中不再可用。可以说那些只是把戏,如果你依赖它们,那么你一开始就没有正确地做事。我遇到过使用奇数和偶数寻址技巧的人,他们将其与 IPv4 通配符掩码一起使用,并希望通过 IPv6 来实现,但他们运气不佳。
在 CIDR 下寻址大大简化。
那么,CIDR 只是网络掩码的语法糖吗?我们可以使用 CIDR 做什么而使用网络掩码无法做到?
这不仅仅是句法上的问题,因为有些网络情况可以用网络掩码编写而不能用 CIDR 表示法编写,幸运的是,“非连续网络”几乎从未使用过。非连续网络掩码类似于 255.255.127.0,它不符合良好网络掩码的模式,所有网络掩码都有 N 个 1,后跟 (32-N) 个零。
如果您发现自己想使用这些“古怪的网络掩码”,请说服自己不要这样做。它们违反了当前关于事物如何运作的所有假设,并违反了任意数量的标准。了解它们的唯一真正原因是让您知道使用网络掩码表示法可能会出现某些错误,而这些错误是不可能在 CIDR 中编写的。
CIDR 确实是一种更好的表达网络规模的方式。它以简洁的方式传达正确的信息。
CIDR 相当于网络掩码,可以互换使用。
除非您开始谈论基于策略的路由。在这方面,它是不同的。
假设您为发往 10.10.10.0 255.255.255.0 网络的所有流量制定了规则。所有发往 .1 - .255 的流量都将受到影响并应用规则。
如果您将其设为基于 CIDR 的规则 10.10.10.0/16,则该规则仅适用于该特定网络。例如,如果子网进一步划分为 /24,并且流量目的地为 10.10.10.0/24,则这将与 CIDR 规则不匹配且不会受到影响。但是相同流量的路由到 10.10.10.0/16 的路由规则将适用。
希望这可以帮助