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 に設定すると、Datagram 受信は 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) 情報を返す必要があることを示します。 setockopt の呼び出しで optval1 に設定されている場合、このオプションは有効になります。 0 に設定すると、このオプションは無効になります。 このオプションは、データグラムと未加工のソケットに対してのみ有効です (ソケットの種類は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 ブロック内の 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) では、ヘッダー ファイルの編成が変更され、 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 を含む)