Bagikan melalui


opsi soket IPPROTO_IP

Tabel berikut ini menjelaskan opsi soket IPPROTO_IP 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 yes DWORD (IF_INDEX) Menambahkan indeks antarmuka ke IFLIST yang terkait dengan opsi IP_IFLIST .
IP_ADD_MEMBERSHIP yes ip_mreq Gabungkan soket ke grup multicast yang disediakan pada antarmuka yang ditentukan.
IP_ADD_SOURCE_MEMBERSHIP yes 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 yes ip_mreq_source Menghapus sumber yang diberikan sebagai pengirim ke grup dan antarmuka multicast yang disediakan.
IP_DEL_IFLIST yes 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 yes yes 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 yes 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 yes ip_mreq_source Menghilangkan keanggotaan ke grup multicast, antarmuka, dan alamat sumber yang diberikan.
IP_GET_IFLIST yes DWORD[] (IF_INDEX[]) Mendapatkan IFLIST saat ini yang terkait dengan opsi IP_IFLIST . Mengembalikan kesalahan jika IP_IFLIST tidak diaktifkan.
IP_HDRINCL yes yes 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 yes yes 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 yes DWORD Mendapatkan perkiraan sistem dari jalur MTU. Soket harus terhubung.
IP_MTU_DISCOVER yes yes 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 mengatur 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 memiliki set bit DF, dan upaya untuk mengirim paket yang lebih besar dari antarmuka MTU akan mengakibatkan kesalahan.
IP_MULTICAST_IF yes yes 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 yes yes DWORD (boolean) Untuk soket yang digabungkan 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 pengiriman.
IP_MULTICAST_TTL yes yes DWORD Mengatur/mendapatkan nilai TTL yang terkait dengan lalu lintas multicast IP pada soket.
IP_OPTIONS yes yes 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 yes yes 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 valid pada datagram dan soket mentah (jenis soket harus SOCK_DGRAM atau SOCK_RAW).
IP_PKTINFO yes yes DWORD Menunjukkan bahwa informasi paket harus dikembalikan oleh fungsi WSARecvMsg .
IP_RECEIVE_BROADCAST yes yes DWORD (boolean) Mengizinkan atau memblokir penerimaan siaran.
IP_RECVIF yes yes 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 valid pada datagram dan soket mentah (jenis soket harus SOCK_DGRAM atau SOCK_RAW).
IP_RECVTOS yes yes 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_RECVECN yes yes DWORD (boolean) Menunjukkan apakah tumpukan IP harus mengisi buffer kontrol dengan pesan yang berisi bit ECN dari 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 bit ECN dari nilai bidang header TOS IPv4 dari datagram yang diterima. Opsi ini memungkinkan bit ECN dari bidang header TOS IPv4 dari datagram yang diterima dikembalikan dalam struktur WSAMSG. Jenis pesan yang dikembalikan akan IP_ECN. Semua 2 bit ECN dari bidang TOS akan dikembalikan. Opsi ini hanya valid pada datagram dan soket mentah (jenis soket harus SOCK_DGRAM atau SOCK_RAW). Untuk keamanan tipe, Anda harus menggunakan fungsi WSAGetRecvIPEcn dan WSASetRecvIPEcn alih-alih menggunakan opsi soket secara langsung.
IP_RECVTTL yes yes 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 yes yes 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 yes yes 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 yes ip_mreq_source Menambahkan sumber yang diberikan sebagai pengirim ke grup dan antarmuka multicast yang disediakan.
IP_UNICAST_IF yes yes 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 yes yes DWORD Mendapatkan atau mengatur batas atas pada lapisan IP MTU (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 yes yes 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 yes yes WSACMSGHDR dengan data kontrol Jenis data tambahan soket datagram (cmsg_type) untuk menunjukkan rekaman pengalihan untuk soket UDP yang digunakan oleh mode pengguna layanan pengalihan Windows Filtering Platform (WFP).

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 yes yes yes yes yes yes
IP_ADD_SOURCE_MEMBERSHIP yes yes yes yes yes yes
IP_BLOCK_SOURCE yes yes yes yes yes yes
IP_DEL_IFLIST Dimulai dengan Windows 10, versi 1803
IP_DONTFRAGMENT yes yes yes yes yes yes
IP_DROP_MEMBERSHIP yes yes yes yes yes yes
IP_DROP_SOURCE_MEMBERSHIP yes yes yes yes yes yes
IP_GET_IFLIST Dimulai dengan Windows 10, versi 1803
IP_HDRINCL yes yes yes yes yes yes
IP_IFLIST Dimulai dengan Windows 10, versi 1803
IP_MULTICAST_IF yes yes yes yes yes yes
IP_MULTICAST_LOOP yes yes yes yes yes yes
IP_MULTICAST_TTL yes yes yes yes yes yes
IP_OPTIONS yes yes yes yes yes yes
IP_ORIGINAL_ARRIVAL_IF yes yes yes yes
IP_PKTINFO yes yes yes yes yes yes
IP_RECEIVE_BROADCAST yes yes yes yes yes yes
IP_RECVIF Dimulai dengan Windows 10, versi 1703 yes yes yes yes yes
IP_RECVTTL yes
IP_TOS yes yes yes
IP_TTL yes yes yes yes yes yes
IP_UNBLOCK_SOURCE yes yes yes yes yes yes
IP_UNICAST_IF yes yes yes yes yes yes
IP_WFP_REDIRECT_CONTEXT yes yes yes
IP_WFP_REDIRECT_RECORDS yes yes yes

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

Keterangan

Dalam Microsoft Windows Software Development Kit (SDK) yang dirilis untuk Windows Vista dan yang lebih baru, organisasi file header telah berubah dan tingkat IPPROTO_IP ditentukan 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 ditentukan 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 ditentukan 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)