Compartir a través de


Ejemplos de fusión de segmentos de recepción

En esta sección se muestra el algoritmo de fusión mediante ejemplos de segmentos que se reciben en orden y se procesan en una única llamada a procedimiento diferido (DPC).

En esta página se usa X y X' para etiquetar segmentos sucesivos. Todos los demás campos de segmento y unidad única fusionada (SCU) se encuentran como se describe en Reglas para fusión de segmentos TCP/IP.

Ejemplo 1: Segmentos de datos

Descripción del segmento

Se procesan 10 segmentos sucesivos que pertenecen a la misma conexión TCP. Todas las condiciones siguientes son verdaderas para cada una:

  • X'. SEQ == X.SERVER

  • X'SEQ > X.SEQ

  • X'. ACK == X.ACK

Ninguno de estos segmentos genera una excepción.

Resultado

Una sola SCU se forma a partir de los 10 segmentos. Esto se indica como una sola NET_BUFFER en una sola NET_BUFFER_LIST.

Ejemplo 2: Segmentos de datos, seguidos de una excepción, seguidos de segmentos de datos

Descripción del segmento

Se procesan 5 segmentos sucesivos que pertenecen a la misma conexión TCP. Todas las condiciones siguientes son verdaderas para cada una:

  • X'. SEQ == X.SERVER

  • X'SEQ > X.SEQ

  • X'. ACK == X.ACK

Ninguno de estos segmentos genera una excepción. El 6º segmento es un segmento ACK duplicado con una opción TCP SACK y genera una excepción basada en el número de regla 3 en Reglas para fusión de segmentos TCP/IP.

Nota En este caso, la regla de excepción para controlar una opción TCP tiene prioridad y, por tanto, invalida la regla de fusión.

Se procesan 2 segmentos sucesivos que pertenecen a la misma conexión TCP. Todas las condiciones siguientes son verdaderas para cada una:

  • X'. SEQ == X.SERVER

  • X'SEQ > X.SEQ

  • X'. ACK == X.ACK

Ninguno de estos segmentos genera una excepción.

Resultado

Una única SCU se forma a partir de los primeros 5 segmentos. El 6º segmento no forma una SCU.

Los segmentos 7 y 8 forman un SCU juntos.

Una cadena de NET_BUFFER_LIST se indica con tres estructuras NET_BUFFER_LIST cada una con una sola NET_BUFFER. Se mantiene la ordenación de los segmentos recibidos.

Ejemplo 3: Segmentos de datos, seguidos de varias actualizaciones de ventana

Descripción del segmento

Se procesan 5 segmentos sucesivos que pertenecen a la misma conexión TCP. Todas las condiciones siguientes son verdaderas para cada una:

  • X'. SEQ == X.SERVER

  • X'SEQ > X.SEQ

  • X'. ACK == X.ACK

Ninguno de estos segmentos genera una excepción. El 6º segmento es un ACK puro que es una actualización de ventana con SEG. WND = 65535 como se muestra en el siguiente diagrama de flujo.

Diagrama de flujo que muestra reglas para fusionar segmentos con la opción de marca de tiempo TCP.

El 7º segmento es un ACK puro que es una actualización de ventana con SEG. WND = 131070 como se muestra en el mismo diagrama de flujo.

Resultado

Una sola SCU se forma a partir de los 7 segmentos. Esto se indica como una sola NET_BUFFER en una sola NET_BUFFER_LIST.

The SCU. WND = 131070 y la suma de comprobación se actualiza en función de este valor.

Ejemplo 4: ACK de Piggybacked mixtos con segmentos de datos

Descripción del segmento

Se procesan 3 segmentos sucesivos que pertenecen a la misma conexión TCP. Todas las condiciones siguientes son verdaderas para cada una:

  • X'. SEQ == X.SERVER

  • X'SEQ > X.SEQ

  • X'. ACK == X.ACK

Ninguno de estos segmentos genera una excepción. Se procesan 2 segmentos sucesivos que pertenecen a la misma conexión TCP. Todas las condiciones siguientes son verdaderas para cada una:

  • X'. SEQ == X.SERVER

  • X'SEQ > X.SEQ

  • X'. ACK == X.ACK

Ninguno de estos segmentos genera una excepción.

Resultado

Una sola SCU se forma a partir de los 5 segmentos. Esto se indica como una sola NET_BUFFER en una sola NET_BUFFER_LIST. The SCU. ACK se establece en el último SEG.ACK.