Descripción de las características TCP de Windows 2000 y Windows Server 2003

Seleccione idioma Seleccione idioma
Id. de artículo: 224829 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E224829
Importante
Este artículo contiene información acerca de cómo modificar el Registro. Antes de modificar el Registro, asegúrese de hacer una copia de seguridad del mismo y de que sabe cómo restaurarlo si se produce algún problema. Para obtener más información sobre cómo realizar una copia de seguridad, restaurar y modificar el Registro, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
256986 Definición del Registro de Microsoft Windows
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo se describen las siguientes características de TCP de Microsoft Windows 2000 y Microsoft Windows Server 2003:
  • Tamaño de la ventana TCP
  • Opciones de TCP compatibles ahora
  • Escalado de ventanas - RFC 1323
  • Marca de tiempo - RFC 1323
  • Protección contra los Números de secuencia ajustados (PAWS)
  • Reconocimientos selectivos (SACKS) - RFC 2018
  • Comportamiento de retransmisión de TCP y retransmisión rápida
Las características de TCP se pueden cambiar modificando entradas en el Registro.

Más información

Advertencia
Pueden producirse problemas graves si modifica incorrectamente el Registro mediante el Editor del Registro o con cualquier otro método. Estos problemas pueden requerir que reinstale el sistema operativo. Microsoft no puede garantizar la solución de esos problemas. Modifique el Registro bajo su responsabilidad.

Tamaño de la ventana TCP

El tamaño de la ventana de recepción de TCP es la cantidad de datos recibidos (en bytes) que se pueden almacenar en búfer durante una conexión. El host emisor sólo puede enviar esa cantidad de datos; antes deber esperar un reconocimiento y una actualización de la ventana del host receptor. La pila TCP/IP de Windows está diseñada para ajustarse a sí misma en la mayoría de los entornos y utiliza tamaños de ventana predeterminados mayores que en las versiones anteriores.

En lugar de utilizar un tamaño predeterminado fijo de la ventana de recepción, TCP se ajusta en incrementos pares del tamaño máximo de segmento (MSS), que se negocia durante la configuración de la conexión. El ajuste de la ventana de recepción en incrementos pares del MSS aumenta el porcentaje de segmentos TCP de tamaño completo utilizado durante las transmisiones masivas de datos.

El tamaño de la ventana de recepción se determina de la manera siguiente:
  1. La primera solicitud de conexión enviada a un host remoto anuncia un tamaño de la ventana de recepción de 16K (16.384 bytes).
  2. Cuando se establece la conexión, el tamaño de la ventana de recepción se redondea hasta un incremento par del MSS.
  3. El tamaño de la ventana se ajusta en 4 veces el valor de MSS, hasta un tamaño mínimo de 64K, a menos que se utilice la opción de escalado de la ventana (RFC 1323).
Nota
Consulte la sección "Escalado de ventanas".

Para las conexiones Ethernet, el tamaño de la ventana se establecerá normalmente en 17.520 bytes (16K redondeado hasta doce segmentos de 1460 bytes). El tamaño de la ventana puede disminuir cuando se establece una conexión con un equipo que admite las opciones extendidas de encabezado TCP, como Reconocimientos selectivos (SACKS) y Marcas de tiempo. Estas dos opciones aumentan el tamaño del encabezado TCP en más de 20 bytes, lo que da como resultado que haya menos espacio para datos.

En versiones anteriores de Windows NT, el tamaño de la ventana para una conexión Ethernet era de 8.760 bytes o seis segmentos de 1460 bytes.

Para establecer el tamaño de la ventana de recepción en un valor concreto, agregue el valor TcpWindowSize a la subclave del Registro específica de su versión de Windows. Para ello, siga estos pasos:
  1. Haga clic en Inicio y en Ejecutar, escriba Regedit y haga clic en Aceptar.
  2. Expanda la subclave del Registro específica de su versión de Windows:
    • Para Windows 2000, expanda la subclave siguiente:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
    • Para Windows Server 2003, expanda la subclave siguiente:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  3. En el menú Edición, seleccione Nuevo y haga clic en Valor DWORD.
  4. Escriba TcpWindowSize en el cuadro Nuevo valor y presione ENTRAR.
  5. Haga clic en Modificar en el menú Edición.
  6. Escriba el tamaño de ventana deseado en el cuadro Información del valor.

    Nota
    El intervalo válido para el tamaño de ventana es 0-0x3FFFC000 hexadecimal.
Este valor no está presente de forma predeterminada. Cuando agrega el valor TcpWindowSize, reemplaza el algoritmo del tamaño de ventana predeterminado descrito anteriormente.

Nota
TcpWindowSize también se puede agregar a la clave Parameters para establecer el tamaño de la ventana globalmente para todas las interfaces.

Opciones de TCP compatibles ahora

En el pasado, las opciones de TCP se utilizaban principalmente para negociar los tamaños máximos de segmento. En Windows, las opciones de TCP se utilizan para Escalado de ventanas, Marca de tiempo y ACK selectivo.

Hay dos tipos de opciones de TCP:
  1. Una opción TCP de un único octeto, que se utiliza para indicar un tipo de opción concreto.
  2. Una opción TCP de varios octetos, que consta de un tipo de opción, una longitud de opción y una serie de octetos de opción.
En la lista siguiente se muestra cada tipo de opción de TCP, su longitud, su nombre y su descripción.
Tipo: 0
Longitud: 1
Opción: End of Option List
Descripción: Se utiliza cuando se necesita relleno para la última opción TCP.

Tipo: 1
Longitud: 1
Opción: No Operation
Descripción: Se utiliza cuando se necesita relleno y hay más opciones TCP dentro del mismo paquete.

Tipo: 2
Longitud: 4
Opción: Maximum Segment Size
Descripción: Indica el tamaño mínimo de un segmento TCP que se puede enviar a través de la red.

Tipo: 3
Longitud: 3
Opción: Window Scale Option
Descripción: Identifica el factor de escala que se utilizar_ cuando se empleen tamaños de ventana de más de 64k.

Tipo: 8
Longitud: 10
Opción: Time Stamp Option
Descripción: Se utiliza para ayudar a calcular el Tiempo de ida y vuelta (RTT) de los paquetes transmitidos.

Tipo: 4
Longitud: 2
Opción: TCP SACK permitted
Descripción: Informa a otros hosts de que se permiten Acks selectivos.

Tipo: 5
Longitud: Variable
Opción: TCP SACK Option
Descripción: Lo utilizan los hosts para identificar si se recibieron o no paquetes fuera de secuencia.

Escalado de ventanas

Para hacer un uso más eficiente de las redes con ancho de banda alto se puede utilizar un tamaño mayor de la ventana de TCP. El campo de tamaño de la ventana TCP controla el flujo de datos y está limitado a 2 bytes, o un tamaño de ventana de 65.535 bytes.

Puesto que no se puede expandir el campo de tamaño, se utiliza un factor de escala. La escala de la ventana TCP es una opción utilizada para aumentar el tamaño mínimo de la ventana de 65.535 bytes a 1 gigabyte.

La opción de escala de ventana sólo se utiliza durante el protocolo de enlace TCP de 3 vías. El valor de escala de ventana representa el número de bits que hay que desplazar a la izquierda el campo de tamaño de la ventana de 16 bits. El valor de escala de ventana se puede establecer de 0 (ningún desplazamiento) a 14.

Para calcular el tamaño real de la ventana, multiplique el tamaño de la ventana por 2^S, donde S es el valor de escala.
Por ejemplo,
Si el tamaño de ventana es 65.535 bytes con un factor de escala de ventana de 3.
Tamaño real de la ventana = 65535*2^3
Tamaño real de la ventana = 524280
La siguiente traza de Monitor de red muestra cómo se utiliza la opción de escala de ventana:
TCP: ....S., len:0, seq:725163-725163, ack:0, win:65535, src:1217 dst:139(NBT Session)
TCP: Source Port = 0x04C1
TCP: Destination Port = NETBIOS Session Service
TCP: Sequence Number = 725163 (0xB10AB)
TCP: Acknowledgement Number = 0 (0x0)
TCP: Data Offset = 44 (0x2C)
TCP: Reserved = 0 (0x0000)
+ TCP: Flags = 0x02 : ....S.
TCP: Window = 65535 (0xFFFF)
TCP: Checksum = 0x8565
TCP: Urgent Pointer = 0 (0x0)
TCP: Options
+ TCP: Maximum Segment Size Option
TCP: Option Nop = 1 (0x1)
TCP: Window Scale Option
TCP: Option Type = Window Scale
TCP: Option Length = 3 (0x3)
TCP: Window Scale = 3 (0x3)

TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
+ TCP: Timestamps Option
TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
+ TCP: SACK Permitted Option
Es importante tener en cuenta que el tamaño de la ventana utilizado en el protocolo de enlace real de 3 vías NO es el tamaño de la ventana que se escala. Esto es así según lo descrito en la sección 2.2 de RFC 1323, "El campo Window de un segmento SYN (por ejemplo, [SYN] o [SYN,ACK]) nunca se escala".

Esto significa que el primer paquete de datos enviado después del protocolo de enlace de 3 vías es el tamaño real de la ventana. Si hay un factor de escala, siempre se utiliza el tamaño de ventana inicial de 65.535 bytes. El tamaño de la ventana se multiplica después por el factor de escala identificado en el protocolo de enlace de 3 vías. La tabla siguiente representa los límites del factor de escala para diversos tamaños de ventana.

Contraer esta tablaAmpliar esta tabla
Factor de escalaValor de escalaVentana inicialVentana escalada
0165535 o menos65535 o menos
1265535131,070
2465535262,140
3865535524,280
416655351,048,560
532655352,097,120
664655354,194,240
7128655358,388,480
82566553516,776,960
95126553533,553,920
1010246553567,107,840
11204865535134,215,680
12409665535268,431,360
13819265535536,862,720
1416384655351,073,725,440

Por ejemplo:

Si el tamaño de la ventana se especifica en el Registro como 269000000 (269M) en decimal, el factor de escala durante el protocolo de enlace de 3 vías será 13, ya que un factor de escala de 12 sólo permite tamaños de ventana de hasta 268.431.360 bytes (268M).

El tamaño de ventana inicial en este ejemplo se calcularía de la manera siguiente:
65.535 bytes con un factor de escala de ventana de 13.
Tamaño real de la ventana = 65535*2^13
Tamaño real de la ventana = 536.862.720
Cuando el valor para el tamaño de la ventana se agrega al Registro y su tamaño es mayor que el valor predeterminado, Windows intenta utilizar un valor de escala que permita el nuevo tamaño de la ventana.

Se puede agregar el valor Tcp1323Opts en la clave del Registro siguiente para controlar el escalado de las ventanas y la marca de tiempo:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
  1. En la barra de herramientas, haga clic en Inicio y en Ejecutar, y escriba Regedit para iniciar el Editor del Registro.
  2. En el Editor del Registro, haga clic en Edición, seleccione Nuevo y haga clic en Valor DWORD.
  3. En el cuadro Nuevo valor, escriba Tcp1323Opts, presione ENTRAR y a continuación, en el menú Edición, haga clic en Modificar. Nota
    El intervalo válido es 0, 1, 2 ó 3 donde:
0 (deshabilitar opciones de RFC 1323)
1 (escala de ventana habilitada únicamente)
2 (marcas de tiempo habilitadas únicamente)
3 (ambas opciones habilitadas)
Esta entrada del Registro controla las marcas de tiempo y las opciones de escalado de ventanas de RFC 1323. Las marcas de tiempo y el escalado de ventanas están habilitados de forma predeterminada, pero se pueden manipular mediante bits de indicador. El bit 0 controla el escalado de ventanas y el bit 1 controla las marcas de tiempo.

Marcas de tiempo

Previamente, la pila TCP/IP utilizaba una muestra por ventana de datos enviada para calcular el tiempo de ida y vuelta (RTT). Se establecía un temporizador (temporizador de retransmisión) cuando se enviaba el paquete, hasta que se recibía el reconocimiento. Por ejemplo, si el tamaño de ventana era de 64.240 bytes (44 segmentos completos) en una red Ethernet, sólo se utilizaba uno de cada 44 paquetes para actualizar el tiempo de ida y vuelta. Con un tamaño máximo de ventana de 65.535 bytes, esta tasa de muestreo era suficiente. Cuando se utiliza el escalado de ventanas y un tamaño máximo de ventana de 1 gigabyte, esta tasa de muestreo de RTT no es suficiente.

La opción de marcas de tiempo de TCP se puede establecer ahora para su uso en segmentos (datos y ACK) que la pila considera apropiados con el fin de realizar operaciones como cálculo del RTT, comprobación de PAWS, etc. Con estos datos, se puede calcular el RTT con precisión para tamaños de ventana grandes. El RTT se utiliza para calcular los intervalos de retransmisión. Se necesitan RTT y tiempos de espera de retransmisión precisos para lograr un rendimiento último.

Cuando se utiliza la marca de tiempo de TCP en una sesión TCP, el autor de la sesión envía la opción en su primer paquete del protocolo de enlace TCP de tres vías (paquete SYN). Cualquier lado puede utilizar entonces la opción de TCP durante la sesión.

Opción de marcas de tiempo de TCP (TSopt):

Contraer esta tablaAmpliar esta tabla
Tipo = 8Longitud = 10Valor TS (Tsval)Respuesta de eco de TS (Tsecr)
1 byte1 byte4 bytes4 bytes

El campo de opción de marca de tiempo se puede ver en una traza de Monitor de red si se expande el campo de opciones de TCP, como se muestra abajo:
TCP: Timestamps Option
TCP: Option Type = Timestamps
TCP: Option Length = 10 (0xA)
TCP: Timestamp = 2525186 (0x268802)
TCP: Reply Timestamp = 1823192 (0x1BD1D8)

Protección contra los Números de secuencia ajustados (PAWS)

El campo de número de secuencia de TCP está limitado a 32 bits, lo que limita la cantidad de números de secuencia disponibles. Con redes de gran capacidad y una transferencia de datos grande, es posible ajustar los números de secuencia antes de que un paquete atraviese la red. Si se envían datos en una red de 1 gigabyte por segundo (Gbps), los números de secuencia podrían ajustarse en tan sólo 34 segundos. Si se retrasa un paquete, podría existir un paquete diferente con el mismo número de secuencia. Para evitar confusiones en caso de que haya números de secuencia duplicados, se utiliza la marca de tiempo de TCP como una extensión del número de secuencia. Los paquetes tienen marcas de tiempo actuales y de progreso. Un paquete anterior tiene una marca de tiempo más antigua y se descarta.

Reconocimientos selectivos (SACK)

Windows presenta compatibilidad con una característica de rendimiento conocida como Reconocimiento selectivo o SACK. SACK es especialmente importante para las conexiones que utilizan tamaños grandes de la ventana TCP. Antes de que existiera SACK, un receptor sólo podía confirmar el último número de secuencia de una secuencia de datos contigua que había recibido, o el "borde izquierdo" de la ventana de recepción. Con SACK habilitado, el receptor sigue utilizando el número de ACK para confirmar el borde izquierdo de la ventana de recepción, pero también puede confirmar individualmente otros bloques de datos recibidos. SACK utiliza opciones de encabezado de TCP, como se muestra abajo.

SACK utiliza dos tipos de opciones TCP.

La opción TCP Sack-Permitted sólo se utiliza en un paquete SYN (durante el establecimiento de una conexión TCP) para indicar que puede hacer ACK selectivo.

La segunda opción de TCP, TCP Sack Option, contiene el reconocimiento de uno o más bloques de datos. Los bloques de datos se identifican usando el número de secuencia que hay al principio y al final de ese bloque de datos. Esto también se conoce como el borde izquierdo y el borde derecho del bloque de datos.

El tipo 4 es la opción TCP Sack-Permitted y el tipo 5 es TCP Sack Option. La longitud es la longitud en bytes de esta opción TCP.

Tcp Sack Permitted:

Contraer esta tablaAmpliar esta tabla
Tipo = 4Longitud = 2
1 byte1 byte

Tcp SACK Option:

Contraer esta tablaAmpliar esta tabla
Tipo = 5Longitud = Variable
1 byteBorde izquierdo del primer bloque hasta el borde derecho del primer bloque
...
Borde izquierdo del bloque número N hasta el borde derecho del bloque número N

Con SACK habilitado (valor predeterminado), se puede eliminar un paquete o una serie de paquetes y el receptor informa al remitente de qué datos se han recibido y dónde puede haber "agujeros" en los datos. Entonces, el remitente puede retransmitir selectivamente los datos perdidos sin retransmitir los bloques de datos que ya se han recibido correctamente. El parámetro del Registro SackOpts controla SACK.

Se puede editar el valor SackOpts de la clave del Registro siguiente para controlar el uso de reconocimientos selectivos:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  1. En la barra de herramientas, haga clic en Inicio, haga clic en Ejecutar y escriba Regedit para iniciar el Editor del Registro.
  2. Busque y haga clic en la clave anterior en el Editor del Registro y, a continuación, haga clic en Modificar en el menú Edición.
  3. Escriba el valor deseado en el cuadro Información del valor.
NOTA
El valor binario válido es 0 _ 1 y el valor predeterminado es 1. Este parámetro controla si se permite o no el ACK selectivo (SACK - RFC 2018).

La siguiente traza de Monitor de red ilustra un host que confirma todos los datos hasta el número de secuencia 54857341, así como los datos del número de secuencia 54858789-54861685. Los datos perdidos son de 54857341 a 54858788.
TCP: .A...., len:0, seq:925104-925104, ack:54857341, win:32722, src:1242 dst:139
TCP: Source Port = 0x04DA
TCP: Destination Port = NETBIOS Session Service
TCP: Sequence Number = 925104 (0xE1DB0)
TCP: Acknowledgement Number = 54857341 (0x3450E7D)
TCP: Data Offset = 44 (0x2C)
TCP: Reserved = 0 (0x0000)
+ TCP: Flags = 0x10 : .A....
TCP: Window = 32722 (0x7FD2)
TCP: Checksum = 0x4A72
TCP: Urgent Pointer = 0 (0x0)
TCP: Options
TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
+ TCP: Timestamps Option
TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
TCP: SACK Option
TCP: Option Type = 0x05
TCP: Option Length = 10 (0xA)
TCP: Left Edge of Block = 54858789 (0x3451425)
TCP: Right Edge of Block = 54861685 (0x3451F75)

Comportamiento de retransmisión de TCP y retransmisión rápida

Retransmisión de TCP

Como una revisión del comportamiento de retransmisión normal, TCP inicia un temporizador de retransmisión cuando cada segmento saliente se pasa al Protocolo Internet (IP). Si no se ha recibido ningún reconocimiento de los datos de un segmento determinado antes de que el temporizador caduque, se retransmite el segmento.

El tiempo de espera de retransmisión (RTO) se ajusta continuamente para adaptarse a las características de la conexión utilizando cálculos de Tiempo suavizado de ida y vuelta (SRTT) según se describe en RFC 793. El temporizador para un segmento dado se duplica después de cada retransmisión de ese segmento. Con este algoritmo, TCP se ajusta a s_ mismo para el retraso normal de una conexión.

Retransmisión rápida

En algunas circunstancias, TCP retransmite datos antes de que caduque el temporizador de retransmisión. Normalmente se debe a una característica conocida como retransmisión rápida. Cuando un receptor que admite retransmisión rápida recibe datos con un número de secuencia que va más allá del número actual esperado, es probable que se hayan perdido algunos datos. Para ayudar a informar al remitente de este suceso, el receptor envía inmediatamente un ACK, con el número de ACK establecido en el número de secuencia que se estaba esperando. Continuará haciendo esto para cada segmento TCP adicional que llegue. Cuando el remitente empiece a recibir una secuencia de ACK que está confirmando el mismo número de secuencia, es probable que se haya eliminado un segmento. El remitente volverá a enviar inmediatamente el segmento que el receptor está esperando, sin esperar a que caduque el temporizador de retransmisión. Esta optimización mejora considerablemente el rendimiento cuando se eliminan paquetes con frecuencia.

De forma predeterminada, Windows vuelve a enviar un segmento si recibe tres ACK para el mismo número de secuencia (un ACK y 2 duplicados) y ese número de secuencia es posterior al actual. Esto se puede controlar mediante el parámetro TcpMaxDupAcks del Registro.

Se puede editar el valor TcpMaxDupAcks en la clave del Registro siguiente para controlar el número de ACK necesarios para iniciar una retransmisión rápida:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
  1. En la barra de herramientas, haga clic en Inicio, haga clic en Ejecutar y escriba Regedit para iniciar el Editor del Registro.
  2. Busque y haga clic en la clave anterior en el Editor del Registro y, a continuación, haga clic en Modificar en el menú Edición.
  3. Escriba el valor deseado en el cuadro Información del valor.
NOTA
El intervalo válido es de 1 a 3 y el valor predeterminado es 2.

Este parámetro determina el número de ACK duplicados que se deben recibir para el mismo número de secuencia de datos enviados antes de que se desencadene la "retransmisión rápida" para volver a enviar el segmento que se eliminó en tránsito.

Propiedades

Id. de artículo: 224829 - Última revisión: lunes, 24 de julio de 2006 - Versión: 6.1
La información de este artículo se refiere a:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
Palabras clave: 
kbinfo kbenv kbnetwork KB224829

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