opsi soket IPPROTO_IPV6

Tabel berikut ini menjelaskan IPPROTO_IPV6 opsi soket yang berlaku untuk soket yang dibuat untuk keluarga alamat IPv6 (AF_INET6). Lihat halaman referensi fungsi getsockopt dan setsockopt untuk informasi selengkapnya tentang mendapatkan dan mengatur opsi soket.

Untuk menghitung protokol dan menemukan properti yang didukung untuk setiap protokol yang diinstal, gunakan fungsi WSAEnumProtocols, WSCEnumProtocols, atau WSCEnumProtocols32 .

Beberapa opsi soket memerlukan lebih banyak penjelasan daripada yang dapat disampaikan tabel ini; opsi tersebut berisi tautan ke informasi tambahan.

Opsi

Opsi get set Jenis optval Deskripsi
IP_ORIGINAL_ARRIVAL_IF ya ya DWORD (boolean) Menunjukkan apakah fungsi LPFN_WSARECVMSG (WSARecvMsg) harus mengembalikan data kontrol opsional yang berisi antarmuka kedatangan asli tempat paket diterima untuk soket datagram. Opsi ini digunakan dengan teknologi transisi IPv6 (terowongan 6to4, ISATAP, dan Teredo, misalnya) yang menyediakan penetapan alamat dan penerowongan otomatis host-to-host untuk lalu lintas IPv6 unicast ketika host IPv6 harus melintasi jaringan IP4 untuk mencapai jaringan IPv6 lainnya. Paket IPv6 dikirim terowongan sebagai paket IPv4. Opsi ini memungkinkan antarmuka IPv4 asli tempat paket diterima untuk dikembalikan dalam struktur WSAMSG .
IPV6_ADD_IFLIST ya DWORD (IF_INDEX) Menambahkan indeks antarmuka ke IFLIST yang terkait dengan opsi IP_IFLIST .
IPV6_ADD_MEMBERSHIP ya ipv6_mreq Gabungkan soket ke grup multicast yang disediakan pada antarmuka yang ditentukan. Opsi ini hanya valid pada datagram dan soket mentah (jenis soket harus SOCK_DGRAM atau SOCK_RAW).
IPV6_DEL_IFLIST ya DWORD (IF_INDEX) Menghapus indeks antarmuka dari IFLIST yang terkait dengan opsi IP_IFLIST . Entri hanya dapat dihapus oleh aplikasi, jadi ketahuilah bahwa entri mungkin kedaluarsa setelah antarmuka dihapus.
IPV6_DROP_MEMBERSHIP ya ipv6_mreq Biarkan grup multicast yang disediakan dari antarmuka yang diberikan. Opsi ini hanya valid pada datagram dan soket mentah (jenis soket harus SOCK_DGRAM atau SOCK_RAW).
IPV6_GET_IFLIST ya DWORD[] (IF_INDEX[]) Mendapatkan IFLIST saat ini yang terkait dengan opsi IP_IFLIST . Mengembalikan kesalahan jika IP_IFLIST tidak diaktifkan.
IPV6_HDRINCL ya ya DWORD(boolean) Menunjukkan aplikasi menyediakan header IPv6 pada semua data keluar. Jika parameter optval diatur ke 1 pada panggilan ke setsockopt, opsi diaktifkan. Jika optval diatur ke 0, opsi dinonaktifkan. Nilai defaultnya dinonaktifkan. Opsi ini hanya valid untuk datagram dan soket mentah (jenis soket harus SOCK_DGRAM atau SOCK_RAW). Penyedia layanan TCP/IP yang mendukung SOCK_RAW juga harus mendukung IPV6_HDRINCL.
IPV6_HOPLIMIT ya ya DWORD (boolean) Menunjukkan bahwa informasi hop (TTL) harus dikembalikan dalam fungsi LPFN_WSARECVMSG (WSARecvMsg ). Jika optval diatur ke 1 pada panggilan ke setsockopt, opsi diaktifkan. Jika diatur ke 0, opsi dinonaktifkan. Opsi ini hanya valid untuk datagram dan soket mentah (jenis soket harus SOCK_DGRAM atau SOCK_RAW).
IPV6_IFLIST ya ya DWORD (boolean) Mendapatkan atau mengatur status IP_IFLIST soket. Ketika opsi ini diatur ke true, penerimaan Datagram dibatasi untuk antarmuka yang ada di IFLIST. Datagram yang diterima pada antarmuka lain diabaikan. IFLIST mulai kosong. Gunakan IP_ADD_IFLIST dan IP_DEL_IFLIST untuk mengedit IFLIST.
IPV6_JOIN_GROUP ya ipv6_mreq Sama seperti IPV6_ADD_MEMBERSHIP
IPV6_LEAVE_GROUP ya ipv6_mreq Sama seperti IPV6_DROP_MEMBERSHIP
IPV6_MTU ya DWORD Mendapatkan perkiraan sistem dari jalur MTU. Soket harus terhubung.
IPV6_MTU_DISCOVER ya ya DWORD (PMTUD_STATE) Mendapatkan atau mengatur jalur status penemuan MTU untuk soket. Nilai defaultnya adalah IP_PMTUDISC_NOT_SET. Untuk soket streaming, IP_PMTUDISC_NOT_SET dan IP_PMTUDISC_DO akan melakukan penemuan MTU jalur. IP_PMTUDISC_DONT dan IP_PMTUDISC_PROBE akan menonaktifkan penemuan MTU jalur. Untuk soket datagram, jika diatur ke IP_PMTUDISC_DO , upaya untuk mengirim paket yang lebih besar dari jalur MTU akan mengakibatkan kesalahan. Jika diatur ke IP_PMTUDISC_DONT, paket akan terfragmentasi sesuai dengan antarmuka MTU. Jika diatur ke IP_PMTUDISC_PROBE, upaya untuk mengirim paket yang lebih besar dari antarmuka MTU akan mengakibatkan kesalahan.
IPV6_MULTICAST_HOPS ya ya DWORD Mendapatkan atau menetapkan nilai TTL yang terkait dengan lalu lintas multicast IPv6 pada soket. Adalah ilegal untuk mengatur TTL ke nilai yang lebih besar dari 255. Opsi ini hanya valid untuk datagram dan soket mentah (jenis soket harus SOCK_DGRAM atau SOCK_RAW).
IPV6_MULTICAST_IF ya ya DWORD Mendapatkan atau mengatur antarmuka keluar untuk mengirim lalu lintas multicast IPv6. Opsi ini tidak mengubah antarmuka default untuk menerima lalu lintas multicast IPv6. Opsi ini penting untuk komputer multihomed. Nilai input untuk mengatur opsi ini adalah indeks antarmuka 4-byte dari antarmuka keluar yang diinginkan dalam urutan byte host. Fungsi GetAdaptersAddresses dapat digunakan untuk mendapatkan informasi indeks antarmuka. Jika optval diatur ke NULL pada panggilan ke setsockopt, antarmuka IPv6 default akan digunakan. Jika optval adalah nol , antarmuka default untuk menerima multicast ditentukan untuk mengirim lalu lintas multicast. Saat mendapatkan opsi ini, optval mengembalikan indeks antarmuka default saat ini untuk mengirim lalu lintas IPv6 multicast dalam urutan byte host.
IPV6_MULTICAST_LOOP ya ya DWORD (boolean) Menunjukkan data multicast yang dikirim pada soket akan digaungkan ke soket yang menerima buffer jika juga bergabung pada grup multicast tujuan. Jika optval diatur ke 1 pada panggilan ke setsockopt, opsi diaktifkan. Jika diatur ke 0, opsi dinonaktifkan. Opsi ini hanya valid untuk datagram dan soket mentah (jenis soket harus SOCK_DGRAM atau SOCK_RAW).
IPV6_PKTINFO ya ya DWORD (boolean) Menunjukkan bahwa informasi paket harus dikembalikan oleh fungsi LPFN_WSARECVMSG (WSARecvMsg ).
IPV6_PROTECTION_LEVEL ya ya INT Memungkinkan pembatasan soket ke cakupan tertentu, seperti alamat dengan awalan lokal tautan atau lokal situs yang sama. Menyediakan berbagai tingkat pembatasan dan pengaturan default. Lihat IPV6_PROTECTION_LEVEL untuk informasi selengkapnya.
IPV6_RECVIF ya ya DWORD (boolean) Menunjukkan apakah tumpukan IP harus mengisi buffer kontrol dengan detail antarmuka mana yang menerima paket dengan soket datagram. Ketika nilai ini benar, fungsi LPFN_WSARECVMSG (WSARecvMsg) akan mengembalikan data kontrol opsional yang berisi antarmuka tempat paket diterima untuk soket datagram. Opsi ini memungkinkan antarmuka IPv6 tempat paket diterima untuk dikembalikan dalam struktur WSAMSG . Opsi ini hanya valid untuk datagram dan soket mentah (jenis soket harus SOCK_DGRAM atau SOCK_RAW).
IPV6_RECVTCLASS ya ya DWORD (boolean) Menunjukkan apakah tumpukan IP harus mengisi buffer kontrol dengan pesan yang berisi bidang header Traffic Class IPv6 pada datagram yang diterima. Ketika nilai ini benar, fungsi LPFN_WSARECVMSG (WSARecvMsg) akan mengembalikan data kontrol opsional yang berisi nilai bidang header IPv6 Kelas Lalu Lintas dari datagram yang diterima. Opsi ini memungkinkan bidang header Traffic Class IPv6 dari datagram yang diterima dikembalikan dalam struktur WSAMSG . Jenis pesan yang dikembalikan akan IPV6_TCLASS. Semua bit DSCP dan ECN dari bidang Kelas Lalu Lintas akan dikembalikan. Opsi ini hanya valid pada soket datagram (jenis soket harus SOCK_DGRAM).
IPV6_UNICAST_HOPS ya ya DWORD Mendapatkan atau mengatur nilai TTL saat ini yang terkait dengan soket IPv6 untuk lalu lintas unicast. Adalah ilegal untuk mengatur TTL ke nilai yang lebih besar dari 255.
IPV6_UNICAST_IF ya ya DWORD (IF_INDEX) Mendapatkan atau mengatur antarmuka keluar untuk mengirim lalu lintas IPv6. Opsi ini tidak mengubah antarmuka default untuk menerima lalu lintas IPv6. Opsi ini penting untuk komputer multihomed. Nilai input untuk mengatur opsi ini adalah indeks antarmuka 4-byte dari antarmuka keluar yang diinginkan dalam urutan byte host. Fungsi GetAdaptersAddresses dapat digunakan untuk mendapatkan informasi indeks antarmuka. Jika optval adalah nol, antarmuka default untuk mengirim lalu lintas IPv6 diatur ke tidak ditentukan. Saat mendapatkan opsi ini, optval mengembalikan indeks antarmuka default saat ini untuk mengirim lalu lintas IPv6 dalam urutan byte host.
IPV6_USER_MTU ya ya DWORD Mendapatkan atau mengatur batas atas pada MTU lapisan IP (dalam byte) untuk soket yang diberikan. Jika nilainya lebih tinggi dari perkiraan sistem dari jalur MTU (yang dapat Anda ambil pada soket yang tersambung dengan mengkueri opsi soket IPV6_MTU ), maka opsi tidak berpengaruh. Jika nilainya lebih rendah, maka paket keluar yang lebih besar dari ini akan terfragmentasi, atau akan gagal dikirim, tergantung pada nilai IPV6_DONTFRAG. Nilai defaultnya adalah IP_UNSPECIFIED_USER_MTU (MAXULONG). Untuk keamanan jenis, Anda harus menggunakan fungsi WSAGetIPUserMtu dan WSASetIPUserMtu alih-alih menggunakan opsi soket secara langsung.
IPV6_V6ONLY ya ya DWORD (boolean) Menunjukkan apakah soket yang dibuat untuk keluarga alamat AF_INET6 dibatasi hanya untuk komunikasi IPv6. Soket yang dibuat untuk keluarga alamat AF_INET6 dapat digunakan untuk komunikasi IPv6 dan IPv4. Beberapa aplikasi mungkin ingin membatasi penggunaan soket yang dibuat hanya untuk keluarga alamat AF_INET6 ke komunikasi IPv6. Ketika nilai ini bukan nol (default pada Windows), soket yang dibuat untuk keluarga alamat AF_INET6 hanya dapat digunakan untuk mengirim dan menerima paket IPv6. Ketika nilai ini nol, soket yang dibuat untuk keluarga alamat AF_INET6 dapat digunakan untuk mengirim dan menerima paket ke dan dari alamat IPv6 atau alamat IPv4. Perhatikan bahwa kemampuan untuk berinteraksi dengan alamat IPv4 memerlukan penggunaan alamat yang dipetakan IPv4. Opsi soket ini didukung pada Windows Vista atau yang lebih baru.

Dukungan Windows untuk opsi soket IPPROTO_IPV6

Opsi Windows 8 Windows Server 2012 Windows 7 Windows Server 2008 Windows Vista
IP_ORIGINAL_ARRIVAL_IF x x x
IPV6_ADD_IFLIST Dimulai dengan Windows 10, versi 1803
IPV6_ADD_MEMBERSHIP x x x x x
IPV6_DEL_IFLIST Dimulai dengan Windows 10, versi 1803
IPV6_DROP_MEMBERSHIP x x x x x
IPV6_GET_IFLIST Dimulai dengan Windows 10, versi 1803
IPV6_HDRINCL x x x x x
IPV6_HOPLIMIT x x x x x
IPV6_IFLIST Dimulai dengan Windows 10, versi 1803
IPV6_JOIN_GROUP x x x x x
IPV6_LEAVE_GROUP x x x x x
IPV6_MULTICAST_HOPS x x x x x
IPV6_MULTICAST_IF x x x x x
IPV6_MULTICAST_LOOP x x x x x
IPV6_PKTINFO x x x x x
IPV6_PROTECTION_LEVEL x x x x x
IPV6_RECVIF x x x x x
IPV6_UNICAST_HOPS x x x x x
IPV6_UNICAST_IF x x x x x
IPV6_V6ONLY x x x x x

Opsi Windows Server 2003 Windows XP
IP_ORIGINAL_ARRIVAL_IF
IPV6_ADD_IFLIST
IPV6_ADD_MEMBERSHIP x x
IPV6_DEL_IFLIST
IPV6_DROP_MEMBERSHIP x x
IPV6_GET_IFLIST
IPV6_HDRINCL x x
IPV6_HOPLIMIT x x
IPV6_IFLIST
IPV6_JOIN_GROUP x x
IPV6_LEAVE_GROUP x x
IPV6_MULTICAST_HOPS x x
IPV6_MULTICAST_IF x x
IPV6_MULTICAST_LOOP x x
IPV6_PKTINFO x x
IPV6_PROTECTION_LEVEL x x
IPV6_RECVIF
IPV6_UNICAST_HOPS x x
IPV6_UNICAST_IF
IPV6_V6ONLY

Keterangan

Pada Microsoft Windows Software Development Kit (SDK) yang dirilis untuk Windows Vista dan yang lebih baru, organisasi file header telah berubah dan tingkat IPPROTO_IPV6 ditentukan dalam file header Ws2def.h yang secara otomatis disertakan dalam file header Winsock2.h . Opsi soket IPPROTO_IPV6 ditentukan dalam file header Ws2ipdef.h yang secara otomatis disertakan dalam file header Ws2tcpip.h . File header Ws2def.h dan Ws2ipdef.h tidak boleh digunakan secara langsung.

Opsi soket IP_ORIGINAL_ARRIVAL_IF didukung pada Windows Server 2008 R2 serta pada Windows 7.

Persyaratan

Persyaratan Nilai
Header
Ws2def.h (termasuk Winsock2.h);
Winsock2.h pada Windows Server 2003 dan Windows XP