IPPROTO_IP 通訊端選項
下表描述 IPPROTO_IP 通訊端選項,這些選項適用于針對 IPv4 位址系列所建立的通訊端 (AF_INET) 。 如需取得和設定通訊端選項的詳細資訊,請參閱 getsockopt 和 setockopt 函式參考頁面。
若要列舉通訊協定並探索每個已安裝通訊協定的支援屬性,請使用 WSAEnumProtocols、 WSCEnumProtocols或 WSCEnumProtocols32 函式。
某些通訊端選項需要比這些資料表所能傳達的更多說明;這類選項包含其他頁面的連結。
選項。
選項 | Get | 集合 | 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_IFLIST 和 IP_DEL_IFLIST 來編輯 IFLIST。 |
IP_MTU | 是 | DWORD | 取得系統路徑 MTU 的估計值。 通訊端必須連接。 | |
IP_MTU_DISCOVER | 是 | 是 | DWORD (PMTUD_STATE) | 取得或設定通訊端的路徑 MTU 探索狀態。 預設值為 IP_PMTUDISC_NOT_SET。 對於資料流程通訊端, IP_PMTUDISC_NOT_SET 和 IP_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 | 是 | 是 | DWORD | 取得或設定傳送 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 | 是 | 是 | DWORD | 設定/取得與通訊端上 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 | 是 | 是 | DWORD | 指出 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_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 | 是 | 是 | DWORD | 取得或設定指定通訊端的 IP 層 MTU (位元組) 上限。 如果值高於系統路徑 MTU (的估計值,您可以藉由查詢 IP_MTU 通訊端選項) 來擷取該路徑 MTU,則選項不會有任何作用。 如果值較低,則大於這個 的輸出封包將會分散,或無法傳送,視 IP_DONTFRAGMENT的值而定。 預設值為 maxULONG) (IP_UNSPECIFIED_USER_MTU。 針對型別安全,您應該使用 WSAGetIPUserMtu 和 WSASetIPUserMtu 函式,而不是直接使用通訊端選項。 |
IP_WFP_REDIRECT_CONTEXT | 是 | 是 | WSACMSGHDR 與控制資料 | 資料包通訊端輔助資料類型 (cmsg_type) ,指出使用者模式 Windows 篩選平台 () 重新導向服務所使用的 UDP 通訊端重新導向內容。 |
IP_WFP_REDIRECT_RECORDS | 是 | 是 | WSACMSGHDR 與控制資料 | 資料包通訊端輔助資料類型 (cmsg_type) ,用來指出使用者模式 Windows 篩選平台 (一個) 重新導向服務所使用的 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 層級定義在 Winsock2.h 標頭檔中自動包含在 Winsock2.h 標頭檔中。 Ws2ipdef.h標頭檔會自動包含在Ws2tcpip.h標頭檔中的一些IPPROTO_IP通訊端選項。 其餘 IPPROTO_IP 通訊端選項定義于 Wsipv6ok.h 標頭檔中, Winsock2.h 標頭檔會自動包含。 Ws2def.h、Ws2ipdef.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標頭檔不應該直接使用。
規格需求
需求 | 值 |
---|---|
標頭 |
|
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應