我一直有这个问题。你可以看到,即使是 cisco 也能做到这一点。为什么不使用树状结构?像这样:

另一个例子:http ://www.davidc.net/sites/default/subnets/subnets.html
当然,可以以更清洁的方式在纸上进行。为什么没有人想到这一点?
我一直有这个问题。你可以看到,即使是 cisco 也能做到这一点。为什么不使用树状结构?像这样:

另一个例子:http ://www.davidc.net/sites/default/subnets/subnets.html
当然,可以以更清洁的方式在纸上进行。为什么没有人想到这一点?
也许你熟悉物理学家理查德费曼解释为什么他不能用其他方式解释磁性:
“我无法用你熟悉的其他任何东西来解释这种吸引力。例如,如果我说磁铁像橡皮筋一样吸引,那我就是在欺骗你。因为它们不是通过橡皮筋连接的。橡皮筋......如果你足够好奇,你会问我为什么橡皮筋会再次拉回,我最终会用电力来解释这一点,这正是我正在尝试的事情用橡皮筋来解释,所以我作弊很厉害,你看。” 理查德·费曼 BBC 视频
用二进制解释它们的原因是因为它们实际上是用二进制完成的:在主机决定两个地址是否在同一个网络中的代码中,有按位布尔运算符(AND、OR、NOT 等)。
比较两个地址以查看它们是否在同一个网络中的操作通常只有三个机器指令:
xor d1, d0 ; "bitwise not-equal" on two addresses
and d2, d0 ; keep network bits
beq doit ; go if same
这就是以这种方式进行地址计算的原因:它必须非常有效,因为这对于主机之间的每个路由器中的每个数据包都要进行多次。在设计互联网协议时,与X.25等的虚拟电路相比,这并不是一个好主意。
人类用二进制、十六进制或 4 位 base-256 数字进行算术运算非常实用,但我们大多数人并不擅长。任何未在 2 次幂的基础中完成的方法都会增加实际上并不存在的复杂性。其基本理念是操作非常简单:绝对像工程师可以做到的那样简单。
您描述的方法只是一种解释二进制操作的方法。我向你们保证,人们已经以各种可以想象的方式考虑过这些事情。如果你能帮助你理解它,那就太好了。否则,我建议直接了解它的含义。
网络寻址和掩码等的规范答案是如何计算前缀、网络、子网和主机号?
PS。这些机器指令大致相当于 C
if (!((addr1 ^ addr2) & mask)) { doit(); }