<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>