<socket> 元素(网络设置)

指定套接字操作是否使用完成端口。

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

语法

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

特性和元素

下列各节描述了特性、子元素和父元素。

特性

Attribute 说明
alwaysUseCompletionPortsForAccept 指示套接字是否始终用完成端口进行 Accept 方法调用。 默认值为 false
alwaysUseCompletionPortsForConnect 指示套接字是否始终用完成端口进行 Connect 方法调用。 默认值为 false
ipProtectionLevel 指定要用于套接字的默认的 System.Net.Sockets.IPProtectionLevel。 默认值取决于 Windows 的版本。

子元素

无。

父元素

元素 说明
设置 配置 System.Net 命名空间的基本网络选项。

备注

alwaysUseCompletionPortsForAcceptalwaysUseCompletionPortsForConnect 特性用于指定 System.Net.Sockets.namespace 中的类在使用完全端口时的默认行为。 对于高性能服务器应用程序,建议使用完成端口。

alwaysUseCompletionPortsForAcceptalwaysUseCompletionPortsForConnect 特性的默认值为 false。

AlwaysUseCompletionPortsForAccept 可用于从适用的配置文件中获取 alwaysUseCompletionPortsForAccept 特性的当前值。 AlwaysUseCompletionPortsForConnect 可用于从适用的配置文件中获取 alwaysUseCompletionPortsForConnect 特性的当前值。

ipProtectionLevel 特性指定要用于套接字的默认 System.Net.Sockets.IPProtectionLevel。 利用 IPProtectionLevel 属性,即可配置 IPv6 套接字的范围,将其限制为一个指定范围,例如限制为具有相同链接本地或站点本地前缀的地址。 通过此选项,应用程序可对 IPv6 套接字设置访问限制。 通过应用此类限制,可让在专用局域网上运行的应用程序能够通过简单的方式很好地增强自身的安全性,以便防范外部攻击。 此选项可以扩大或缩小侦听套接字的范围,从而使公共用户和个人用户可在适当情况下对站点进行无限制的访问,或者可以根据需要对同一站点进行有限制的访问。

这个 ipProtectionLevel 特性设置仅影响初始传入流量:

  • 侦听套接字传入连接的 TCP 服务器。

  • 接收套接字的数据包的 UDP 应用程序。

此配置设置不会影响已建立的 TCP 连接(流量在两个方向都不受限制),并且不会影响发送 UDP 数据包的应用程序。

ipProtectionLevel 特性设置可能的值与 System.Net.Sockets.IPProtectionLevel 枚举中指定的已定义保护级别相对应,如下所示:

属性值 说明
EdgeRestricted IP 保护级别是“边缘受限的”。 此值应由设计为在 Internet 上运行的应用程序使用。 此设置不允许使用 Windows Teredo 实现的网络地址转换 (NAT) 遍历。 这些应用程序可能会绕过 IPv4 防火墙,因此,必须加强应用程序的安全性以防范针对开放端口的 Internet 攻击。 在 Windows Server 2003 和 Windows XP 中,针对套接字的 IP 保护级别的默认值是“边缘受限的”。
受限 IP 保护级别是“受限的”。 此值应由未实现 Internet 方案的 Intranet 应用程序使用。 一般情况下,不会针对 Internet 样式的攻击来对这些应用程序进行测试或加强安全性。 此设置将限制仅接收链接本地的通信。
非受限 IP 保护级别是“不受限的”。 此值应由设计为在 Internet 上运行的应用程序使用,包括利用 Windows 中内置的 IPv6 NAT 遍历功能(例如,Teredo)的应用程序。 这些应用程序可能会绕过 IPv4 防火墙,因此,必须加强应用程序的安全性以防范针对开放端口的 Internet 攻击。 在 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>  

请参阅