点十进制表示法的目的是什么?

What is the purpose of dot-decimal notation?

如果所有 IPv4 地址始终写成 12 位数字长且没有点,那么任何 IP 地址都不会产生歧义,因此仍然有效。

例如127.0.0.1可以写成127000000001

我觉得这会使解析和使用 ip 地址更容易。如果是这种情况,那么点十进制表示法背后的目的是什么?使用点十进制表示法有什么好处?

IP 地址 以这种方式存储:例如,“127.0.0.1”实际上是 0x7F000001;任何第三种表示都没有意义。

127,000,000,001(一千二百七十亿零一)比 127000000001 更具可读性。

“127.0.0.1”比 0x7F000001 更具可读性。

"Hello World!" 比 0x48656C6C6F20576F726C642100 更具可读性。

Hello World!

<h1>Hello World!</h1>.

更具可读性

视图比它们所代表的模型更具可读性。

作为软件开发人员,我们的主要工作正在获取建模数据并将其呈现为用户内容(或获取用户输入并将其建模为数据):请不要拿走它来自我们。

点十进制表示法中的每组数字代表二进制中的一个字节。例如:

127 -> 0111 1111
0 -> 0000 0000
1 -> 0000 0001

因此 127.0.0.1 代表 01111111 00000000 00000000 00000001,如计算机所见。 如果你把这个二进制数当作一个大数,那么它的实际十进制值为2130706433,如果不是点十进制表示法,它就是你的IP地址。 出于显而易见的原因,人类更容易记住 127.0.0.1。此外,不使用点十进制表示法意味着您无法消除那些使它成为 127.0.0.1 而不是 127.000.000.001 的前导零。

研究表明,人类最多只能读取五位数字,而不会在这些数字的位置上出现错误。这就是为什么人类开始以千为单位对数字进行分组。例如阅读:

 1578124

很难快速解析。但是,如果我们将其表示为:

1 578 124

简单多了。

特别是如果有很多数字具有相同的值,例如:

1000001101111000100001

一个人很容易失去计数。

他们可能不想使用 spaces 的原因是因为大多数终端将 space 解释为新参数。所以:

ping 127 0 0 1
connect: Invalid argument

将被解释为四个不同的参数(主机)。使用点对人类和机器来说都很容易。

但是 IPv4 地址由四个字节组成(四个数字范围从 0255)。这样做是为了使其可以紧凑地存储在网络包中的四个字节中。现在这已经不那么重要了,因为带宽很大,四个字节根本不需要时间。但是在早期压缩地址可以节省很多时间。

IPv6 地址也是如此。零的长序列可以缩写为 ::