Warum kann ich 127.1 pingen?

3161
Alexandre de Verteuil

Ich weiß, dass IPv6 zulässt, dass aufeinanderfolgende Nullen weggelassen werden. Aber wie sieht es mit IPv4 aus? Ich habe im Internet keinen Hinweis darauf gefunden, einschließlich Wikipedia und RFC 791 - Internet Protocol. Dieses Dokument legt nahe, dass "führende Nullen können weggelassen werden" in einer IPv4-Adresse (Suche nach dem Begriff "weggelassen"). Nicht spezifisch genug.

Schauen Sie sich diese Shell-Session an:

[~]$ 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:  

Natürlich verstehen sowohl Ping als auch ssh, dass 127.1 und 127.0.1 mit 127.0.0.1 identisch sind. Wo ist das angegeben?

10
[Diese Manpage] (http://linux.die.net/man/3/inet_aton) verlinkt in diesem Stack Overflow-Beitrag (http://stackoverflow.com/questions/10133820/is-there-any-documentation) -für-ommiting-null-in-dot-decimal-notation-of-ipv4-a) kann in Ihrer Gasse sein. nerdwaller vor 10 Jahren 7
Das ist ein uralter Notationsstil, aber ja: Es funktioniert :-) Sander Steffann vor 10 Jahren 1
@nerdwaller: Bitte poste das als Antwort. (Bonuspunkte, wenn Sie herausfinden, warum "Ping 0.0.0.0" oder "Ping 0" auf dieselbe Weise funktioniert ...) grawity vor 10 Jahren 1
http://superuser.com/questions/486788/why-does-pinging-192-168-072-only-2-dots-return-a-response-von-192-168-0-58 Der Hochstapler vor 10 Jahren 2

2 Antworten auf die Frage

13
nerdwaller

Es gibt einen Stack-Overflow-Beitrag von vor etwa einem Jahr, in dem etwas Ähnliches ( dieser Beitrag ) gefragt wird .

Der Hauptgrund ist, wie inet_aton()( Manpage ) die Oktette in die Binäradresse umwandelt.

A B C D

Jeder der vier numerischen Teile gibt ein Byte der Adresse an; Die Bytes werden in einer Reihenfolge von links nach rechts zugewiesen, um die binäre Adresse zu erzeugen.

ABC

Die Teile a und b geben die ersten zwei Bytes der Binäradresse an. Teil c wird als 16-Bit-Wert interpretiert, der die zwei rechten Bytes der binären Adresse definiert. Diese Notation eignet sich zur Angabe von (überholten) Netzwerkadressen der Klasse B.

ab

Teil a gibt das erste Byte der Binäradresse an. Teil b wird als 24-Bit-Wert interpretiert, der die drei rechten Bytes der binären Adresse definiert. Diese Notation eignet sich zur Angabe von (veralteten) Netzwerkadressen der Klasse C.

ein

Der Wert a wird als 32-Bit-Wert interpretiert, der ohne Byteumlagerung direkt in der binären Adresse gespeichert wird.

Dies wird nicht von POSIX.anything definiert - es ist jedoch ziemlich allgemein verfügbar.

Awesome, and I also checked the post you linked to on Stack Overflow. It had great insights on how different number systems can be used. @grawity [Wikipedia](https://en.wikipedia.org/wiki/Internet_Protocol_version_4#Special-use_addresses) says 0.0.0.0/8 is the current network. I assume 0.0.0.0/32 must be the current host and that ping only expects /32 "networks". I have not found an explicit reference though. Alexandre de Verteuil vor 10 Jahren 1
@AlexandredeVerteuil: Ping erwartet * Hosts *, keine Netzwerke ... also ja, / 32 für IPv4. grawity vor 10 Jahren 2
3
David Schwartz

Es ist ein Überbleibsel aus alten Tagen der klassenhaften Ansprache. 127.1bedeutet Netzwerk 127, Host 1. (Ja, das 127.257ist legal, weil das Netzwerk 127mehr als 256 Hosts haben kann.

127.257 bedeutet insbesondere 127.0.1.1, eine Adresse, die ich tatsächlich auf einem alten KMS-Serveraktivator sehe, der unter Windows 8.0 funktionierte Paul Stelian vor 7 Jahren 0