PRB: Mensaje de error de "WSAEADDRESSINUSE" cuando intenta conectarse a través de un puerto anónimo después de aumentar el límite de conexión de IMAP

Seleccione idioma Seleccione idioma
Id. de artículo: 319502 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Síntomas

Cuando aumente el límite de conexión de IMAP y después intente conectarse al servidor IMAP desde un servicio de correo de Microsoft TV está configurado con un valor muy bajo de MailboxCacheTTL, recibirá mensaje de error "WSAEADDRESSINUSE" (código de error: 10048).

Causa

Este comportamiento se produce debido a una combinación de los siguientes:
  • De forma predeterminada, Windows 2000 ha limitados espacio para puertos anónimos. Este espacio es limitado más por la baja MailboxCacheTTL configurado para el servicio de correo de Microsoft TV. (Los anónimos son puertos temporales que están asignados a la pila IP del equipo; anónimos puertos se asignan desde un intervalo de puertos designado. Sólo puertos 1024-5000 se utilizan en Windows 2000.)
  • La opción SO_REUSEADDR en los sockets no está activada, por lo que los sockets no se puede volver a utilizar inmediatamente después de que se va a cerrar. Los sockets deben permanecer reservados en un estado TIME_WAIT durante cuatro minutos. Si establece la opción SO_REUSEADDR, Windows permite múltiples enlaces al socket de escucha.
El intervalo anónimo (puerto efímero) limita el número máximo de conexiones desde un equipo a un servicio específico en un equipo remoto. El protocolo TCP/IP utiliza 4-tuple la conexión (IP del servidor, puerto del servidor, cliente IP y puerto del cliente) para distinguir entre conexiones; si el intervalo de puerto anónimo sólo es 4000 puertos de amplia (aproximadamente) sólo puede haber 4000 conexiones únicas desde un equipo cliente a un servicio remoto a la vez.

Cuando finaliza la conexión, el puerto efímero está disponible para reutilización, aunque la mayoría de las pilas IP no reutilización ese número de puerto hasta que ha sido utiliza todo grupo de puertos efímeros. Por lo tanto, si se vuelve a conectar el programa cliente, el cliente se asigna a un número de puerto efímero diferente para el lado del cliente de la nueva conexión. En el caso de que el servicio de correo Microsoft TV, un valor muy bajo de MailboxCacheTTL aggravates la situación porque las conexiones de IMAP cerrar y volver a abrir con frecuencia (en casi cada solicitud).

Un intervalo de puertos de 4000 puede parecer grande, pero es pequeño para las demandas informáticas actuales cuando se tienen en cuenta que debe caducar una conexión TCP a través del estado TIME_WAIT antes de que realmente haya terminado. Por ejemplo, incluso si ambos lados de una conexión cerrar correctamente sus extremos de la conexión debido a de control de errores de TCP, cada lado debe esperar hasta que el estado TIME_WAIT ha caducado antes de que se pueden desechar realmente los recursos de la conexión.

El estado TIME_WAIT es dos veces la duración máxima del segmento (MSL). (Por este motivo, el estado TIME_WAIT es también conocido como el estado 2MSL.) Normalmente, en función de la pila IP se configura el estado TIME_WAIT para ser totales de 240 segundos. Por lo tanto, puede tener sólo 4000 conexiones por segundo de 240 ventana y, en la práctica, se pueden utilizar estas 4000 conexiones.

Solución

Para impedir este comportamiento, siga uno de estos procedimientos:
  • Aumente el intervalo de puerto se utiliza para puertos anónimos a aproximadamente 20.000 puertos (por ejemplo) al modificar la clave de registro MaxUserPort. Windows usa el intervalo BSD convencional de 1024 a 5000 para su intervalo de puerto (efímero) anónimo. Puede establecer sólo el límite superior del intervalo de puertos efímeros. Para modificar la clave de registro MaxUserPort, siga estos pasos:

    1. Inicie el Editor del Registro (Regedt32.exe).
    2. Busque la clave de MaxUserPort del registro:

      HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
    3. En el menú Edición, haga clic en Agregar valor y, a continuación, agregue el valor del registro siguiente:

      Nombre del valor : MaxUserPort
      Tipo de datos: REG_DWORD
      Valor: 65534 (por ejemplo)
      Intervalo válido: 5000-65534 (decimal)
      Valor predeterminado: 0x1388 (decimal 5000)
    4. Salga del Editor del Registro.
    Descripción: este parámetro controla el número de puerto máximo que se utiliza cuando una aplicación solicita cualquier puerto de usuario disponible desde el sistema. Normalmente, efímero (es decir, corta duración) puertos se asignan entre los valores de 1024 y 5000, ambos inclusive.

    - o -
  • Cambiar el tiempo de espera de las conexiones de 240 segundos (el valor predeterminado) para cualquier longitud de 30 segundos a 300 segundos. Utilice el parámetro del Registro TcpTimedWaitDelay para cambiar este valor. Para ello, inicie el Editor del registro (Regedt32.exe), busque la siguiente clave del registro y, a continuación, modifique el valor:

    HKEY_LOCAL_MACHINE\System\CurrectControlSet\services\Tcpip\Parameters

    TcpTimedWaitDelay

    Clave: Tcpip\Parameters
    Tipo de valor: REG_DWORD: tiempo en segundos
    Intervalo válido: 30-300 (decimal)
    Valor predeterminado: 0xF0 (240 en decimal)

    Descripción
    : este parámetro determina el período de tiempo que una conexión permanece en el estado TIME_WAIT cuando se está cerrando la conexión. Mientras una conexión en el estado TIME_WAIT, no se puede reutilizar el par de Sockets. Para obtener más información, consulte el documento RFC 793.
Nota: este problema se realiza lo que es peor si el valor de MailboxCacheTTL es muy bajo. Si el problema persiste después de realizar los cambios del registro se ha descrito anteriormente, aumente el buzón TTL cambiando la configuración de MailboxCacheTTL en el archivo SiteConfig.cfg (el archivo de configuración de instalación del servidor de Microsoft).

Más información

Para obtener información adicional acerca de cómo aumentar el intervalo de puertos anónimo predeterminado, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
196271No se puede conectarse desde puertos TCP por encima del 5000
149532Windows NT Clients ejecución fuera de puertos

Propiedades

Id. de artículo: 319502 - Última revisión: miércoles, 18 de junio de 2003 - Versión: 1.1
La información de este artículo se refiere a:
  • Microsoft TV Server 2.0 Service Pack 1
Palabras clave: 
kbmt kbprb KB319502 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 319502

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com