<socket> 要素 (ネットワーク設定)

ソケット操作で完了ポートを使用するかどうかを指定します。

configuration
  <system.net>
    <settings>
      <socket>

構文

<socket  
  alwaysUseCompletionPortsForConnect="true|false"  
  alwaysUseCompletionPortsForAccept="true|false"  
  ipProtectionLevel="EdgeRestricted|Restricted|Unrestricted|Unspecified"  
/>  

属性および要素

以降のセクションでは、属性、子要素、および親要素について説明します。

属性

属性 説明
alwaysUseCompletionPortsForAccept Accept メソッド呼び出しに対して、ソケットで常に完了ポートを使用する必要があるかどうかを示します。 既定値は false です。
alwaysUseCompletionPortsForConnect Connect メソッド呼び出しに対して、ソケットで常に完了ポートを使用する必要があるかどうかを示します。 既定値は false です。
ipProtectionLevel ソケットに使用する既定の System.Net.Sockets.IPProtectionLevel を指定します。 既定値は、Windows のバージョンによって異なります。

子要素

なし。

親要素

要素 説明
設定 System.Net 名前空間の基本的なネットワーク オプションを構成します。

解説

alwaysUseCompletionPortsForAccept 属性と alwaysUseCompletionPortsForConnect 属性を使用すると、System.Net.Sockets 名前空間のクラスによる完了ポートの使用に関する既定の動作を指定できます。 ハイ パフォーマンスなサーバー アプリケーションでは、完了ポートをお勧めします。

alwaysUseCompletionPortsForAccept 属性と alwaysUseCompletionPortsForConnect 属性の既定値は false です。

AlwaysUseCompletionPortsForAccept を使用すると、該当する構成ファイルから alwaysUseCompletionPortsForAccept 属性の現在の値を取得できます。 AlwaysUseCompletionPortsForConnect を使用すると、該当する構成ファイルから alwaysUseCompletionPortsForConnect 属性の現在の値を取得できます。

ipProtectionLevel 属性では、ソケットに使用する既定の System.Net.Sockets.IPProtectionLevel を指定します。 IPProtectionLevel プロパティを使用すると、IPv6 ソケットを特定のスコープ (同じリンク ローカルまたはサイト ローカル プレフィックスを持つアドレスなど) に制限するように構成できます。 このオプションを使用したアプリケーションでは、IPv6 ソケットに対するアクセス制限を設定できます。 この制限により、プライベート LAN で実行されるアプリケーションを外部からの攻撃に対して簡単かつ堅牢に強化できます。 このオプションで待機中のソケットのスコープを変更して、適切な場合はパブリック ユーザーおよびプライベート ユーザーからの無制限のアクセスを許可したり、必要に応じて同じサイトへのアクセスのみに制限したりできます。

この ipProtectionLevel 属性設定は、次のような初期の受信トラフィックのみに影響します。

  • ソケットで着信接続をリッスンしている TCP サーバー。

  • ソケットでパケットを受信している UDP アプリケーション。

この構成設定は、既に確立されている TCP 接続には影響しません (両方向でトラフィックは制限されません)。また、UDP パケットを送信するアプリケーションには影響しません。

ipProtectionLevel 属性設定に使用できる値は、次のように、System.Net.Sockets.IPProtectionLevel 列挙型で指定されている定義済みの保護レベルに対応しています。

属性値 説明
EdgeRestricted IP 保護レベルはエッジ制限付きです。 この値は、インターネット経由で動作するように設計されているアプリケーションによって使用されます。 この設定を使用する場合、Windows Teredo 実装を使用したネットワーク アドレス変換 (NAT: Network Address Translation) トラバーサルは使用できません。 これらのアプリケーションは、IPv4 のファイアウォールをバイパスすることがあるため、開いているポートを対象としたインターネットからの攻撃に対して堅牢である必要があります。 Windows Server 2003 と Windows XP では、ソケットの IP 保護レベルの既定値はエッジ制限付きです。
制限付き IP 保護レベルは制限付きです。 この値は、インターネットのシナリオを実装しないイントラネット アプリケーションによって使用されます。 これらのアプリケーションは、一般的に、インターネット型の攻撃に対してテストが行われていなかったり堅牢ではなかったりします。 この設定を使用する場合、受信トラフィックはリンクローカルのみに制限されます。
無制限 IP 保護レベルは無制限です。 この値は、Windows に組み込まれている IPv6 NAT Traversal 機能 (たとえば、Teredo) を使用するアプリケーションを含む、インターネット経由で動作するように設計されているアプリケーションによって使用されます。 これらのアプリケーションは、IPv4 のファイアウォールをバイパスすることがあるため、開いているポートを対象としたインターネットからの攻撃に対して堅牢である必要があります。 Windows Server 2008 R2 と Windows Vista では、ソケットの IP 保護レベルの既定値は無制限です。
指定されていません。 IP 保護レベルは未指定です。 Windows 7 と Windows Server 2008 R2 では、ソケットの IP 保護レベルの既定値は未指定です。

ipProtectionLevel 属性の既定値は Unspecified です。

IPProtectionLevel プロパティを使用すると、該当する構成ファイルから ipProtectionLevel 属性の現在の値を取得できます。

構成ファイル

この要素は、アプリケーション構成ファイルまたはマシン構成ファイル (Machine.config) で使用できます。

次の例では、完了ポートを使用し、既定の System.Net.Sockets.IPProtectionLevel を無制限にするように指定する方法を示します。

<configuration>  
  <system.net>  
    <settings>  
      <socket  
        alwaysUseCompletionPortsForAccept="true"  
        alwaysUseCompletionPortsForConnect="true"  
        ipProtectionLevel="Unrestricted"  
       />  
    </settings>  
  </system.net>  
</configuration>  

関連項目