Ale*_*uil 12 ip-address ipv4 specifications
我知道 IPv6 允许省略连续的零。但是 IPv4 呢?我还没有在 Internet 上找到任何对此的参考,包括 Wikipedia 和RFC 791 – Internet Protocol。本文档 建议在 IPv4 地址中“可以省略前导零”(搜索术语“省略”)。不够具体。
查看此 shell 会话:
[~]$ ping -c 1 127.1
PING 127.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.040 ms
--- 127.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.040/0.040/0.040/0.000 ms
[~]$ ping -c 1 127.0.1
PING 127.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.044 ms
--- 127.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.044/0.044/0.044/0.000 ms
[~]$ ssh 127.1 :
The authenticity of host '127.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is 04:48:fa:f2:ef:95:7c:35:46:39:2e:d3:89:dd:cd:87.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.1' (ECDSA) to the list of known hosts.
alex@127.1's password:
Run Code Online (Sandbox Code Playgroud)
显然,ping 和 ssh 都将 127.1 和 127.0.1 理解为与 127.0.0.1 相同。这是在哪里规定的?
ner*_*ler 15
大约一年前有一篇 Stack Overflow 帖子提出了类似的问题(这篇帖子)。
主要原因是inet_aton()
(手册页)如何将八位字节转换为二进制地址。
A B C D
四个数字部分中的每一个指定地址的一个字节;字节按从左到右的顺序分配以生成二进制地址。
美国广播公司
a 和 b 部分指定二进制地址的前两个字节。c 部分被解释为一个 16 位值,它定义了二进制地址最右边的两个字节。此表示法适用于指定(过时的)B 类网络地址。
AB
a 部分指定二进制地址的第一个字节。b 部分被解释为一个 24 位值,它定义了二进制地址最右边的三个字节。此表示法适用于指定(过时的)C 类网络地址。
一种
值 a 被解释为 32 位值,直接存储到二进制地址中,没有任何字节重新排列。
这不是由 POSIX.anything 定义的 - 但它可以广泛使用。
归档时间: |
|
查看次数: |
5408 次 |
最近记录: |