IPPROTO_IP 通訊端選項

下表說明 用至針對 IPv4 位址系列 (AF_INET) 建立的套接字IPPROTO_IP套接字選項。 如需取得和設定套接字選項的詳細資訊,請參閱 getsockopt 和 setsockopt 函式參考頁面。

若要列舉每個已安裝通訊協定的通訊協定和探索支援的屬性,請使用WSAEnumProtocolsWSCEnumProtocols WSCEnumProtocols32 函式。

某些套接字選項需要比這些數據表所能傳達更多的說明;這類選項包含其他頁面的連結。

選項。

選項 取得 Yammer 設定 Optval 類型 描述
IP_ADD_IFLIST DWORD (IF_INDEX) 將介面索引新增至與 IP_IFLIST 選項相關聯的 IFLIST。
IP_ADD_MEMBERSHIP ip_mreq 將套接字加入指定介面上提供的多播群組。
IP_ADD_SOURCE_MEMBERSHIP ip_mreq_source 在指定的介面上聯結提供的多播群組,並接受來自所提供來源地址的數據源。
IP_BLOCK_SOURCE ip_mreq_source 將指定的來源移除為所提供多播群組和介面的傳送者。
IP_DEL_IFLIST DWORD (IF_INDEX) 從與 IP_IFLIST 選項相關聯的 IFLIST 中移除介面索引。 專案只能由應用程式移除,因此請注意,移除介面之後,專案可能會過時。
IP_DONTFRAGMENT DWORD (布爾值) 指出數據不應分散,而不論本機 MTU 為何。 僅適用於訊息導向通訊協定。 Microsoft TCP/IP 提供者會尊重 UDP 和 ICMP 的此選項。
IP_DROP_MEMBERSHIP ip_mreq 離開指定介面中的指定多播群組。 支援多播時,服務提供者必須支援此選項。 WSAEnumProtocols 函數呼叫所傳回的 WSAPROTOCOL_INFO 結構中會指出支援:XPI_SUPPORT_MULTIPOINT=1、XP1_MULTIPOINT_CONTROL_PLANE=0、XP1_MULTIPOINT_DATA_PLANE=0。
IP_DROP_SOURCE_MEMBERSHIP ip_mreq_source 將成員資格卸除至指定的多播群組、介面和來源位址。
IP_GET_IFLIST DWORD[] (IF_INDEX[]) 取得與 IP_IFLIST 選項相關聯的目前 IFLIST。 如果未 啟用IP_IFLIST ,則傳回錯誤。
IP_HDRINCL DWORD (布爾值) 當設定為 TRUE 時,表示應用程式會提供 IP 標頭。 僅適用於SOCK_RAW套接字。 如果應用程式提供的值為零,TCP/IP 服務提供者可能會設定標識符字段。 IP_HDRINCL選項只會套用至通訊協定SOCK_RAW類型。 支援SOCK_RAW的 TCP/IP 服務提供者也應該支援IP_HDRINCL。
IP_IFLIST DWORD (布爾值) 取得或設定套接字IP_IFLIST狀態。 當此選項設定為 true 時,Datagram 接收會限制為 IFLIST 中的介面。 系統會忽略任何其他介面上收到的數據報。 IFLIST 會啟動空白。 使用 IP_ADD_IFLISTIP_DEL_IFLIST 來編輯 IFLIST。
IP_MTU 下載 取得系統路徑 MTU 的估計值。 套接字必須連接。
IP_MTU_DISCOVER DWORD (PMTUD_STATE 取得或設定套接字的路徑 MTU 探索狀態。 預設值為 IP_PMTUDISC_NOT_SET。 針對數據流套接字, IP_PMTUDISC_NOT_SETIP_PMTUDISC_DO 會執行路徑 MTU 探索。 IP_PMTUDISC_DONT和IP_PMTUDISC_PROBE將會關閉路徑 MTU 探索。 若為數據報套接字, IP_PMTUDISC_DO 會強制所有傳出封包都設定 DF 位,而且嘗試傳送大於路徑 MTU 的封包會導致錯誤。 IP_PMTUDISC_DONT會強制所有傳出封包都未設定 DF 位,而且會根據介面 MTU 來分散封包。 IP_PMTUDISC_PROBE會強制所有傳出封包設定 DF 位,而且嘗試傳送大於介面 MTU 的封包將會導致錯誤。
IP_MULTICAST_IF 下載 取得或設定傳送 IPv4 多播流量的傳出介面。 此選項不會變更接收 IPv4 多播流量的預設介面。 設定此選項的輸入值是網路位元組順序中的 4 位元組 IPv4 位址。 這個 DWORD 參數也可以是網路位元組順序的介面索引。 除了 IPv4 位址 0.0.0.0.0 以外,0.x.x 區塊中的任何 IP 位址都會被視為介面索引。 介面索引是 24 位的數位,且未使用 0.0.0.0/8 IPv4 位址區塊(保留此範圍)。 介面索引可用來指定 IPv4 多播流量的預設介面。 如果 optval 為零,則會指定接收多播的預設介面來傳送多播流量。 取得此選項時, optval 會傳回目前的預設介面索引,以主機位元組順序傳送多播 IPv4 流量。
IP_MULTICAST_LOOP DWORD (布爾值) 對於已加入一或多個多播群組的套接字,這會控制它是否會透過選取的多播介面接收傳送至這些多播群組的 傳出 封包複本。 根據預設, 會啟用IP_MULTICAST_LOOP (值 1/TRUE),因此套接字 會收到 目前計算機所傳送的相符多播封包。 停用此選項(將此選項設定為 0/FALSE),表示即使套接字在回送介面上開啟,此套接字也不會接收從本機電腦傳送的多播。

這與 POSIX 版本的IP_MULTICAST_LOOP不相容—必須在接收套接字上設定選項;而POSIX選項必須在傳送套接字上設定。
IP_MULTICAST_TTL 下載 設定/取得與套接字上IP多播流量相關聯的TTL值。
IP_OPTIONS char [] 指定要插入傳出封包的IP選項。 設定新選項會覆寫所有先前指定的選項。 將 optval 設定為零會移除所有先前指定的選項。 不需要IP_OPTIONS支援;若要檢查是否支援IP_OPTIONS,請使用 getockopt 取得目前的選項。 如果 getsockopt 失敗,則不支援IP_OPTIONS。
IP_ORIGINAL_ARRIVAL_IF DWORD (布爾值) 指出LPFN_WSARECVMSG (WSARecvMsg) 函式是否應該傳回選擇性控制數據,其中包含接收數據報套接字封包的抵達介面。 此選項允許在 WSAMSG 結構中傳回封包的 IPv4 介面。 此選項僅適用於數據報和原始套接字(套接字類型必須是SOCK_DGRAM或SOCK_RAW)。
IP_PKTINFO 下載 指出 WSARecvMsg 函式應該傳回封包資訊。
IP_RECEIVE_BROADCAST DWORD (布爾值) 允許或封鎖廣播接收。
IP_RECVIF DWORD (布爾值) 指出IP堆疊是否應該填入控制緩衝區,其中包含哪些介面收到具有數據報套接字封包的詳細數據。 當此值為 true 時, LPFN_WSARECVMSG (WSARecvMsg) 函式會傳回選擇性的控制數據,其中包含封包接收給數據報套接字的介面。 此選項允許在 WSAMSG 結構中傳回封包的 IPv4 介面。 此選項僅適用於數據報和原始套接字(套接字類型必須是SOCK_DGRAM或SOCK_RAW)。
IP_RECVTOS DWORD (布爾值) 指出IP堆疊是否應該在接收的數據報上填入包含服務類型 (TOS) IPv4 標頭欄位的訊息,以填入控制緩衝區。 當此值為 true 時, LPFN_WSARECVMSG (WSARecvMsg) 函式會傳回選擇性控制數據,其中包含所接收數據報的 TOS IPv4 標頭域值。 此選項允許在 WSAMSG 結構中傳回所接收數據報的 TOS IPv4 標頭欄位。 傳回的訊息類型將會IP_TOS。 將會傳回 TOS 欄位的所有 DSCP 和 ECN 位。 此選項僅適用於數據報套接字(套接字類型必須是SOCK_DGRAM)。
IP_RECVECN DWORD (布爾值) 指出IP堆疊是否應該在接收的數據報上填入包含ECN位之服務類型 (TOS) IPv4 標頭欄位的訊息,以填入控制緩衝區。 當此值為 true 時, LPFN_WSARECVMSG (WSARecvMsg) 函式會傳回選擇性控制數據,其中包含所接收數據報之 TOS IPv4 標頭域值的 ECN 位。 此選項允許在 WSAMSG 結構中傳回所接收數據報之 TOS IPv4 標頭欄位的 ECN 位。 傳回的訊息類型將會IP_ECN。 將會傳回 TOS 欄位的所有 2 個 ECN 位。 此選項僅適用於數據報和原始套接字(套接字類型必須是SOCK_DGRAM或SOCK_RAW)。 針對類型安全性,您應該使用 WSAGetRecvIPEcnWSASetRecvIPEcn 函式,而不是直接使用套接字選項。
IP_RECVTTL DWORD (布爾值) 表示應該在 LPFN_WSARECVMSG (WSARecvMsg) 函式中 傳回躍點 (TTL) 資訊。 如果在呼叫 setockopt 時將 optval 設定為 1,則會啟用此選項。 如果設定為 0,則會停用選項。 此選項僅適用於數據報和原始套接字(套接字類型必須是SOCK_DGRAM或SOCK_RAW)。
IP_TOS DWORD (布爾值) 請勿使用。 服務類型 (TOS) 設定只能使用服務品質 API 來設定。 如需詳細資訊,請參閱 平臺 SDK 的服務品質一節中的區分服務
IP_TTL DWORD (布爾值) 在傳出數據報中IP標頭的TTL欄位中,變更TCP/IP服務提供者所設定的預設值。 不需要IP_TTL支援;若要檢查是否支援IP_TTL,請使用 getockopt 取得目前的選項。 如果 getsockopt 失敗,則不支援IP_TTL。
IP_UNBLOCK_SOURCE ip_mreq_source 將指定的來源新增為傳送者至提供的多播群組和介面。
IP_UNICAST_IF DWORD (IF_INDEX) 取得或設定傳送 IPv4 流量的傳出介面。 此選項不會變更接收 IPv4 流量的預設介面。 此選項對於多路計算機而言很重要。 設定此選項的輸入值是網路位元組順序中的 4 位元組 IPv4 位址。 這個 DWORD 參數必須是網路位元組順序的介面索引。 除了 IPv4 位址 0.0.0.0.0 以外,0.x.x 區塊中的任何 IP 位址都會被視為介面索引。 介面索引是 24 位的數位,且未使用 0.0.0.0/8 IPv4 位址區塊(保留此範圍)。 介面索引可用來指定傳送 IPv4 流量的預設介面。 GetAdaptersAddresses 函式可用來取得介面索引資訊。 如果 optval 為零,傳送流量的預設介面會設定為未指定。 取得此選項時, optval 會傳回目前的預設介面索引,以主機位元組順序傳送 IPv4 流量。
IP_USER_MTU 下載 取得或設定指定套接字之IP層 MTU(以位元組為單位)的上限。 如果值高於系統路徑 MTU 的估計值(您可以藉由查詢 IP_MTU 套接字選項來擷取連線套接字),則選項沒有任何作用。 如果值較低,則大於這個的輸出封包會分散,或會根據IP_DONTFRAGMENT的值而無法傳送。 預設值為 IP_UNSPECIFIED_USER_MTU (MAXULONG)。 針對類型安全性,您應該使用 WSAGetIPUserMtuWSASetIPUserMtu 函式,而不是直接使用套接字選項。
IP_WFP_REDIRECT_CONTEXT WSACMSGHDR 搭配控制數據 數據報套接字輔助數據類型 (cmsg_type) 表示使用者模式 Windows 篩選平臺 (WFP) 重新導向服務所使用的 UDP 套接字重新導向內容。
IP_WFP_REDIRECT_RECORDS WSACMSGHDR 搭配控制數據 數據報套接字輔助數據類型 (cmsg_type) 表示使用者模式 Windows 篩選平臺 (WFP) 重新導向服務所使用的 UDP 套接字重新導向記錄。

IP_PROTO選項的 Windows 支援

選項 Windows 10 Windows 8 Windows Server 2012 Windows 7 Windows Server 2008 Windows Vista
IP_ADD_IFLIST 從 Windows 10 版本 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 從 Windows 10 版本 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 從 Windows 10 版本 1803 開始
IP_HDRINCL x x x x x x
IP_IFLIST 從 Windows 10 版本 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 從 Windows 10 版本 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

選項 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

備註

在 Windows Vista 和更新版本中發行的 Microsoft Windows 軟體開發工具包 (SDK)中,頭檔的組織已變更,IPPROTO_IP層級定義於 Ws2def.h 頭檔中,該檔案會自動包含在 Winsock2.h 頭檔中。 Ws2ipdef.h 頭文件會自動包含的 Ws2ipdef.h 頭文件中定義了些IPPROTO_IP套接字選項。 其餘IPPROTO_IP套接字選項定義於 Wsipv6ok.h 頭檔中,Winsock2.h 頭文件會自動包含Ws2def.hWs2ipdef.h 和 Wsipv6ok.h 頭文件不應該直接使用。

在 Windows Server 2003 和 Windows XP 發行的平臺 SDK 中, IPPROTO_IP 層級定義於 Winsock2.h 頭檔中。 Ws2tcpip.h 頭文件中定義了一些IPPROTO_IP套接字選項。 其餘IPPROTO_IP套接字選項定義於 Wsipv6ok.h 頭檔中,Winsock2.h 頭文件會自動包含Wsipv6ok.h 頭文件不應該直接使用。

需求

需求
頁首
Ws2def.h (包括 Winsock2.h):
Ws2ipdef.h (包括 Ws2tcpip.h):
Wsipv6ok.h (包括 Winsock2.h)