<socket > Elemento (configuración de red)

Especifica si las operaciones de socket usan puertos de finalización.

<configuración>
  <system.net>
    <configuración>
      <socket>

Sintaxis

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

Atributos y elementos

En las siguientes secciones se describen los atributos, los elementos secundarios y los elementos primarios.

Atributos

Atributo Descripción
alwaysUseCompletionPortsForAccept Indica si el socket siempre debe usar los puertos de finalización para las llamadas al método Accept. El valor predeterminado es false.
alwaysUseCompletionPortsForConnect Indica si el socket siempre debe usar los puertos de finalización para las llamadas al método Connect. El valor predeterminado es false.
ipProtectionLevel Especifica el valor predeterminado System.Net.Sockets.IPProtectionLevel que se va a usar para un socket. El valor predeterminado depende del la versión de Windows.

Elementos secundarios

Ninguno.

Elementos primarios

Element Descripción
settings Configura opciones de red básicas para el espacio de nombres System.Net.

Comentarios

Los atributos alwaysUseCompletionPortsForAccept y alwaysUseCompletionPortsForConnect se usan para especificar el comportamiento predeterminado con respecto al uso de puertos de finalización por las clases del System.Net.Sockets.namespace. Se recomiendan puertos de finalización para aplicaciones de servidor de alto rendimiento.

El valor predeterminado para los atributos alwaysUseCompletionPortsForAccept y alwaysUseCompletionPortsForConnect es false.

La propiedad AlwaysUseCompletionPortsForAccept se puede usar para obtener el valor actual del atributo alwaysUseCompletionPortsForAccept de los archivos de configuración aplicables. AlwaysUseCompletionPortsForConnect se puede usar para obtener el valor actual del atributo alwaysUseCompletionPortsForConnect de los archivos de configuración aplicables.

El atributo ipProtectionLevel especifica el valor predeterminado System.Net.Sockets.IPProtectionLevel que se va a usar para un socket. La propiedad IPProtectionLevel permite configurar una restricción para un socket IPv6 a un ámbito especificado, como las direcciones con el mismo prefijo local de enlace o local de sitio. Esta opción permite a las aplicaciones colocar restricciones de acceso en sockets IPv6. Estas restricciones permiten que una aplicación que se ejecuta en una LAN privada se fortalezca de forma sencilla frente a ataques externos. Esta opción amplía o reduce el ámbito de un socket de escucha, lo que permite el acceso no restringido de usuarios públicos y privados cuando sea adecuado o restringe el acceso únicamente al mismo sitio, según necesidad.

Esta configuración de atributo ipProtectionLevel afecta solo al tráfico entrante inicial:

  • Un servidor TCP que escucha las conexiones entrantes en un socket.

  • Una aplicación UDP que recibe un paquete en un socket.

Esta configuración de configuración no afecta a las conexiones TCP ya establecidas (el tráfico no está restringido en ambas direcciones) y no afecta a una aplicación que envía paquetes UDP.

Los valores posibles para la configuración de ipProtectionLevel atributo corresponden a los niveles de protección definidos especificados en la enumeración de la System.Net.Sockets.IPProtectionLevel siguiente manera:

Valor de atributo Descripción
EdgeRestricted El nivel de protección de IP tiene una restricción perimetral. Este valor lo usan las aplicaciones diseñadas para funcionar a través de Internet. Este valor no permite NAT (Traducción de direcciones de red) transversal mediante la implementación de Teredo en Windows. Estas aplicaciones pueden eludir los firewalls de IPv4, lo que hace necesario protegerlas frente a los ataques por Internet dirigidos al puerto abierto. En Windows Server 2003 y Windows XP, el valor predeterminado para el nivel de protección de IP en un socket es la restricción perimetral.
Restringidos El nivel de protección de IP está restringido. Este valor lo usan las aplicaciones de intranet que no implementan escenarios de Internet. Estas aplicaciones no se suelen probar ni proteger frente a los ataques por Internet. Este valor limitará el tráfico recibido a las direcciones locales de vínculo.
Sin restricciones El nivel de protección de IP no está restringido. Este valor lo usan las aplicaciones diseñadas para funcionar a través de Internet, incluidas las aplicaciones que aprovechan las funciones de NAT transversal de IPv6 integradas en Windows (por ejemplo, Teredo). Estas aplicaciones pueden eludir los firewalls de IPv4, lo que hace necesario protegerlas frente a los ataques por Internet dirigidos al puerto abierto. En Windows Server 2008 R2 y Windows Vista, el valor predeterminado para el nivel de protección de IP en un socket es no restringido.
Sin especificar El nivel de protección de IP no está especificado. En Windows 7 y Windows Server 2008 R2, este es el valor predeterminado para el nivel de protección de IP en un socket.

El valor predeterminado del atributo ipProtectionLevel es Unspecified.

La propiedad IPProtectionLevel se puede usar para obtener el valor actual del atributo ipProtectionLevel de los archivos de configuración aplicables.

Archivos de configuración

Este elemento se puede usar en el archivo de configuración de la aplicación o en el archivo de configuración del equipo (Machine.config).

Ejemplo

En el ejemplo siguiente se muestra cómo especificar que se deben usar los puertos de finalización y que el valor predeterminado System.Net.Sockets.IPProtectionLevel debe estar sin restricciones.

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

Consulte también