0% encontró este documento útil (0 votos)
135 vistas67 páginas

Ventanas Deslizantes y Control TCP

Este documento describe varios aspectos fundamentales del protocolo TCP, incluyendo: 1) El diagrama de estado de transición de TCP, 2) La ventana deslizante y cómo regula el flujo de datos, y 3) Los mecanismos de control de errores como checksums, retransmisiones y reconocimientos para garantizar la entrega confiable de datos.

Cargado por

tomrc17
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
135 vistas67 páginas

Ventanas Deslizantes y Control TCP

Este documento describe varios aspectos fundamentales del protocolo TCP, incluyendo: 1) El diagrama de estado de transición de TCP, 2) La ventana deslizante y cómo regula el flujo de datos, y 3) Los mecanismos de control de errores como checksums, retransmisiones y reconocimientos para garantizar la entrega confiable de datos.

Cargado por

tomrc17
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

TCP

2
3
Diagrama de estado de transición

Esperando el
Ambos cierre de la
extremos aplicación
cerrados a la
vez

2do fin enviado

4
5
Escenario común

El valor común de MSL está


entre 30 segundos y 1
minuto.

maximum segment lifetime


(MSL)
6
Handshake de tres fases - Handshake three way

7
Apertura Simultanea

8
Cierre Simultanea

maximum segment lifetime (MSL)


9
Denegar conexión

10
Abortar conexión

11
Control de Flujo
El control de flujo regula la cantidad de datos que una fuente puede enviar
antes de recibir una acuse de recibo del destino. TCP define una ventana
que se impone al búfer de datos entregados desde el programa de
aplicación.

Protocolo de ventana deslizante


Silly Window Syndrome

12
Ventana de envío

13
Ventana de recepción

14
Ventana Deslizante

Tamaño de ventana = mínimo (rwnd , cwnd)

contracción

Ventana deslizante
cerrando abriendo

Se utiliza una ventana deslizante para hacer que la transmisión sea


más eficiente, así como para controlar el flujo de datos para que el
destino no se vea abrumado por los datos.

Las ventanas deslizantes de TCP están orientadas a bytes.


15
Ejemplo 3

¿Cuál es el valor de la ventana del receptor (rwnd) para el host A si el


receptor, el host B, tiene un tamaño de búfer de 5000 bytes y 1000
bytes de datos recibidos y sin procesar?

Solución
El valor de rwnd = 5,000 - 1,000 = 4,000. El host B puede
recibir solo 4.000 bytes de datos antes de desbordar su búfer. El
anfitrión B anuncia este valor en su siguiente segmento a A.
Ejemplo 4
¿Cuál es el tamaño de la ventana para el host A si el valor de rwnd es
de 3000 bytes y el valor de cwnd es de 3500 bytes?
solución
El tamaño de la ventana es el menor de rwnd y cwnd, que es de 3000
bytes.
16
Ejemplo 5
En la figura muestra un ejemplo poco realista de una ventana deslizante. El
remitente ha enviado bytes hasta 202. Suponemos que cwnd es 20 (en realidad, este
valor son miles de bytes).
El receptor ha enviado un número de acuse de recibo de 200 con un rwnd de 9 bytes
(en realidad, este valor es de miles de bytes). El tamaño de la ventana del remitente
es el mínimo de rwnd y cwnd o 9 bytes. Los bytes 200 a 202 se envían, pero no se
reconocen. Los bytes 203 a 208 se pueden enviar sin preocuparse por el
reconocimiento. Los bytes 209 y superiores no se pueden enviar.

Tamaño de ventana = mínimo (20 , 9) = 9

Enviado no Puede ser enviado


reconocido inmediatamente

Enviado y No puede ser


Próximo byte para ser
reconocido enviado hasta abrir
enviado
la ventana
17
Ejemplo 6
En la figura anterior, el servidor recibe un paquete con un valor de confirmación
de 202 y un rwnd de 9.
El host ya ha enviado los bytes 203, 204 y 205. El valor de cwnd sigue siendo 20.
Muestre la nueva ventana.
Solución
La figura siguiente se muestra la nueva ventana. Tenga en cuenta que este es un caso
en el que la ventana se cierra desde la izquierda y se abre desde la derecha en un
número igual de bytes; el tamaño de la ventana no ha cambiado.
El valor de acuse de recibo, 202, declara que se han recibido los bytes 200 y 201 y que
el remitente no necesita preocuparse por ellos; la ventana puede deslizarse sobre ellos.

Enviado y No puede ser


reconocido Próximo byte para ser enviado hasta
enviado abrir la ventana

18
Ejemplo 7
En la figura anterior, el remitente recibe un paquete con un valor de acuse de recibo
de 206 y un rwnd de 12. El host no ha enviado ningún nuevo byte. El valor de cwnd
sigue siendo 20. Muestra la nueva ventana.

Solución El valor de rwnd es menor que cwnd, por lo que el tamaño de la ventana es
12. La figura muestra la nueva ventana. Tenga en cuenta que la ventana se ha abierto
desde la derecha en 7 y se ha cerrado desde la izquierda en 4; el tamaño de la
ventana ha aumentado.

Tamaño de ventana = mínimo (20 , 12) = 12

Enviado y No puede ser


reconocido enviado hasta
abrir la ventana

19
Ejemplo 8
El host recibe un paquete con un valor de reconocimiento de 210 y un rwnd de 5. El
host ha enviado los bytes 206, 207, 208 y 209. El valor de cwnd sigue siendo 20.
Muestre la nueva ventana.
Solución: El valor de rwnd es menor que cwnd, por lo que el tamaño de la ventana es
5. La figura 12.24 muestra la situación. Tenga en cuenta que este es un caso no
permitido por la mayoría de las implementaciones. Aunque el remitente no ha
enviado los bytes 215 a 217, el receptor no lo sabe.

Esta situación no es permitida en la


mayoría de implementaciones

Tamaño de ventana = 5

20
Ejemplo 9
¿Cómo puede el receptor evitar encoger la ventana en el ejemplo anterior?

Solución: El receptor necesita realizar un seguimiento del último número de


acuse de recibo y la última respuesta.
Si agregamos el número de reconocimiento a rwnd, obtenemos el número de bytes
que sigue a la pared derecha.
Si queremos evitar que la pared derecha se mueva hacia la izquierda
(encogiéndose), siempre debemos tener la siguiente relación.

nuevo ack + nuevo rwnd ≥ último ack + último rwnd


o
nuevo rwnd ≥ (último ack + último rwnd) − nuevo ack

Para evitar reducir la ventana del remitente, el receptor debe esperar hasta que
haya más espacio disponible en su búfer.

21
Algunos puntos sobre las ventanas deslizantes de TCP :
❏ El tamaño de la ventana es el menor entre rwnd y cwnd.

❏ La fuente no tiene que enviar los datos de una ventana completa.

❏ El receptor puede abrir o cerrar la ventana, pero no debe


encogerse.

❏ El destino puede enviar un acuse de recibo en cualquier momento


siempre que no se reduzca la ventana.

❏ El receptor puede apagar temporalmente la ventana; el remitente,


sin embargo, siempre puede enviar un segmento de un byte
después de cerrar la ventana.

22
Control de ERROR

TCP proporciona confiabilidad mediante el control de errores, que


detecta segmentos corruptos, perdidos, desordenados y duplicados.
El control de errores en TCP se logra mediante el uso de la suma de
comprobación, el reconocimiento y el tiempo de espera

Checksum
Acknowledgment
Acknowledgment tipo
Retransmisión
Segmentos fuera de orden

23
24
25
Los segmentos ACK no consumen números de secuencia y no se
reconocen.

En las implementaciones modernas, se produce una retransmisión si el


temporizador de retransmisión expira o si han llegado tres segmentos
ACK duplicados.

No se establece ningún temporizador de retransmisión para un


segmento ACK.

Los datos pueden llegar desordenados y ser almacenados


temporalmente por el TCP receptor, pero TCP garantiza que no se
entregue ningún segmento desordenado al proceso.

26
Operación Normal: Transmisión sin error

27
Segmentos pérdidos - temporizador RTO expirado

El receptor TCP entrega solo datos ordenados al proceso. 28


Retransmisión rápida - recepción de 3 ACKs
repetidos

29
acknowledgment pérdido - sin expirar el temporizador RTO

30
Reconocimiento perdido corregido reenviando un segmento - temporizador
RTO expirado

retransmission timeout (RTO)


Los reconocimientos perdidos pueden crear un punto muerto si no se manejan
correctamente. 31
CONGESTION CONTROL
El control de la congestión se refiere a los mecanismos y técnicas para
mantener la carga por debajo de la capacidad.

Desempeño de la red
Mecanismos de control de congestión
Control de congestion en TCP

colas

32
Retraso de paquetes y carga de la Rendimiento frente a carga de red
red

33
Inicio lento, aumento exponencial

En el algoritmo de inicio lento, el tamaño de la ventana de congestión aumenta


exponencialmente hasta que alcanza un umbral
34
Evitación de la congestión, aumento aditivo

En el algoritmo para evitar la congestión, el tamaño de la ventana de congestión aumenta de forma aditiva
hasta que se detecta la congestión.
La mayoría de las implementaciones reaccionan de manera diferente a la detección de congestión:

❏ Si la detección es por tiempo de espera, comienza una nueva fase de inicio lento.
❏ Si la detección se realiza mediante tres ACK, comienza una nueva fase para evitar la congestión. 35
Resumen de la política de congestión de TCP

36
Ejemplo de Congestion

37
Temporizadores TCP
Para realizar su operación sin problemas, la mayoría de las
implementaciones de TCP utilizan al menos cuatro temporizadores.

Temporizador de retransmisión
Temporizador de persistencia
Temporizador Keepalive
Temporizador de tiempo de espera

En TCP, solo puede haber una medición RTT en curso en cualquier momento

38
TCP usa 4 temporizadores para controlar una conexión

○ RTO, temporizador de retransmisión

○ Keepalive, evita mantener conexiones indefinidamente

■ Segundos que una conexión puede estar en silencio, tcp_keepalive_time


■ Expirado el temporizador se envían un máximo de tcp_keepalive_probes
sondas cada tcp_keepalive_intvl segundos.
■ Si no se recibe ningún ACK para las sondas se cierra la conexión.
■ Ej. 2horas, 10 sondas cada 75 segundos

○ TIMEWAIT, es útil en dos situaciones:


■ Volver a enviar el último ACK durante el cierre activo (se recibe FIN)
■ Previene la colisión de números de secuencia de dos conexiones
distintas (puerto y nº de secuencia no se pueden reutilizar)
■ 2 * MSL (maximum segment life-time). Eg. 30, 60, 120 segundos

○ Temporizador de persistencia:
■ Asociado a la recepción de un tamaño de ventana 0
■ Recupera la pérdida de un ACK posterior con el nuevo tamaño
■ Se envía una sonda que fuerza el envío de un ACK
■ Ej. 60 segundos 39
● La elección del tiempo de vencimiento del temporizador de
retransmisión
(timeout) está basada en los retardos observados en la red
● Los retardos en la red pueden variar dinámicamente, por tanto
los timeouts debe adaptarse a esta situación
● Las principales técnicas utilizadas para fijar los temporizadores
de retransmisión
son las siguientes:

○ Método de la media ponderada (algoritmo de Jacobson)


○ Método de la varianza (algoritmo de Jacobson/Karels)
○ Algoritmo de Karn

40
41
42
Ejemplo 10

Demos un ejemplo hipotético. En la figura siguiente muestra


parte de una conexión. La figura muestra el establecimiento de
la conexión y parte de las fases de transferencia de datos.

1. Cuando se envía el segmento SYN, no hay ningún valor para RTTM, RTTS
o RTTD. El valor de RTO se establece en 6,00 segundos. A continuación se
muestra el valor de estas variables en este momento:

RTTM = 1.5 RTTS = 1.5


RTTD = 1.5 / 2 = 0.75 RTO = 1.5 + 4 (0.75) = 4.5

2. Cuando llega el segmento SYN + ACK, se mide RTTM y es igual a 1,5


segundos. La siguiente diapositiva muestra los valores de estas variables:
RTTM (Round Trip Time Measurement)
43
Ejemplo 10

RTTM = 1.5 RTTS = 1.5


RTTD = 1.5 / 2 = 0.75 RTO = 1.5 + 4 (0.75) = 4.5

3. Cuando se envía el primer segmento de datos, comienza una


nueva medición RTT.
Tenga en cuenta que el remitente no inicia una medición RTT
cuando envía el segmento ACK, porque no consume un número de
secuencia y no hay tiempo de espera.
No se inicia ninguna medición RTT para el segundo segmento de
datos porque ya hay una medición en curso.
RTTM = 2.5
RTTS = 7/8 (1.5) + 1/8 (2.5) = 1.625
RTTD = 3/4 (7.5) + 1/4 |1.625 − 2.5| = 0.78
RTO = 1.625 + 4 (0.78) = 4.74 44
Ejemplo 10 Calcular los valores de los temporizadores:

α=⅛, β=1/4

TCP no considera el RTT de un segmento retransmitido en su 45


cálculo de un nuevo RTO
Ejemplo11

Cuando se envía el primer segmento de datos, comienza una nueva


medición RTT. En la figura siguiente es una continuación del ejemplo
anterior.
Hay retransmisión y se aplica el algoritmo de Karn. Se envía el
primer segmento de la figura, pero se pierde.
El temporizador RTO expira después de 4,74 segundos.
El segmento se retransmite y el temporizador se establece en 9.48, el
doble del valor anterior de RTO.
Esta vez se recibe un ACK antes del tiempo de espera. Esperamos
hasta que enviemos un nuevo segmento y recibamos el ACK antes de
volver a calcular el RTO (algoritmo de Karn).

46
Ejemplo 11
α=⅛, β=1/4

47
Opciones

El encabezado TCP puede tener hasta 40 bytes de información opcional.


Las opciones transmiten información adicional al destino o alinean otras
opciones.

48
Opción End-of-option

EOP se puede usar solo una vez

49
Opción No-operation

NOP se puede utilizar más de una vez

50
Opción Maximum-segment-size

El valor de MSS se determina durante el establecimiento de la conexión y no


cambia durante la conexión.

51
Opción Window-scale-factor

El valor del factor de escala de la ventana solo se puede determinar durante el


establecimiento de la conexión; no cambia durante la conexión.

52
Opción de Timestamp

Una aplicación de la opción de marca de tiempo (time stamp) es el cálculo del


tiempo de ida y vuelta (RTT).

53
Ejemplo 12

En la figura siguiente muestra un ejemplo que calcula el tiempo


de ida y vuelta para un extremo. Todo debe invertirse si
queremos calcular el RTT para el otro extremo.

El remitente simplemente inserta el valor del reloj (por ejemplo,


el número de segundos transcurridos desde la medianoche) en el
campo de marca de tiempo para el primer y segundo segmento.
Cuando llega un acuse de recibo (el tercer segmento), se
comprueba el valor del reloj y el valor del campo de respuesta
de eco se resta de la hora actual. RTT es de 12 s en este
escenario.

54
Ejemplo 12

La función del receptor está más involucrada. Realiza un seguimiento


del último acuse de recibo enviado (12000). Cuando llega el primer
segmento, contiene los bytes 12000 a 12099.
El primer byte es el mismo que el valor de lastack. Luego copia el
valor de la marca de tiempo (4720) en la variable tsrecent.
El valor de lastack sigue siendo 12000 (no se ha enviado ningún
nuevo acuse de recibo). Cuando llega el segundo segmento, dado que
ninguno de los números de bytes de este segmento incluye el valor de
lastack, se ignora el valor del campo de marca de tiempo.
Cuando el receptor decide enviar un acuse de recibo acumulativo con
acuse de recibo 12200, cambia el valor de lastack a 12200 e inserta el
valor de tsrecent en el campo de respuesta de eco. El valor de tsrecent
no cambiará hasta que sea reemplazado por un nuevo segmento que
lleve el byte 12200 (siguiente segmento).
55
Ejemplo 12

Tenga en cuenta que, como muestra el ejemplo, el RTT calculado


es la diferencia de tiempo entre enviar el primer segmento y
recibir el tercer segmento.
Este es en realidad el significado de RTT: la diferencia de tiempo
entre un paquete enviado y el acuse de recibo recibido.
El tercer segmento lleva el acuse de recibo del primer y segundo
segmento.

56
Ejemplo 12

La opción de marca de tiempo también se puede utilizar para PAWS.


PAWS : Protection against Wrapped Sequence Numbers 57
SACK

TCP Selective Acknowledgment Options 58


Ejemplo 13
Veamos cómo se usa la opción SACK para listar bloques fuera de orden. En la
siguiente figura, un extremo ha recibido cinco segmentos de datos.

El primer y segundo segmento están en orden consecutivo. Se puede enviar un acuse


de recibo acumulativo para informar de la recepción de estos dos segmentos.
Los segmentos 3, 4 y 5, sin embargo, están desordenados con un espacio entre el
segundo y el tercero y un espacio entre el cuarto y el quinto.
Un ACK y un SACK juntos pueden despejar fácilmente la situación para el remitente.
El valor de ACK es 2001, lo que significa que el remitente no necesita preocuparse
por los bytes 1 a 2000. El SACK tiene dos bloques.
El primer bloque anuncia que los bytes 4001 a 6000 llegaron desordenados.
El segundo bloque muestra que los bytes 8001 a 9000 también llegaron
desordenados. Esto significa que los bytes 2001 a 4000 y los bytes 6001 a 8000 se
pierden o se descartan. El remitente solo puede reenviar estos bytes.

59
Ejemplo 13

60
Ejemplo 14

El ejemplo de la figura siguiente muestra cómo se puede detectar


un segmento duplicado con una combinación de ACK y SACK. En
este caso, tenemos algunos segmentos desordenados (en un
bloque) y un segmento duplicado.

Para mostrar tanto los datos desordenados como los duplicados,


SACK usa el primer bloque, en este caso, para mostrar los datos
duplicados y otros bloques para mostrar los datos desordenados.
Tenga en cuenta que solo el primer bloque se puede utilizar para
datos duplicados.

La pregunta natural es cómo el remitente, cuando recibe estos


valores ACK y SACK, sabe que el primer bloque es para datos
duplicados (compare este ejemplo con el ejemplo anterior). La
respuesta es que los bytes del primer bloque ya están reconocidos
en el campo ACK; por lo tanto, este bloque debe ser un duplicado 61
Ejemplo

62
Ejemplo 15

El ejemplo de la figura siguiente muestra lo que sucede si uno de


los segmentos de la sección fuera de orden también se duplica.
En este ejemplo, uno de los segmentos (4001: 5000) está
duplicado.
La opción SACK anuncia estos datos duplicados primero y
luego el bloque fuera de orden.
Esta vez, sin embargo, el bloque duplicado aún no es reconocido
por ACK, pero debido a que es parte del bloque fuera de orden
(4001: 5000 es parte de 4001: 6000), el remitente entiende que
define el datos duplicados.

63
Ejemplo 15

64
Paquete TCP

Un paquete TCP básico y simplificado para simular el corazón de TCP. El


paquete incluye tablas llamadas bloques de control de transmisión, un
conjunto de temporizadores y tres módulos de software.

Transmission Control Blocks (TCBs)


Timers
Main Module
Input Processing Module
Output Processing Module

65
TCP package

66
TCBs

67

También podría gustarte