IPPROTO_IP ソケット オプション

次の 表IPPROTO_IP IPv4 アドレス ファミリ (AF_INET) 用に作成されたソケットに適用されるソケット オプションについて説明します。 ソケット オプションの取得と設定の詳細については、 getsockopt および setsockopt 関数のリファレンス ページを参照してください。

プロトコルを列挙し、インストールされている各プロトコルでサポートされているプロパティを検出するには、 WSAEnumProtocolsWSCEnumProtocols、または WSCEnumProtocols32 関数を使用します。

一部のソケット オプションでは、これらのテーブルが伝えることができるよりも多くの説明が必要です。このようなオプションには、追加のページへのリンクが含まれています。

オプション

オプション 取得 オン 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 ソケットにのみ適用されます。 アプリケーションによって指定された値が 0 の場合、TCP/IP サービス プロバイダーは ID フィールドを設定できます。 IP_HDRINCL オプションは、プロトコルのSOCK_RAWの種類にのみ適用されます。 SOCK_RAWをサポートする TCP/IP サービス プロバイダーも、IP_HDRINCLをサポートする必要があります。
IP_IFLIST はい はい DWORD (ブール値) ソケットの IP_IFLIST 状態を取得または設定します。 このオプションを true に設定すると、データグラム受信は IFLIST 内のインターフェイスに制限されます。 他のインターフェイスで受信したデータグラムは無視されます。 IFLIST が空で起動します。 IP_ADD_IFLISTIP_DEL_IFLISTを使用して IFLIST を編集します。
IP_MTU はい DWORD パス MTU のシステムの見積もりを取得します。 ソケットは接続されている必要があります。
IP_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 はすべての送信パケットに 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.x.x.x ブロック内の IP アドレス (最初のオクテット 0) は、インターフェイス インデックスとして扱われます。 インターフェイス インデックスは 24 ビット番号であり、0.0.0.0/8 IPv4 アドレス ブロックは使用されません (この範囲は予約されています)。 インターフェイス インデックスを使用して、IPv4 のマルチキャスト トラフィックの既定のインターフェイスを指定できます。 optval が 0 の場合、マルチキャスト トラフィックを送信するために、マルチキャストを受信するための既定のインターフェイスが指定されます。 このオプションを取得すると、 optval は、マルチキャスト IPv4 トラフィックをホストのバイト順で送信するための現在の既定のインターフェイス インデックスを返します。
IP_MULTICAST_LOOP はい はい DWORD (ブール値) 1 つ以上のマルチキャスト グループに参加しているソケットの場合、選択したマルチキャスト インターフェイスを介してそれらのマルチキャスト グループに送信される 送信 パケットのコピーを受信するかどうかを制御します。 既定では、 IP_MULTICAST_LOOP は有効になっているため (値 1/TRUE)、ソケット 現在のマシンから送信された一致するマルチキャスト パケットを受信します。 (0/FALSE に設定して) このオプションを無効にすると、ソケットがループバック インターフェイスで開いている場合でも、このソケットはローカル コンピューターから送信されたマルチキャストを受信しません。

これは、POSIX バージョンの IP_MULTICAST_LOOP と互換性がありません。このオプションは、受信側のソケットで設定する必要があります。一方、POSIX オプションは送信側ソケットで設定する必要があります。
IP_MULTICAST_TTL はい はい DWORD ソケット上の IP マルチキャスト トラフィックに関連付けられている TTL 値を設定または取得します。
IP_OPTIONS はい はい char [] 送信パケットに挿入する IP オプションを指定します。 新しいオプションを設定すると、以前に指定したすべてのオプションが上書きされます。 optval を 0 に設定すると、以前に指定したすべてのオプションが削除されます。 IP_OPTIONSサポートは必要ありません。IP_OPTIONSがサポートされているかどうかをチェックするには、getsockopt を使用して現在のオプションを取得します。 getsockopt が失敗した場合、IP_OPTIONSはサポートされません。
IP_ORIGINAL_ARRIVAL_IF はい はい DWORD (ブール値) LPFN_WSARECVMSG (WSARecvMsg) 関数が、データグラム ソケットのパケットを受信した到着インターフェイスを含むオプションの制御データを返す必要があるかどうかを示します。 このオプションを使用すると、パケットが受信された IPv4 インターフェイスを WSAMSG 構造体で返すことができます。 このオプションは、データグラムソケットと生ソケットでのみ有効です(ソケットの種類はSOCK_DGRAMまたはSOCK_RAWである必要があります)。
IP_PKTINFO はい はい DWORD WSARecvMsg 関数によってパケット情報を返す必要があることを示します。
IP_RECEIVE_BROADCAST はい はい DWORD (ブール値) ブロードキャスト受信を許可またはブロックします。
IP_RECVIF はい はい DWORD (ブール値) データグラム ソケットを使用してパケットを受信したインターフェイスの詳細を、IP スタックがコントロール バッファーに設定する必要があるかどうかを示します。 この値が true の場合、 LPFN_WSARECVMSG (WSARecvMsg) 関数は、データグラム ソケットに対してパケットが受信されたインターフェイスを含むオプションの制御データを返します。 このオプションを使用すると、パケットが受信された IPv4 インターフェイスを WSAMSG 構造体で返すことができます。 このオプションは、データグラムソケットと生ソケットでのみ有効です(ソケットの種類はSOCK_DGRAMまたはSOCK_RAWである必要があります)。
IP_RECVTOS はい はい DWORD (ブール値) IP スタックが、受信したデータグラムのサービスの種類 (TOS) IPv4 ヘッダー フィールドを含むメッセージをコントロール バッファーに設定する必要があるかどうかを示します。 この値が true の場合、 LPFN_WSARECVMSG (WSARecvMsg) 関数は、受信したデータグラムの TOS IPv4 ヘッダー フィールド値を含むオプションの制御データを返します。 このオプションを使用すると、受信したデータグラムの TOS IPv4 ヘッダー・フィールドを WSAMSG 構造体で戻すことができます。 返されるメッセージの種類はIP_TOS。 TOS フィールドのすべての DSCP ビットと ECN ビットが返されます。 このオプションは、データグラム ソケットでのみ有効です (ソケットの種類はSOCK_DGRAMする必要があります)。
IP_RECVTTL はい はい DWORD (ブール値) LPFN_WSARECVMSG (WSARecvMsg) 関数でホップ (TTL) 情報を返す必要があることを示します。 setsockopt の呼び出しで optval1 に設定されている場合、オプションは有効になります。 0 に設定すると、オプションは無効になります。 このオプションは、データグラムソケットと生ソケットでのみ有効です (ソケットの種類はSOCK_DGRAMまたはSOCK_RAWである必要があります)。
IP_TOS はい はい DWORD (ブール値) 使用しないでください。 サービスの種類 (TOS) の設定は、Quality of Service API を使用してのみ設定する必要があります。 詳細については、プラットフォーム SDK の「サービス品質」セクションの 「差別化された サービス」を参照してください。
IP_TTL はい はい DWORD (ブール値) 送信データグラムの IP ヘッダーの TTL フィールドで、TCP/IP サービス プロバイダーによって設定された既定値を変更します。 IP_TTLサポートは必要ありません。IP_TTLがサポートされているかどうかをチェックするには、getsockopt を使用して現在のオプションを取得します。 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.x.x.x ブロック内の IP アドレス (0 の最初のオクテット) は、インターフェイス インデックスとして扱われます。 インターフェイス インデックスは 24 ビット番号であり、0.0.0.0/8 IPv4 アドレス ブロックは使用されません (この範囲は予約されています)。 インターフェイス インデックスを使用して、IPv4 のトラフィックを送信するための既定のインターフェイスを指定できます。 GetAdaptersAddresses 関数を使用して、インターフェイス インデックス情報を取得できます。 optval が 0 の場合、トラフィックを送信するための既定のインターフェイスは未指定に設定されます。 このオプションを取得すると、 optval は IPv4 トラフィックをホストのバイト順で送信するための現在の既定のインターフェイス インデックスを返します。
IP_USER_MTU はい はい DWORD 指定されたソケットの IP 層 MTU の上限 (バイト単位) を取得または設定します。 値がシステムのパス MTU の見積もり ( IP_MTU ソケット オプションに対してクエリを実行して接続されたソケットで取得できる) よりも大きい場合、オプションは無効になります。 値が小さい場合、これより大きい送信パケットは断片化されるか、 IP_DONTFRAGMENTの値に応じて送信に失敗します。 既定値は IP_UNSPECIFIED_USER_MTU (MAXULONG) です。 タイプ セーフの場合は、ソケット オプションを直接使用する代わりに、 WSAGetIPUserMtu 関数と WSASetIPUserMtu 関数を使用する必要があります。
IP_WFP_REDIRECT_CONTEXT はい はい WSACMSGHDR と制御データ ユーザー モード Windows フィルタリング プラットフォーム (WFP) リダイレクト サービスによって使用される UDP ソケットのリダイレクト コンテキストを示すデータグラム ソケット補助データ型 (cmsg_type)。
IP_WFP_REDIRECT_RECORDS はい はい WSACMSGHDR と制御データ ユーザー モード Windows フィルタリング プラットフォーム (WFP) リダイレクト サービスによって使用される UDP ソケットのリダイレクト レコードを示すデータグラム ソケット補助データ型 (cmsg_type)。

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) では、ヘッダー ファイルのorganizationが変更され、IPPROTO_IP レベルは、Winsock2.h ヘッダー ファイルに自動的に含まれる Ws2def.h ヘッダー ファイルで定義されています。 IPPROTO_IP ソケット オプションの一部は、Ws2tcpip.h ヘッダー ファイルによって自動的に含まれる Ws2ipdef.h ヘッダー ファイルで定義されています。 残りのIPPROTO_IP ソケット オプションは、Winsock2.h ヘッダー ファイルによって自動的に含まれる Wsipv6ok.h ヘッダー ファイルで定義されます。 Ws2def.hWs2ipdef.hWsipv6ok.h ヘッダー ファイルを直接使用しないでください。

Windows Server 2003 および Windows XP 用にリリースされたプラットフォーム SDK では、 IPPROTO_IP レベルは Winsock2.h ヘッダー ファイルで定義されています。 IPPROTO_IP ソケット オプションの一部は、Ws2tcpip.h ヘッダー ファイルで定義されています。 残りのIPPROTO_IP ソケット オプションは、Winsock2.h ヘッダー ファイルによって自動的に含まれる Wsipv6ok.h ヘッダー ファイルで定義されます。 Wsipv6ok.h ヘッダー ファイルを直接使用しないでください。

要件

要件
ヘッダー
Ws2def.h (Winsock2.h を含む);
Ws2ipdef.h (Ws2tcpip.h を含む);
Wsipv6ok.h (Winsock2.h を含む)