Je sais que IPv6 permet d'omettre des zéros consécutifs. Mais qu'en est-il d'IPv4? Je n'ai trouvé aucune référence à cela sur Internet, y compris Wikipedia et RFC 791 - Internet Protocol. Ce document suggère que «les zéros non significatifs peuvent être omis» dans une adresse IPv4 (recherchez le terme «omis»). Pas assez précis.
Découvrez cette session 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.
[email protected]'s password:
Clairement, ping et ssh comprennent que 127.1 et 127.0.1 sont identiques à 127.0.0.1. Où est-ce spécifié?
ip-address
specifications
ipv4
Alexandre de Verteuil
la source
la source
ping 0.0.0.0
ouping 0
fonctionne de la même manière ...)Réponses:
Il y a un article Stack Overflow d'il y a environ un an demandant quelque chose de similaire ( cet article ).
La raison principale est la façon dont
inet_aton()
( page de manuel ) convertit les octets en adresse binaire.Ce n'est pas défini par POSIX.anything - mais il est disponible assez largement.
la source
C'est une relique de l'ancien temps de l'adressage avec classe.
127.1
signifie réseau127
, hôte1
. (Et, oui,127.257
c'est légal car le réseau127
peut avoir plus de 256 hôtes.la source