Jawaban:
Hal pertama yang ditentukan klien adalah protokol mana yang tersedia. Mari kita asumsikan bahwa kedua IPv4 dan IPv6 tersedia (jika tidak jawaban yang protokolnya pilih sepele;) Kemudian akan melakukan pencarian DNS untuk catatan A (alamat IPv4) dan AAAA (alamat IPv6). Jika hanya satu jenis yang dikembalikan maka akan menggunakannya. Jika kedua alamat IPv4 dan IPv6 dikembalikan, perilaku default sedikit tergantung pada perangkat lunak klien. Biasanya RFC 3484 digunakan.
Menurut standar resmi, seharusnya IPv6 lebih disukai, tetapi karena ada beberapa (0,01% atau kurang) mesin yang melakukan kesalahan konfigurasi IPv6, klien menjadi lebih pintar. Sebagian besar browser hari ini akan mencoba untuk terhubung melalui IPv6, tetapi jika mereka tidak mendapatkan koneksi yang berfungsi dalam 300 milidetik mereka akan mencoba untuk terhubung melalui IPv4 secara paralel. Koneksi pertama yang berhasil kemudian digunakan. Ini tercakup dalam Happy Eyeballs RFC .
Apple mengubah ini di Lion. Di sana sistem operasi benar-benar melacak kinerja semua koneksi, dan jika menentukan bahwa koneksi IPv4 memiliki latensi yang lebih rendah daripada koneksi IPv6, ia akan mulai memilih IPv4. Tetapi jika koneksi IPv4 menjadi lebih lambat itu mungkin beralih kembali ke IPv6. Lihatlah utas milis ini untuk diskusi tentang fitur ini.
Bagi pengguna itu tidak masalah jika IPv4 atau IPv6 digunakan, asalkan berfungsi. IPv4 dan IPv6 harus disediakan sama baiknya. Situs web harus bekerja sama persis di atas IPv4 seperti di atas IPv6, dll.
IPv4 akan tetap digunakan untuk beberapa tahun mendatang. Ini akan menjadi tidak dapat digunakan setelah layanan baru (situs web, game, dll) hanya digunakan melalui IPv6 karena tidak ada lagi alamat IPv4 baru yang akan digunakan. Dan pada titik tertentu semua yang berfungsi pada IPv4 juga akan berfungsi pada IPv6. Pada saat itu menonaktifkan IPv4 akan menghemat waktu dan uang (mengapa mempertahankan dua protokol saat satu sudah cukup?).
apt-get update
misalnya, mencoba untuk terhubung ke host ipv6, tetapi host itu sendiri bahkan tidak memiliki alamat IPv6, selain dari link-local-nya.
Langkah menengah yang digunakan sekarang dikenal sebagai tunneling. Paket IPv6 pada dasarnya berjalan di dalam paket IPv4 sampai mereka mencapai titik di mana mereka dapat dilucuti dari enkapsulasi IPv4 dan mengirim sisi lain pada jaringan IPv6 lengkap. Tentu saja ada banyak kerumitan lebih dari itu, tetapi konsep dasar by-in-large adalah sama di seluruh papan.
Karena semakin banyak perangkat yang mampu IPv6, dan orang-orang menjadi lebih akrab dengan menggunakan alamat, IPv6 akan melihat peningkatan penggunaan. Saya tidak percaya (pendapat pribadi) bahwa IPv6 akan benar-benar dianut dan melihat peluncuran skala besar di SMB dan pasar pribadi sampai ruang IPv4 menjadi komoditas yang mahal.
Di beberapa titik di masa depan yang cukup jauh ketika IPv6 mendukung mayoritas lalu lintas, saya bisa melihat pembalikan nasib IPv4, di mana lalu lintas IPv4 harus dienkapsulasi di dalam paket IPv6 reguler dan broker terowongan melayani peran yang sama (tetapi terbalik) karena kurangnya penugasan IPv4 perutean / IP yang luas.
Saya pikir Anda bertanya bagaimana aplikasi memutuskan cara memilih. Dari sisi program, itu tergantung pada implementasi aplikasi. Jika pembuat kode menjadikan IPv6 prioritas yang lebih tinggi daripada IPv4, misalnya, ia terlebih dahulu akan mencoba menggunakan getipv6addr (). Jika itu tidak dikonfigurasi atau gagal, maka itu akan mencoba menggunakan getaddr (), dll. Berdasarkan ini, aplikasi akan mengirim permintaan melalui IPv6 terlebih dahulu, atau sebaliknya.