IPPROTO_IP ソケット オプション

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

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

一部のソケット オプションについては、この表の内容以上の説明が必要です。その場合は、追加ページへのリンクが含まれています。

Options

オプション 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 サービス プロバイダーが ID フィールドを設定できます。 IP_HDRINCL オプションは、SOCK_RAW タイプのプロトコルにのみ適用されます。 SOCK_RAW をサポートする TCP/IP サービス プロバイダーは、IP_HDRINCL もサポートする必要があります。
IP_IFLIST はい はい DWORD (ブール値) ソケットの IP_IFLIST 状態を取得または設定します。 このオプションが true に設定されている場合、データグラム受信は IFLIST 内のインターフェイスに制限されます。 他のインターフェイスで受信したデータグラムは無視されます。 IFLIST の初期値は空です。 IFLIST を編集するには、IP_ADD_IFLIST および IP_DEL_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 ブロック (最初のオクテットは 0) 内のすべての IP アドレスが、インターフェイス インデックスとして扱われます。 インターフェイス インデックスは 24 ビットの数であり、0.0.0.0/8 IPv4 アドレス ブロックは使用されません (この範囲は予約されています)。 インターフェイス インデックスは、IPv4 のマルチキャスト トラフィックの既定のインターフェイスを指定するために使用できます。 optval がゼロの場合、マルチキャスト トラフィックの送信にはマルチキャストを受信するための既定のインターフェイスが指定されます。 このオプションを取得すると、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 をゼロに設定すると、それまでに指定されているすべてのオプションが削除されます。 IP_OPTIONS のサポートは必要ありません。IP_OPTIONS がサポートされているかどうかを確認するには、getsockopt を使用して現在のオプションを取得します。 getsockopt が失敗した場合、IP_OPTIONS はサポートされていません。
IP_ORIGINAL_ARRIVAL_IF はい はい DWORD (ブール値) LPFN_WSARECVMSG (WSARecvMsg) 関数から、データグラム ソケットのパケットを受信した到着インターフェイスを含むオプションの制御データを返すかどうかを示します。 このオプションを使用すると、パケットを受信した IPv4 インターフェイスを WSAMSG 構造体で返すことができます。 このオプションは、データグラム ソケットと raw ソケットでのみ有効です (ソケットの種類が SOCK_DGRAM または SOCK_RAW である必要があります)。
IP_PKTINFO はい はい DWORD WSARecvMsg 関数からパケット情報を返す必要があることを示します。
IP_RECEIVE_BROADCAST はい はい DWORD (ブール値) ブロードキャスト受信を許可またはブロックします。
IP_RECVIF はい はい DWORD (ブール値) どのインターフェイスがデータグラム ソケットを使用してパケットを受信したかに関する詳細を、IP スタックが制御バッファーに設定する必要があるかどうかを示します。 この値が true の場合、LPFN_WSARECVMSG (WSARecvMsg) 関数は、データグラム ソケットのパケットを受信したインターフェイスを含むオプションの制御データを返します。 このオプションを使用すると、パケットを受信した IPv4 インターフェイスを WSAMSG 構造体で返すことができます。 このオプションは、データグラム ソケットと raw ソケットでのみ有効です (ソケットの種類が 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_RECVECN はい はい DWORD (ブール値) IP スタックで、受信したデータグラムの "サービスの種類" (TOS) IPv4 ヘッダー フィールドの ECN ビットを含むメッセージを制御バッファーに設定するかどうかを示します。 この値が true の場合、LPFN_WSARECVMSG (WSARecvMsg) 関数は、受信したデータグラムの TOS IPv4 ヘッダー フィールド値の ECN ビットを含む、オプションの制御データを返します。 このオプションにより、受信したデータグラムの TOS IPv4 ヘッダー フィールドの ECN ビットを WSAMSG 構造体で返すことができます。 返されるメッセージの種類は IP_ECN になります。 TOS フィールドの ECN ビットが 2 ビットとも返されます。 このオプションは、データグラム ソケットと raw ソケットでのみ有効です (ソケットの種類が SOCK_DGRAM または SOCK_RAW である必要があります)。 型安全性を確保するには、ソケット オプションを直接使用するのではなく、WSAGetRecvIPEcn 関数および WSASetRecvIPEcn 関数を使用する必要があります。
IP_RECVTTL はい はい DWORD (ブール値) LPFN_WSARECVMSG (WSARecvMsg) 関数でホップ (TTL) 情報を返す必要があることを示します。 setsockopt の呼び出し時に optval1 に設定されている場合、このオプションは有効になります。 0 に設定されている場合、このオプションは無効になります。 このオプションは、データグラム ソケットと raw ソケットに対してのみ有効です (ソケットの種類が SOCK_DGRAM または SOCK_RAW である必要があります)。
IP_TOS はい はい DWORD (ブール値) 使用しないでください。 サービスの種類 (TOS) の設定は、サービス品質 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 ブロック (最初のオクテットは 0) 内のすべての IP アドレスが、インターフェイス インデックスとして扱われます。 インターフェイス インデックスは 24 ビットの数であり、0.0.0.0/8 IPv4 アドレス ブロックは使用されません (この範囲は予約されています)。 インターフェイス インデックスは、IPv4 の送信トラフィックの既定のインターフェイスを指定するために使用できます。 インターフェイス インデックスの情報は、GetAdaptersAddresses 関数を使用して取得できます。 optval の値がゼロの場合、トラフィックを送信するための既定のインターフェイスは未指定に設定されます。 このオプションを取得すると、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 はい はい はい はい はい はい
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 レベルは、Winsock2.h ヘッダー ファイルに自動的に含まれる Ws2def.h ヘッダー ファイルで定義されています。 一部の IPPROTO_IP ソケット オプションは、Ws2tcpip.h ヘッダー ファイルに自動的に含まれる Ws2ipdef.h ヘッダー ファイルで定義されています。 それ以外の IPPROTO_IP ソケット オプションは、Winsock2.h ヘッダー ファイルに自動的に含まれる Wsipv6ok.h ヘッダー ファイルで定義されています。 ヘッダー ファイル Ws2def.hWs2ipdef.h、および Wsipv6ok.h を直接使用しないでください。

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

要件

要件 Value
ヘッダー
Ws2def.h (Winsock2.h をインクルード)、
Ws2ipdef.h (Ws2tcpip.h をインクルード)、
Wsipv6ok.h (Winsock2.h をインクルード)