Notasi desimal dotless aneh dari alamat IP ... Bagaimana cara kerjanya?


89

Sebelumnya hari ini saya pikir saya memiliki URL di clipboard saya, tetapi saya sebenarnya memiliki empat bilangan bulat 9 digit yang disalin dari spreadsheet, yang merupakan nomor identifikasi dari sistem berpemilik. Sama sekali tidak terkait dengan tugas yang dihadapi. Saya menempelkannya ke Firefox dan terkejut menemukan itu benar-benar memuat halaman. Saya telah melihat notasi desimal dotless dari alamat IPv4 sebelumnya, tetapi angka panjang ini adalah sesuatu yang jauh, jauh lebih besar.

714687644714805209715128610715964400 (menempel HTTP: // di depan)

Bagaimana cara kerjanya? Semua desimal -> konverter IPv4 yang saya temukan di Internet semuanya menganggapnya sebagai input yang tidak valid. Jika saya mengambil alamat IPv4 yang benar-benar dimuat, dan melakukan perhitungan yang sama untuk mengubahnya menjadi desimal tanpa titik, saya mendapatkan angka yang jauh lebih kecil.

Saya telah membaca bahwa ping dapat menerima kata-kata dan melakukan beberapa konversi, tetapi tidak dapat mengonversi nomor ini ke alamat IP. IPv6 keluar dari pertanyaan karena host ini tidak memiliki konektivitas IPv6.

Kegilaan macam apa ini? Ini membuat saya dan rekan kerja saya bingung.

Sunting: Sudah kembali online sekarang.



2
Apakah Anda benar-benar yakin itu bukan alamat IPv6? Karena angka ini terurai menjadi 8 digit pada basis 65536; Alamat IPv6 memiliki 8 digit di basis 65536. Diwakili dalam hex seperti biasa untuk IPv6, ini 89: a4d2: 471b: 45ef: 77ed: c70f: da35: 93f0.
Christian

2
@Christian Penjelasannya untuk sumber nomor jives dengan nomor aktual yang ditampilkan, yang memiliki 36 digit (setiap ID adalah 9 digit baik 714xxxxxx atau 715xxxxxx). Komputer bahkan tidak memiliki IPv6, dan nomor yang diambil sebagai alamat IPv4 memang mengembalikan halaman web. Angka dari ~ 5E33 hingga ~ 3E38 memiliki 8 digit di basis 65536, saya pikir itu hanya kebetulan bahwa penurunannya dalam kisaran itu (ditambah, angka yang lebih kecil juga akan menjadi alamat IPv6 yang valid)
Tim S.

1
@beeks Ok, sudah tidak berfungsi ketika saya mencobanya kemarin tapi mengingat bahwa itu adalah router tanpa jaminan mungkin itu tidak begitu mengejutkan. Jadi, apakah Anda mengatakan bahwa pada dasarnya Anda memasukkan nomor acak ke bilah alamat Anda? Atau jenis spreadsheet apa yang Anda miliki di sana yang berisi alamat IP yang dikodekan secara aneh dari router yang tidak aman? ;)
Christian

1
@Christian, LOL. Mereka adalah beberapa pengidentifikasi pesan unik dalam sistem kepatuhan. Kesempatan yang sangat aneh bahwa saya menempelkan mereka ke bilah alamat, dan itu berhasil. Saya yakin itu tidak akan pernah terjadi lagi pada saya dalam hidup saya :)
beeks

Jawaban:


93

Ini pertanyaan yang cukup menarik, dan saya perlu sedikit waktu untuk mencari tahu. Jawaban singkatnya adalah 32-bit terakhir dari angka tersebut adalah 3660944368 (dalam desimal, yang dapat ditemukan oleh 714687644714805209715128610715964400 mod 2^32)

Ini adalah nilai desimal dari alamat IPv4 218.53.147.240 , yang dapat ditemukan dengan mengonversinya menjadi basis-256 3660944368 = 218*(256^3)+53*(256^2)+147*(256)+240analog dengan menuliskan angka dalam desimal (basis-10). Sebagai contoh 234 = 2*10^2+ 3*10 + 4.

Seperti yang ditunjukkan @chritohnide, setiap bagian dari alamat IPv4 putus-putus disebut oktet karena mewakili 8 digit biner. Perlu juga dicatat bahwa berbagai format alamat IPv4 (seperti desimal bertitik, atau desimal murni) hanyalah cara yang berbeda untuk mewakili angka biner 32-bit untuk manfaat luar.

Karena alamat IPv4 adalah angka 32-bit, maka hanya 32-bit terakhir dari nomor yang digunakan untuk menyelesaikan alamat. Mengapa ini benar tidak jelas. Seperti yang telah ditunjukkan orang lain, angka lengkapnya terlihat sangat mirip dengan alamat IPv6 dalam desimal, tetapi bukan alamat yang valid.

Melihat spesifikasi Teredo (lihat 4. Alamat Teredo ), Client IPv4 menempati 32-bit terakhir dari alamat IPv6, tetapi awalan nomor tersebut tidak cocok dengan spesifikasi Teredo (Juga lihat wikipedia ).


12
Jawaban bagus. Mungkin juga berguna untuk menyebutkan bahwa setiap bagian dari alamat IPv4 bertitik disebut oktet karena itu adalah representasi desimal dari angka biner 8 bit (4 oktet = 4 x 8 bit = 32 bit alamat IPv4) dan bahwa desimal versi ini hanya untuk keuntungan kita.
chritohnide

4
Anda yakin itu bukan notasi desimal IPv6? Berhasil dikonversi ke0089:a4d2:471b:45ef:77ed:c70f:da35:93f0
Izkata

5
@Izkata: Tidak mungkin karena alamat itu akan berada di bagian ruang alamat IPv6 yang tidak terisi dan disediakan.
Henning Makholm

3
Angka (dalam ASCII) mungkin hanya akan dijalankan melalui salah satu string C stdlib ke fungsi int untuk mengkonversi ke alamat ipv4 32-bit. Dalam sebagian besar implementasi C stdlib, konversi tersebut akan secara otomatis melakukan modulo ^ ^ <ukuran integer yang diinginkan>. Hasil dalam kasus itu persis dengan perilaku yang diamati.
Tonny

3
Perlu dicatat bahwa ini mungkin merupakan kekhasan dari parser URL Firefox. Tampaknya mengenali bahwa itu adalah angka daripada URL dan mencoba untuk menguraikannya sebagai alamat IP 32-bit undotted (bilangan bulat parsed yang dihasilkan berakhir modulo 32-bit dan tidak benar-benar melakukan kesalahan memeriksa input) ). Chrome, misalnya, tidak menunjukkan perilaku ini. Sebenarnya mungkin layak melaporkannya sebagai bug sepele di Firefox.
Jason C
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.