Bagaimana aplikasi klien tahu untuk menggunakan IPv4 atau IPv6?

18

Bagaimana server / komputer / pengguna / aplikasi mengetahui untuk meminta sumber daya melalui Internet dengan alamat IPv6 vs. dan alamat IPv4?

Bobby S
sumber

Jawaban:

24

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?).

Sander Steffann
sumber
1
Setelah ini ditulis, RFC 3484 telah usang oleh RFC 6724 .
Michael Hampton
Bagaimana cara menentukan protokol mana yang tersedia? Saya telah melihat perilaku acak di mana apt-get updatemisalnya, mencoba untuk terhubung ke host ipv6, tetapi host itu sendiri bahkan tidak memiliki alamat IPv6, selain dari link-local-nya.
Halfgaar
1
Itu ditangani oleh pemilihan sumber dan alamat tujuan (RFC 6724). Dalam kasus Anda, sepertinya host melihat catatan AAAA dalam DNS, memilih alamat tujuan itu, kemudian menemukan bahwa itu tidak memiliki alamat sumber yang dapat digunakan dengan tujuan itu, dan kemudian kembali ke IPv4.
Sander Steffann
2

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.

Garrett
sumber
1
Saya tidak berpikir ini menjawab pertanyaan ... Selain itu: Tunneling dengan cepat menghilang di internet inti IPv6 karena IPv6 asli tersedia di mana-mana sekarang. Akan ada beberapa penerobosan kepada pelanggan, tetapi itu tidak ada hubungannya dengan pilihan yang dibuat sistem ketika terhubung. PS: Penerowongan IPv4-over-IPv6 sudah muncul. Beberapa operator internet kabel menggunakan DS-Lite tahun ini, yang melakukan hal itu.
Sander Steffann
Saya bekerja untuk pusat data besar dan memiliki kontak semua industri, dan pengalaman saya adalah IPv6 jelas tidak di mana - mana sekarang. Tunneling ada untuk menjembatani kesenjangan dan mengingat sebagian besar pengguna akhir belum memiliki tugas IPv6, masih relevan.
Garrett
3
Tunneling memang sedang digunakan, tetapi harus dihindari jika memungkinkan. ISP yang belum menawarkan IPv6 yang layak kepada pelanggan mereka tidak melakukan pekerjaan mereka ... Tetapi bagaimanapun juga: Pertanyaannya adalah bagaimana aplikasi klien memilih antara IPv4 dan IPv6, dan itu tidak ada hubungannya dengan cara jaringan memiliki konektivitas IPv6-nya karena itu adalah pekerjaan router, bukan aplikasi klien. Aplikasi klien hanya menggunakan apa pun yang tersedia di jaringan lokal.
Sander Steffann
Perang salib terus, teman saya.
Garrett
-2

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.

MaryOpen.cn
sumber