Bagikan melalui


Porting Aplikasi Siaran ke IPv6

Bagian ini menjelaskan praktik terbaik untuk memindahkan aplikasi siaran IPv6 ke kemampuan multicast yang tersedia dengan Windows Sockets.

Membandingkan IPv4 dengan IPv6

Pertimbangan yang paling penting ketika bersiap untuk memindahkan aplikasi siaran IPv4 ke IPv6 adalah ini: IPv6 tidak memiliki konsep siaran yang diimplementasikan. Sebaliknya, IPv6 menggunakan multicast.

Multicast untuk IPv6 dapat meniru kemampuan siaran tradisional yang ditemukan di IPv4. Mengatur opsi soket IPV6_ADD_MEMBERSHIP dengan alamat IPv6 yang diatur ke cakupan tautan-lokal semua alamat simpul (FF02::1) setara dengan penyiaran pada alamat siaran IPv4 menggunakan opsi soket SO_BROADCAST . Alamat ini terkadang disebut grup multicast semua simpul. Untuk aplikasi yang hanya menginginkan emulasi siaran untuk IPv6, pendekatan tersebut setara secara operasional. Satu perbedaan penting dengan IPv6, bagaimanapun, adalah bahwa multicast pada alamat grup multicast semua simpul tidak diterima secara default (siaran IPv4 diterima secara default). Programmer aplikasi harus menggunakan opsi soket IPV6_ADD_MEMBERSHIP untuk mengaktifkan penerimaan multicast dari sumber apa pun, termasuk alamat grup multicast semua simpul.

Catatan

Di IPv6, pemilihan antarmuka ditentukan dalam struktur argumen yang diteruskan ke opsi soket multicast atau IOCTL.

 

Tetapi untuk transmisi yang lebih kaya, lebih kuat, lebih selektif, dan lebih mudah dikelola ke beberapa host, pengembang aplikasi harus mempertimbangkan untuk pindah ke model multicast.

Pindah ke Multicast

Dengan multicast, programmer aplikasi dapat secara selektif memilih pasangan sumber/grup tertentu, memungkinkan model penerimaan selektif. Multicast Listener Discovery (MLD) pada IPv6 dan versi 3 dari Internet Group Management Protocol (IGMPv3) pada IPv4 mendukung pemrograman multicasting. Selain itu, multicast memungkinkan aplikasi untuk secara khusus memblokir (atau membuka blokir) pengirim dalam grup, melindungi aplikasi lebih lanjut dari penyiar nakal. Kemampuan ini tersedia untuk IPv4 (memerlukan IGMPv3) serta IPv6 (memerlukan MLDv2).

Ada dua skenario utama untuk pemrogram aplikasi yang menggunakan multicast: porting tersebut dari aplikasi siaran IPv4 (atau multicast) ke IPv6, dan yang membuat aplikasi multicast IPv6 baru.

Untuk memindahkan aplikasi yang ada, ada dua opsi untuk berpindah ke multicast IPv6: menggunakan opsi soket dan menggunakan IOCTL.

  • Menggunakan opsi soket adalah pendekatan berbasis perubahan, yang memungkinkan pengembang mengubah properti soket seperti yang diperlukan (seperti memblokir atau membuka blokir pengirim, menambahkan sumber baru, dan sebagainya). Pendekatan ini lebih intuitif dan pendekatan yang direkomendasikan. Untuk informasi selengkapnya tentang pendekatan berbasis perubahan untuk pemrograman multicast, lihat MLD dan IGMP Menggunakan Windows Sockets.
  • Menggunakan IOCTL adalah pendekatan berbasis status akhir, karena memungkinkan pengembang untuk menyediakan status soket yang dikonfigurasi sepenuhnya, termasuk daftar penyertaan dan pengecualian, dengan satu panggilan. Untuk informasi selengkapnya tentang pendekatan berbasis status akhir, lihat Pemrograman Multicast Berbasis Final-State.

Bagi mereka yang membuat aplikasi multicast IPv6 baru, praktik yang disarankan adalah menggunakan opsi soket, daripada menggunakan IOCTL.

Ada satu pendekatan lain untuk membuat aplikasi multicast dengan IPv6, dan yang memerlukan menggunakan fungsi WSAJoinLeaf . Saat menggunakan fungsi WSAJoinLeaf bukanlah praktik yang direkomendasikan, ada situasi yang dapat menentukan penggunaannya. Misalnya, satu kelemahan untuk menggunakan opsi soket pada Windows Server 2003 dan yang lebih lama adalah bahwa mereka adalah versi IP spesifik. Pada versi Windows yang lebih lama ini, opsi soket yang berbeda harus untuk IPv6 dan IPv4. Pada Windows Vista dan yang lebih baru, opsi soket baru didukung yang dapat digunakan dengan IPv4 dan IPv6. Fungsi WSAJoinLeaf , sebaliknya, adalah versi IP dan agnostik protokol, dan oleh karena itu dapat menjadi pendekatan yang berguna untuk membangun aplikasi yang harus bekerja dengan beberapa versi IP di Windows Server 2003 dan yang lebih lama. Menggunakan fungsi WSAJoinLeaf mungkin lebih tepat dalam situasi tertentu di mana protokol dan agnostikisme versi IP diperlukan.