<socket> 元素(网络设置)

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

<配置>
   <system.net>
     <设置>
       <插座>

Syntax

<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 命名空间的基本网络选项。

注解

属性alwaysUseCompletionPortsForAcceptalwaysUseCompletionPortsForConnect用于指定有关 .namespace 中的System.Net.Sockets类使用完成端口的默认行为。 建议将完成端口用于高性能服务器应用程序。

属性的alwaysUseCompletionPortsForAcceptalwaysUseCompletionPortsForConnect默认值为 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 保护级别受边缘限制。 此值将由旨在通过 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)。

Example

以下示例演示如何指定应使用完成端口,以及默认值 System.Net.Sockets.IPProtectionLevel 应不受限制。

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

另请参阅