Wiem, że IPv6 pozwala na pomijanie kolejnych zer. A co z IPv4? Nie znalazłem żadnego odniesienia do tego w Internecie, w tym Wikipedii i RFC 791 - Protokół internetowy. Ten dokument sugeruje, że „Zera wiodące można pominąć” w adresie IPv4 (wyszukaj termin „pominięty”). Nie dość szczegółowe.
Sprawdź tę sesję powłoki:
[~]$ 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:
Oczywiście zarówno ping, jak i ssh rozumieją, że 127.1 i 127.0.1 są takie same jak 127.0.0.1. Gdzie to jest określone?
ip-address
specifications
ipv4
Alexandre de Verteuil
źródło
źródło
ping 0.0.0.0
lubping 0
działa w ten sam sposób ...)Odpowiedzi:
Istnieje post przepełnienia stosu sprzed około roku z pytaniem o coś podobnego ( ten post ).
Głównym powodem jest to, w jaki sposób
inet_aton()
( strona podręcznika) konwertuje oktety na adres binarny.Nie jest to zdefiniowane przez POSIX. Wszystko - ale jest dostępne dość szeroko.
źródło
To relikt z dawnych czasów klasowych przemówień.
127.1
oznacza sieć127
, host1
. (I tak,127.257
jest to legalne, ponieważ sieć127
może mieć więcej niż 256 hostów.źródło