如果所有IPv4地址总是写为12位长,没有点,那么任何ip地址都是明确的,因此仍然有效。
例如127.0.0.1可以写成127000000001
我觉得这会让解析和使用ip地址变得更容易。如果是这样的话,那么点小数表示法背后的目的是什么?使用点小数表示法有什么好处?
研究表明,人类最多只能读取五个数字,而不会开始在这些数字的位置上出错。这就是为什么人类开始以千为单位对数字进行分组。例如读取:
1578124
很难快速解析。然而,如果我们将其表示为:
1 578 124
这要容易得多。
特别是如果有许多数字具有相同的值,如:
1000001101111000100001
一个人很容易失去计数。
他们可能不想使用空格的原因是,大多数终端将空格解释为新的自变量。因此:
ping 127 0 0 1
connect: Invalid argument
将被解释为四个不同的参数(主机)。使用点可以让人和机器都很容易。
但是IPv4地址由四个字节(从0
到255
的四个数字)组成。这样一来,它就可以紧凑地存储在一个网络包中的四个字节中。如今,这已经不那么重要了,因为带宽太大了,四个字节根本不需要时间。但在早期,压缩地址可以节省很多时间。
IPv6地址也是如此。零的长序列可以缩写为::
。
IP地址以这种方式存储:例如,"127.0.0.1"实际上是0x7F000001;任何第三种表示都没有意义。
127000000001(一千二百七十亿零一)比127000000001更可读。
"127.0.0.1"比0x7F000001可读性更强。
"Hello World!"比0x48656C6C6F20576F726C642100可读性更强。
你好,世界
比<h1>Hello World!</h1>
更可读。
视图比它们所代表的模型更具可读性。
作为软件开发人员,我们的主要工作是获取建模数据并将其作为用户内容呈现(或获取用户输入并将其建模为数据):请不要剥夺我们的这一点。
每一组点十进制表示法中的数字表示二进制中的一个字节。例如:
127 -> 0111 1111
0 -> 0000 0000
1 -> 0000 0001
因此127.0.0.1表示01111111 000000000000000000000001,正如计算机所看到的那样。如果你将这个二进制数字视为一个大数字,它的实际十进制值将是2130706433,如果不是点十进制,它将成为你的IP地址。由于显而易见的原因,人类可以更容易地记住127.0.0.1。此外,不使用点小数表示法意味着你无法消除那些使其为127.0.0.1而不是127.0.000.001的前导零。