Wenn ich versuche, die IP-Adresse zu pingen, erhalte 10.10.208.57
ich keine Antwort, da im Netzwerk nichts mit dieser IP-Adresse vorhanden ist.
Wenn ich jedoch versuche, 10.10.208.
057
zu pingen, antwortet stattdessen eine andere IP-Adresse:
root@everest:/root# ping 10.10.208.057
PING 10.10.208.057 (10.10.208.47) 56(84) bytes of data.
64 bytes from 10.10.208.47: icmp_seq=1 ttl=253 time=0.732 ms
64 bytes from 10.10.208.47: icmp_seq=2 ttl=253 time=0.695 ms
64 bytes from 10.10.208.47: icmp_seq=3 ttl=253 time=0.659 ms
64 bytes from 10.10.208.47: icmp_seq=4 ttl=253 time=0.705 ms
Wenn man bedenkt, dass 10.10.208.47
es sich um einen Lexmark E120n handelt, woran könnte dieses seltsame Problem liegen?
Antworten:
Dieses Verhalten ist eigentlich auf eine normale Ping-Funktion zurückzuführen und steht in keinem Zusammenhang mit Ihrer tatsächlichen Hardware.
Wenn Sie der IP-Adresse (oder einem Teil davon) eine führende Null voranstellen, wird die Zahl als Oktal interpretiert .
Das
057
bedeutet also57
in der Basis 8, was 47 ist. Somit sendet Ping die ICMP- Abfrage an die Maschine, die sich an der Adresse befindet,10.10.208.47
und erhält daher eine Antwort von ihr.Beachten Sie, dass Sie Adressen auch hexadezimal anpingen können, indem Sie das 0x-Präfix anstelle von nur 0 verwenden.
Bearbeiten: Wie aus vielen Kommentaren hervorgeht, ist diese Funktion nicht spezifisch für
ping
viele CLI-Softwareprogramme, die IP-Adressen bearbeiten.quelle
Ping verwendet wie viele andere Unix-Programme die C-Bibliotheken auf Ihrem Unix-System zur Namensauflösung. Eine der verwendeten Funktionen ist
inet_aton
.Die Manpage für
inet_aton
sagt:Wenn Sie also eine führende Null verwenden, wird die Zahl als Oktal interpretiert. Somit ist 57 = 047 = 0x39.
quelle