Ketika saya mencoba untuk melakukan ping ke alamat IP 10.10.208.57
saya tidak memiliki respons karena tidak ada yang ada di jaringan dengan alamat IP itu.
Namun jika saya mencoba melakukan ping 10.10.208.
057
sebagai gantinya alamat IP lain merespons:
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
Mengingat itu 10.10.208.47
adalah printer Lexmark E120n apa yang bisa menjadi asal dari masalah aneh ini?
Jawaban:
Perilaku itu sebenarnya disebabkan oleh fitur ping yang normal dan tidak ada hubungannya dengan perangkat keras Anda yang sebenarnya.
Memang, awalan alamat IP (atau bagian dari itu) dengan nol di depan akan menyebabkan angka ditafsirkan sebagai oktal .
Jadi
057
artinya57
dalam basis 8 yang adalah 47. Dengan demikian ping akan mengirimkan permintaan ICMP ke mesin yang terletak di alamat10.10.208.47
dan karenanya mendapatkan jawaban darinya.Perhatikan bahwa Anda juga dapat melakukan ping alamat dalam heksadesimal, dengan menggunakan awalan 0x alih-alih hanya 0.
Sunting: Seperti banyak komentar sarankan, fitur ini sebenarnya tidak spesifik untuk
ping
dan dapat ditemukan di banyak perangkat lunak CLI memanipulasi alamat IP.sumber
Ping, seperti banyak program unix lainnya, menggunakan perpustakaan C pada sistem unix Anda untuk resolusi nama. Salah satu fungsi yang digunakan adalah
inet_aton
.Halaman manual untuk
inet_aton
mengatakan:Jadi, ketika Anda menggunakan nol di depan, angka tersebut ditafsirkan sebagai oktal. Dengan demikian, 57 = 047 = 0x39.
sumber