IPPROTO_IP opsi soket

Tabel berikut ini menjelaskan IPPROTO_IP opsi soket yang berlaku untuk soket yang dibuat untuk keluarga alamat IPv4 (AF_INET). 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 halaman tambahan.

Opsi

Opsi Dapatkan Set Jenis optval Deskripsi
IP_ADD_IFLIST ya DWORD (IF_INDEX) Menambahkan indeks antarmuka ke IFLIST yang terkait dengan opsi IP_IFLIST .
IP_ADD_MEMBERSHIP ya ip_mreq Gabungkan soket ke grup multicast yang disediakan pada antarmuka yang ditentukan.
IP_ADD_SOURCE_MEMBERSHIP ya ip_mreq_source Bergabunglah dengan grup multicast yang disediakan pada antarmuka yang diberikan dan terima data yang bersumber dari alamat sumber yang disediakan.
IP_BLOCK_SOURCE ya ip_mreq_source Menghapus sumber yang diberikan sebagai pengirim ke grup dan antarmuka multicast yang disediakan.
IP_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.
IP_DONTFRAGMENT ya ya DWORD (boolean) Menunjukkan bahwa data tidak boleh terfragmentasi terlepas dari MTU lokal. Hanya berlaku untuk protokol berorientasi pesan. Penyedia TCP/IP Microsoft menghormati opsi ini untuk UDP dan ICMP.
IP_DROP_MEMBERSHIP ya ip_mreq Meninggalkan grup multicast yang ditentukan dari antarmuka yang ditentukan. Penyedia layanan harus mendukung opsi ini ketika multicast didukung. Dukungan ditunjukkan dalam struktur WSAPROTOCOL_INFO yang dikembalikan oleh panggilan fungsi WSAEnumProtocols dengan yang berikut: XPI_SUPPORT_MULTIPOINT=1, XP1_MULTIPOINT_CONTROL_PLANE=0, XP1_MULTIPOINT_DATA_PLANE=0.
IP_DROP_SOURCE_MEMBERSHIP ya ip_mreq_source Menghilangkan keanggotaan ke grup multicast, antarmuka, dan alamat sumber yang diberikan.
IP_GET_IFLIST ya DWORD[] (IF_INDEX[]) Mendapatkan IFLIST saat ini yang terkait dengan opsi IP_IFLIST . Mengembalikan kesalahan jika IP_IFLIST tidak diaktifkan.
IP_HDRINCL ya ya DWORD (boolean) Ketika diatur ke TRUE, menunjukkan aplikasi menyediakan header IP. Hanya berlaku untuk soket SOCK_RAW. Penyedia layanan TCP/IP dapat mengatur bidang ID, jika nilai yang disediakan oleh aplikasi adalah nol. Opsi IP_HDRINCL hanya diterapkan ke jenis protokol SOCK_RAW. Penyedia layanan TCP/IP yang mendukung SOCK_RAW juga harus mendukung IP_HDRINCL.
IP_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.
IP_MTU ya DWORD Mendapatkan perkiraan sistem tentang jalur MTU. Soket harus terhubung.
IP_MTU_DISCOVER ya ya DWORD (PMTUD_STATE) Mendapatkan atau mengatur status penemuan MTU jalur 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, IP_PMTUDISC_DO akan memaksa semua paket keluar untuk memiliki set bit DF dan upaya untuk mengirim paket yang lebih besar dari jalur MTU akan mengakibatkan kesalahan. IP_PMTUDISC_DONT akan memaksa semua paket keluar agar bit DF tidak diatur, dan paket akan terfragmentasi sesuai dengan antarmuka MTU. IP_PMTUDISC_PROBE akan memaksa semua paket keluar untuk mengatur bit DF, dan upaya untuk mengirim paket yang lebih besar dari antarmuka MTU akan mengakibatkan kesalahan.
IP_MULTICAST_IF ya ya DWORD Mendapatkan atau mengatur antarmuka keluar untuk mengirim lalu lintas multicast IPv4. Opsi ini tidak mengubah antarmuka default untuk menerima lalu lintas multicast IPv4. Nilai input untuk mengatur opsi ini adalah alamat IPv4 4-byte dalam urutan byte jaringan. Parameter DWORD ini juga dapat menjadi indeks antarmuka dalam urutan byte jaringan. Alamat IP apa pun di blok 0.x.x.x (oktet pertama 0) kecuali alamat IPv4 0.0.0.0 diperlakukan sebagai indeks antarmuka. Indeks antarmuka adalah angka 24-bit, dan blok alamat IPv4 0.0.0.0/8 tidak digunakan (rentang ini dicadangkan). Indeks antarmuka dapat digunakan untuk menentukan antarmuka default untuk lalu lintas multicast untuk IPv4. 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 IPv4 multicast dalam urutan byte host.
IP_MULTICAST_LOOP ya ya DWORD (boolean) Untuk soket yang bergabung ke satu atau beberapa grup multicast, ini mengontrol apakah akan menerima salinan paket keluar yang dikirim ke grup multicast tersebut melalui antarmuka multicast yang dipilih. Secara default, IP_MULTICAST_LOOP diaktifkan (nilai 1/TRUE), sehingga soket akan menerima paket multicast yang cocok yang dikirim oleh komputer saat ini. Menonaktifkan opsi ini (dengan mengaturnya ke 0/FALSE) berarti bahwa soket ini tidak akan menerima multicast yang dikirim dari komputer lokal, bahkan jika soket terbuka pada antarmuka loopback.

Ini tidak kompatibel dengan versi POSIX IP_MULTICAST_LOOP—opsi harus diatur pada soket penerima; sementara opsi POSIX harus diatur pada soket pengirim.
IP_MULTICAST_TTL ya ya DWORD Mengatur/mendapatkan nilai TTL yang terkait dengan lalu lintas multicast IP pada soket.
IP_OPTIONS ya ya char [] Menentukan opsi IP yang akan dimasukkan ke dalam paket keluar. Pengaturan opsi baru menimpa semua opsi yang ditentukan sebelumnya. Mengatur optval ke nol menghapus semua opsi yang ditentukan sebelumnya. dukungan IP_OPTIONS tidak diperlukan; untuk memeriksa apakah IP_OPTIONS didukung, gunakan getsockopt untuk mendapatkan opsi saat ini. Jika getsockopt gagal, IP_OPTIONS tidak didukung.
IP_ORIGINAL_ARRIVAL_IF ya ya DWORD (boolean) Menunjukkan apakah fungsi LPFN_WSARECVMSG (WSARecvMsg) harus mengembalikan data kontrol opsional yang berisi antarmuka kedatangan tempat paket diterima untuk soket datagram. Opsi ini memungkinkan antarmuka IPv4 tempat paket diterima untuk dikembalikan dalam struktur WSAMSG . Opsi ini hanya berlaku pada datagram dan soket mentah (jenis soket harus SOCK_DGRAM atau SOCK_RAW).
IP_PKTINFO ya ya DWORD Menunjukkan bahwa informasi paket harus dikembalikan oleh fungsi WSARecvMsg .
IP_RECEIVE_BROADCAST ya ya DWORD (boolean) Mengizinkan atau memblokir penerimaan siaran.
IP_RECVIF ya ya DWORD (boolean) Menunjukkan apakah tumpukan IP harus mengisi buffer kontrol dengan detail tentang 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 IPv4 tempat paket diterima untuk dikembalikan dalam struktur WSAMSG . Opsi ini hanya berlaku pada datagram dan soket mentah (jenis soket harus SOCK_DGRAM atau SOCK_RAW).
IP_RECVTOS ya ya DWORD (boolean) Menunjukkan apakah tumpukan IP harus mengisi buffer kontrol dengan pesan yang berisi bidang header IPv4 Jenis Layanan (TOS) pada datagram yang diterima. Ketika nilai ini benar, fungsi LPFN_WSARECVMSG (WSARecvMsg) akan mengembalikan data kontrol opsional yang berisi nilai bidang header TOS IPv4 dari datagram yang diterima. Opsi ini memungkinkan bidang header TOS IPv4 dari datagram yang diterima dikembalikan dalam struktur WSAMSG . Jenis pesan yang dikembalikan akan IP_TOS. Semua bit DSCP dan ECN dari bidang TOS akan dikembalikan. Opsi ini hanya valid pada soket datagram (jenis soket harus SOCK_DGRAM).
IP_RECVTTL 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 berlaku untuk datagram dan soket mentah (jenis soket harus SOCK_DGRAM atau SOCK_RAW).
IP_TOS ya ya DWORD (boolean) Jangan gunakan. Jenis pengaturan Layanan (TOS) hanya boleh diatur menggunakan Quality of Service API. Lihat Layanan yang Berbeda di bagian Kualitas Layanan dari Platform SDK untuk informasi selengkapnya.
IP_TTL ya ya DWORD (boolean) Mengubah nilai default yang ditetapkan oleh penyedia layanan TCP/IP di bidang TTL header IP dalam datagram keluar. dukungan IP_TTL tidak diperlukan; untuk memeriksa apakah IP_TTL didukung, gunakan getsockopt untuk mendapatkan opsi saat ini. Jika getsockopt gagal, IP_TTL tidak didukung.
IP_UNBLOCK_SOURCE ya ip_mreq_source Menambahkan sumber yang diberikan sebagai pengirim ke grup dan antarmuka multicast yang disediakan.
IP_UNICAST_IF ya ya DWORD (IF_INDEX) Mendapatkan atau mengatur antarmuka keluar untuk mengirim lalu lintas IPv4. Opsi ini tidak mengubah antarmuka default untuk menerima lalu lintas IPv4. Opsi ini penting untuk komputer multihomed. Nilai input untuk mengatur opsi ini adalah alamat IPv4 4-byte dalam urutan byte jaringan. Parameter DWORD ini harus berupa indeks antarmuka dalam urutan byte jaringan. Alamat IP apa pun di blok 0.x.x.x (oktet pertama 0) kecuali alamat IPv4 0.0.0.0 diperlakukan sebagai indeks antarmuka. Indeks antarmuka adalah angka 24-bit, dan blok alamat IPv4 0.0.0.0/8 tidak digunakan (rentang ini dicadangkan). Indeks antarmuka dapat digunakan untuk menentukan antarmuka default untuk mengirim lalu lintas untuk IPv4. Fungsi GetAdaptersAddresses dapat digunakan untuk mendapatkan informasi indeks antarmuka. Jika optval adalah nol , antarmuka default untuk mengirim lalu lintas diatur ke tidak ditentukan. Saat mendapatkan opsi ini, optval mengembalikan indeks antarmuka default saat ini untuk mengirim lalu lintas IPv4 dalam urutan byte host.
IP_USER_MTU ya ya DWORD Mendapatkan atau mengatur batas atas pada MTU lapisan IP (dalam byte) untuk soket yang diberikan. Jika nilai lebih tinggi dari perkiraan sistem dari jalur MTU (yang dapat Anda ambil pada soket yang terhubung dengan mengkueri opsi soket IP_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 IP_DONTFRAGMENT. 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.
IP_WFP_REDIRECT_CONTEXT ya ya WSACMSGHDR dengan data kontrol Jenis data tambahan soket datagram (cmsg_type) untuk menunjukkan konteks pengalihan untuk soket UDP yang digunakan oleh mode pengguna layanan pengalihan Windows Filtering Platform (WFP).
IP_WFP_REDIRECT_RECORDS ya ya WSACMSGHDR dengan data kontrol Jenis data tambahan soket datagram (cmsg_type) untuk menunjukkan rekaman pengalihan untuk soket UDP yang digunakan oleh layanan pengalihan Windows Filtering Platform (WFP) mode pengguna.

Dukungan Windows untuk opsi IP_PROTO

Opsi Windows 10 Windows 8 Windows Server 2012 Windows 7 Windows Server 2008 Windows Vista
IP_ADD_IFLIST Dimulai dengan Windows 10, versi 1803
IP_ADD_MEMBERSHIP x x x x x x
IP_ADD_SOURCE_MEMBERSHIP x x x x x x
IP_BLOCK_SOURCE x x x x x x
IP_DEL_IFLIST Dimulai dengan Windows 10, versi 1803
IP_DONTFRAGMENT x x x x x x
IP_DROP_MEMBERSHIP x x x x x x
IP_DROP_SOURCE_MEMBERSHIP x x x x x x
IP_GET_IFLIST Dimulai dengan Windows 10, versi 1803
IP_HDRINCL x x x x x x
IP_IFLIST Dimulai dengan Windows 10, versi 1803
IP_MULTICAST_IF x x x x x x
IP_MULTICAST_LOOP x x x x x x
IP_MULTICAST_TTL x x x x x x
IP_OPTIONS x x x x x x
IP_ORIGINAL_ARRIVAL_IF x x x x
IP_PKTINFO x x x x x x
IP_RECEIVE_BROADCAST x x x x x x
IP_RECVIF Dimulai dengan Windows 10, versi 1703 x x x x x
IP_RECVTTL x
IP_TOS x x x
IP_TTL x x x x x x
IP_UNBLOCK_SOURCE x x x x x x
IP_UNICAST_IF x x x x x x
IP_WFP_REDIRECT_CONTEXT x x x
IP_WFP_REDIRECT_RECORDS x x x

Opsi Windows Server 2003 Windows XP
IP_ADD_IFLIST
IP_ADD_MEMBERSHIP x x
IP_ADD_SOURCE_MEMBERSHIP x x
IP_BLOCK_SOURCE x x
IP_DEL_IFLIST
IP_DONTFRAGMENT x x
IP_DROP_MEMBERSHIP x x
IP_DROP_SOURCE_MEMBERSHIP x x
IP_GET_IFLIST
IP_HDRINCL x x
IP_IFLIST
IP_MULTICAST_IF x x
IP_MULTICAST_LOOP x x
IP_MULTICAST_TTL x x
IP_OPTIONS x x
IP_ORIGINAL_ARRIVAL_IF
IP_PKTINFO x x
IP_RECEIVE_BROADCAST x x
IP_RECVIF
IP_RECVTTL
IP_TOS
IP_TTL x x
IP_UNBLOCK_SOURCE x x
IP_UNICAST_IF
IP_WFP_REDIRECT_CONTEXT
IP_WFP_REDIRECT_RECORDS

Keterangan

Dalam Kit Pengembangan Perangkat Lunak (SDK) Microsoft Windows yang dirilis untuk Windows Vista dan yang lebih baru, organisasi file header telah berubah dan tingkat IPPROTO_IP didefinisikan dalam file header Ws2def.h yang secara otomatis disertakan dalam file header Winsock2.h . Beberapa opsi soket IPPROTO_IP didefinisikan dalam file header Ws2ipdef.h yang secara otomatis disertakan oleh file header Ws2tcpip.h . Opsi soket IPPROTO_IP yang tersisa didefinisikan dalam file header Wsipv6ok.h yang secara otomatis disertakan oleh file header Winsock2.h . File header Ws2def.h, Ws2ipdef.h, dan Wsipv6ok.h tidak boleh digunakan secara langsung.

Dalam Platform SDK yang dirilis untuk Windows Server 2003 dan Windows XP, tingkat IPPROTO_IP ditentukan dalam file header Winsock2.h . Beberapa opsi soket IPPROTO_IP ditentukan dalam file header Ws2tcpip.h . Opsi soket IPPROTO_IP yang tersisa didefinisikan dalam file header Wsipv6ok.h yang secara otomatis disertakan oleh file header Winsock2.h . File header Wsipv6ok.h tidak boleh digunakan secara langsung.

Persyaratan

Persyaratan Nilai
Header
Ws2def.h (termasuk Winsock2.h);
Ws2ipdef.h (termasuk Ws2tcpip.h);
Wsipv6ok.h (termasuk Winsock2.h)