IPPROTO_IPV6 通訊端選項

下表說明 用至針對 IPv6 位址系列建立的通訊端 (AF_INET6) IPPROTO_IPV6通訊端選項。 如需取得和設定通訊端選項的詳細資訊,請參閱 getsockoptsetsockopt 函式參考頁面。

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

某些通訊端選項需要比這些資料表所能傳達更多的說明;這類選項包含其他資訊的連結。

選項。

選項 get set Optval 類型 描述
IP_ORIGINAL_ARRIVAL_IF DWORD (布林值) 指出 LPFN_WSARECVMSG (WSARecvMsg) 函式是否應該傳回選擇性的控制資料,其中包含針對資料包通訊端接收封包的原始抵達介面。 此選項與 IPv6 轉換技術搭配使用, (6to4、ISATAP 和 Teredo 通道,例如,) 提供位址指派和單播 IPv6 流量的主機對主機自動通道,當 IPv6 主機必須周遊 IP4 網路才能連線到其他 IPv6 網路時。 IPv6 封包是以通道方式傳送為 IPv4 封包。 此選項允許在 WSAMSG 結構中傳回封包的原始 IPv4 介面。
IPV6_ADD_IFLIST DWORD (IF_INDEX) 將介面索引新增至與 IP_IFLIST 選項相關聯的 IFLIST。
IPV6_ADD_MEMBERSHIP ipv6_mreq 將通訊端加入指定介面上提供的多播群組。 此選項只有在通訊端類型必須SOCK_DGRAM或SOCK_RAW) ,才能在資料包和原始通訊端 (有效。
IPV6_DEL_IFLIST DWORD (IF_INDEX) 從與 IP_IFLIST 選項相關聯的 IFLIST 中移除介面索引。 專案只能由應用程式移除,因此請注意,移除介面之後,專案可能會過時。
IPV6_DROP_MEMBERSHIP ipv6_mreq 將提供的多播群組從指定的介面保留。 此選項只有在通訊端類型必須SOCK_DGRAM或SOCK_RAW) ,才能在資料包和原始通訊端 (有效。
IPV6_GET_IFLIST DWORD[] (IF_INDEX[]) 取得與 IP_IFLIST 選項相關聯的目前 IFLIST。 如果未啟用 IP_IFLIST ,則傳回錯誤。
IPV6_HDRINCL DWORD (布林值) 指出應用程式在所有傳出資料上提供 IPv6 標頭。 如果在對 setsockopt的呼叫上將 optval參數設定為1,則會啟用 選項。 如果 optval 設定為 0,則會停用選項。 預設值為已停用。 只有在通訊端類型必須SOCK_DGRAM或SOCK_RAW) ,這個選項才適用于資料包和原始通訊端 (。 支援SOCK_RAW的 TCP/IP 服務提供者也應該支援IPV6_HDRINCL。
IPV6_HOPLIMIT DWORD (布林值) 指出LPFN_WSARECVMSG (WSARecvMsg ) 函式中應該傳回躍點 (TTL) 資訊。 如果在對 setsockopt的呼叫上將 optval設定為1,則會啟用 此選項。 如果設定為 0,則會停用選項。 只有在通訊端類型必須SOCK_DGRAM或SOCK_RAW) ,這個選項才適用于資料包和原始通訊端 (。
IPV6_IFLIST DWORD (布林值) 取得或設定 通訊端的IP_IFLIST 狀態。 當此選項設定為 true 時,Datagram 接收會限制為 IFLIST 中的介面。 會忽略任何其他介面上收到的資料包。 IFLIST 會啟動空白。 使用 IP_ADD_IFLISTIP_DEL_IFLIST 來編輯 IFLIST。
IPV6_JOIN_GROUP ipv6_mreq 與IPV6_ADD_MEMBERSHIP相同
IPV6_LEAVE_GROUP ipv6_mreq 與IPV6_DROP_MEMBERSHIP相同
IPV6_MTU DWORD 取得系統路徑 MTU 的估計值。 通訊端必須連接。
IPV6_MTU_DISCOVER DWORD (PMTUD_STATE) 取得或設定通訊端的路徑 MTU 探索狀態。 預設值 為 IP_PMTUDISC_NOT_SET。 針對資料流程通訊端, IP_PMTUDISC_NOT_SETIP_PMTUDISC_DO 將會執行路徑 MTU 探索。 IP_PMTUDISC_DONTIP_PMTUDISC_PROBE 將會關閉路徑 MTU 探索。 對於資料包通訊端,如果設定為 IP_PMTUDISC_DO ,則嘗試傳送大於路徑 MTU 的封包將會產生錯誤。 如果設定為 IP_PMTUDISC_DONT,則會根據介面 MTU 分散封包。 如果設定為 IP_PMTUDISC_PROBE,嘗試傳送大於介面 MTU 的封包將會導致錯誤。
IPV6_MULTICAST_HOPS DWORD 取得或設定與通訊端上的 IPv6 多播流量相關聯的 TTL 值。 將 TTL 設定為大於 255 的值不合法。 此選項僅適用于資料包和原始通訊端, (通訊端類型必須SOCK_DGRAM或SOCK_RAW) 。
IPV6_MULTICAST_IF DWORD 取得或設定傳送 IPv6 多播流量的傳出介面。 此選項不會變更接收 IPv6 多播流量的預設介面。 此選項對於多路電腦很重要。 設定此選項的輸入值是以主機位元組順序為所需傳出介面的 4 位元組介面索引。 GetAdaptersAddresses函式可用來取得介面索引資訊。 如果optval在呼叫setockopt時設定為Null,則會使用預設的 IPv6 介面。 如果 optval 為零,則會指定接收多播的預設介面來傳送多播流量。 取得此選項時, optval 會傳回目前的預設介面索引,以主機位元組順序傳送多播 IPv6 流量。
IPV6_MULTICAST_LOOP DWORD (布林值) 指出在通訊端上傳送的多播資料會在目的地多播群組上聯結時,回應通訊端接收緩衝區。 如果在對setockopt的呼叫上將optval設定為1,則會啟用此選項。 如果設定為 0,則會停用選項。 此選項僅適用于資料包和原始通訊端, (通訊端類型必須SOCK_DGRAM或SOCK_RAW) 。
IPV6_PKTINFO DWORD (布林值) 表示封包資訊應該由 LPFN_WSARECVMSG (WSARecvMsg) 函式傳回。
IPV6_PROTECTION_LEVEL INT 啟用通訊端對指定範圍的限制,例如具有相同連結本機或月臺本機前置詞的位址。 提供各種限制層級和預設設定。 如需詳細資訊 ,請參閱IPV6_PROTECTION_LEVEL
IPV6_RECVIF DWORD (布林值) 指出 IP 堆疊是否應該填入控制緩衝區,其中包含哪些介面收到具有資料包通訊端封包的詳細資料。 當此值為 true 時, LPFN_WSARECVMSG (WSARecvMsg) 函式會傳回選擇性的控制資料,其中包含接收資料包通訊端封包的介面。 此選項允許在 WSAMSG 結構中傳回封包的 IPv6 介面。 此選項僅適用于資料包和原始通訊端, (通訊端類型必須SOCK_DGRAM或SOCK_RAW) 。
IPV6_RECVTCLASS DWORD (布林值) 指出 IP 堆疊是否應該在接收的資料包上填入包含流量類別 IPv6 標頭欄位的訊息來填入控制緩衝區。 當此值為 true 時, LPFN_WSARECVMSG (WSARecvMsg) 函式會傳回選擇性的控制資料,其中包含所接收資料包的流量類別 IPv6 標頭域值。 此選項可讓接收資料包的流量類別 IPv6 標頭欄位在 WSAMSG 結構中傳回。 傳回的訊息類型將會IPV6_TCLASS。 將會傳回流量類別欄位的所有 DSCP 和 ECN 位。 只有在通訊端類型必須SOCK_DGRAM) ,此選項才對資料包通訊端有效 (。
IPV6_UNICAST_HOPS DWORD 取得或設定與單播流量之 IPv6 通訊端相關聯的目前 TTL 值。 將 TTL 設定為大於 255 的值不合法。
IPV6_UNICAST_IF DWORD (IF_INDEX) 取得或設定傳送 IPv6 流量的傳出介面。 此選項不會變更接收 IPv6 流量的預設介面。 此選項對於多路電腦很重要。 設定此選項的輸入值是以主機位元組順序為所需傳出介面的 4 位元組介面索引。 GetAdaptersAddresses函式可用來取得介面索引資訊。 如果 optval 為零,傳送 IPv6 流量的預設介面會設定為未指定。 取得此選項時, optval 會傳回目前的預設介面索引,以主機位元組順序傳送 IPv6 流量。
IPV6_USER_MTU DWORD 取得或設定指定通訊端的 IP 層 MTU (以位元組為單位的上限) 。 如果此值高於系統估計路徑 MTU (您可以藉由查詢 IPV6_MTU 通訊端選項) 來擷取連線通訊端,則選項不會有任何作用。 如果值較低,則大於此的輸出封包將會分散,或無法傳送,視 IPV6_DONTFRAG的值而定。 預設值 IP_UNSPECIFIED_USER_MTU ( MAXULONG) 。 針對型別安全,您應該使用 WSAGetIPUserMtuWSASetIPUserMtu 函式,而不是直接使用通訊端選項。
IPV6_V6ONLY DWORD (布林值) 指出針對 AF_INET6 位址家族建立的通訊端是否限制僅供 IPv6 通訊使用。 針對 AF_INET6 位址家族建立的通訊端,可同時提供 IPv6 及 IPv4 通訊使用。 某些應用程式可能希望將使用限制在針對 AF_INET6 位址家族所建立的通訊端,以及僅提供 IPv6 通訊使用。 當此值為非零 (Windows) 上的預設值時,為AF_INET6位址系列建立的通訊端只能用來傳送和接收 IPv6 封包。 如果這個值為零,則針對 AF_INET6 位址家族建立的通訊端,可用來傳送和接收往返 IPv6 或 IPv4 位址的封包。 請注意,必須使用 IPv4 對應位址,才能發揮與 IPv4 位址互動的能力。 Windows Vista (含) 以後版本支援這個通訊端選項。

IPPROTO_IPV6通訊端選項的 Windows 支援

選項 Windows 8 Windows Server 2012 Windows 7 Windows Server 2008 Windows Vista
IP_ORIGINAL_ARRIVAL_IF x x x
IPV6_ADD_IFLIST 從 Windows 10 1803 版開始
IPV6_ADD_MEMBERSHIP x x x x x
IPV6_DEL_IFLIST 從 Windows 10 1803 版開始
IPV6_DROP_MEMBERSHIP x x x x x
IPV6_GET_IFLIST 從 Windows 10 1803 版開始
IPV6_HDRINCL x x x x x
IPV6_HOPLIMIT x x x x x
IPV6_IFLIST 從 Windows 10 1803 版開始
IPV6_JOIN_GROUP x x x x x
IPV6_LEAVE_GROUP x x x x x
IPV6_MULTICAST_HOPS x x x x x
IPV6_MULTICAST_IF x x x x x
IPV6_MULTICAST_LOOP x x x x x
IPV6_PKTINFO x x x x x
IPV6_PROTECTION_LEVEL x x x x x
IPV6_RECVIF x x x x x
IPV6_UNICAST_HOPS x x x x x
IPV6_UNICAST_IF x x x x x
IPV6_V6ONLY x x x x x

選項 Windows Server 2003 Windows XP
IP_ORIGINAL_ARRIVAL_IF
IPV6_ADD_IFLIST
IPV6_ADD_MEMBERSHIP x x
IPV6_DEL_IFLIST
IPV6_DROP_MEMBERSHIP x x
IPV6_GET_IFLIST
IPV6_HDRINCL x x
IPV6_HOPLIMIT x x
IPV6_IFLIST
IPV6_JOIN_GROUP x x
IPV6_LEAVE_GROUP x x
IPV6_MULTICAST_HOPS x x
IPV6_MULTICAST_IF x x
IPV6_MULTICAST_LOOP x x
IPV6_PKTINFO x x
IPV6_PROTECTION_LEVEL x x
IPV6_RECVIF
IPV6_UNICAST_HOPS x x
IPV6_UNICAST_IF
IPV6_V6ONLY

備註

在針對 Windows Vista 和更新版本發行的 Microsoft Windows 軟體發展工具組 (SDK) 上,標頭檔的組織已變更, IPPROTO_IPV6 層級定義在 Winsock2.h 標頭檔中自動包含在 Winsock2.h 標頭檔中。 IPPROTO_IPV6通訊端選項定義于Ws2ipdef.h標頭檔中,Ws2tcpip.h標頭檔中會自動包含。 不應該直接使用 Ws2def.hWs2ipdef.h 標頭檔。

Windows Server 2008 R2 以及 Windows 7 支援 IP_ORIGINAL_ARRIVAL_IF 通訊端選項。

規格需求

需求
標頭
Ws2def.h (包含 Winsock2.h) ;
Windows Server 2003 和 Windows XP 上的 Winsock2.h