IPPROTO_IP 通訊端選項
下表說明 套 用至針對 IPv4 位址系列 (AF_INET) 建立的套接字IPPROTO_IP套接字選項。 如需取得和設定套接字選項的詳細資訊,請參閱 getsockopt 和 setsockopt 函式參考頁面。
若要列舉每個已安裝通訊協定的通訊協定和探索支援的屬性,請使用WSAEnumProtocols、WSCEnumProtocols 或 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_IFLIST 和 IP_DEL_IFLIST 來編輯 IFLIST。 |
IP_MTU | 是 | 下載 | 取得系統路徑 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 | 是 | 是 | 下載 | 取得或設定傳送 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)。 針對類型安全性,您應該使用 WSAGetRecvIPEcn 和 WSASetRecvIPEcn 函式,而不是直接使用套接字選項。 |
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)。 針對類型安全性,您應該使用 WSAGetIPUserMtu 和 WSASetIPUserMtu 函式,而不是直接使用套接字選項。 |
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 | 是 | 是 | 是 | 是 | 是 | 是 |
IP_ADD_SOURCE_MEMBERSHIP | 是 | 是 | 是 | 是 | 是 | 是 |
IP_BLOCK_SOURCE | 是 | 是 | 是 | 是 | 是 | 是 |
IP_DEL_IFLIST | 從 Windows 10 版本 1803 開始 | |||||
IP_DONTFRAGMENT | 是 | 是 | 是 | 是 | 是 | 是 |
IP_DROP_MEMBERSHIP | 是 | 是 | 是 | 是 | 是 | 是 |
IP_DROP_SOURCE_MEMBERSHIP | 是 | 是 | 是 | 是 | 是 | 是 |
IP_GET_IFLIST | 從 Windows 10 版本 1803 開始 | |||||
IP_HDRINCL | 是 | 是 | 是 | 是 | 是 | 是 |
IP_IFLIST | 從 Windows 10 版本 1803 開始 | |||||
IP_MULTICAST_IF | 是 | 是 | 是 | 是 | 是 | 是 |
IP_MULTICAST_LOOP | 是 | 是 | 是 | 是 | 是 | 是 |
IP_MULTICAST_TTL | 是 | 是 | 是 | 是 | 是 | 是 |
IP_OPTIONS | 是 | 是 | 是 | 是 | 是 | 是 |
IP_ORIGINAL_ARRIVAL_IF | 是 | 是 | 是 | 是 | ||
IP_PKTINFO | 是 | 是 | 是 | 是 | 是 | 是 |
IP_RECEIVE_BROADCAST | 是 | 是 | 是 | 是 | 是 | 是 |
IP_RECVIF | 從 Windows 10 版本 1703 開始 | 是 | 是 | 是 | 是 | 是 |
IP_RECVTTL | 是 | |||||
IP_TOS | 是 | 是 | 是 | |||
IP_TTL | 是 | 是 | 是 | 是 | 是 | 是 |
IP_UNBLOCK_SOURCE | 是 | 是 | 是 | 是 | 是 | 是 |
IP_UNICAST_IF | 是 | 是 | 是 | 是 | 是 | 是 |
IP_WFP_REDIRECT_CONTEXT | 是 | 是 | 是 | |||
IP_WFP_REDIRECT_RECORDS | 是 | 是 | 是 |
選項 | Windows Server 2003 | Windows XP |
---|---|---|
IP_ADD_IFLIST | ||
IP_ADD_MEMBERSHIP | 是 | 是 |
IP_ADD_SOURCE_MEMBERSHIP | 是 | 是 |
IP_BLOCK_SOURCE | 是 | 是 |
IP_DEL_IFLIST | ||
IP_DONTFRAGMENT | 是 | 是 |
IP_DROP_MEMBERSHIP | 是 | 是 |
IP_DROP_SOURCE_MEMBERSHIP | 是 | 是 |
IP_GET_IFLIST | ||
IP_HDRINCL | 是 | 是 |
IP_IFLIST | ||
IP_MULTICAST_IF | 是 | 是 |
IP_MULTICAST_LOOP | 是 | 是 |
IP_MULTICAST_TTL | 是 | 是 |
IP_OPTIONS | 是 | 是 |
IP_ORIGINAL_ARRIVAL_IF | ||
IP_PKTINFO | 是 | 是 |
IP_RECEIVE_BROADCAST | 是 | 是 |
IP_RECVIF | ||
IP_RECVTTL | ||
IP_TOS | ||
IP_TTL | 是 | 是 |
IP_UNBLOCK_SOURCE | 是 | 是 |
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.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 頭文件不應該直接使用。
需求
需求 | 值 |
---|---|
頁首 |
|