Publicado el 14 de Mayo del 2021
448 visualizaciones desde el 14 de Mayo del 2021
1,4 MB
39 paginas
AMPLIACIÓN DE SISTEMAS OPERATIVOS Y REDES
Grados Ingeniería en Informática
Universidad Complutense de Madrid
TEMA 3. Conceptos Avanzados del Protocolo TCP
PROFESORES:
Rafael Moreno Vozmediano
Rubén Santiago Montero
Juan Carlos Fabero Jiménez
El protocolo TCP: Características
● Unidad de transferencia: Segmento TCP
● Orientado a conexión y fiable. Define las siguientes fases para la transmisión:
○ Establecimiento de conexión
○ Transferencia de datos
○ Cierre de conexión
● Mecanismos de control de errores de tipo ventana deslizante con:
○ Códigos de comprobación (checksum)
○ Numeración de segmentos
○ Confirmaciones selectivas y acumuladas, superpuestas del receptor
○ Retransmisión de segmentos perdidos o erróneos
○ Temporizadores
● Servicios ofrecidos por TCP:
○ Comunicación lógica proceso-proceso, usando números de puerto
○ Flujo de datos (stream) para el envío y recepción
○ Transmisión orientado a conexión y fiable
○ Full-duplex y multiplexación
Ventana Deslizante: La ventana de envío
Segmento, grupo de bytes que
se envían en cada mensaje
100
101
102
...
170 171
172
...
200
201
bytes enviados y
no confirmados
bytes que se pueden
enviar sin confirmación
Ventana de envío, expresada en bytes.
Fijada por el receptor.
Números de Secuencia, número de
byte en el flujo de datos. Primer byte
del segmento
Estrechamiento de la ventana
(control flujo)
Deslizamiento de la ventana
cuando se recibe una confirmación
Ventana Deslizante: La ventana de recepción
Ventana de Recepción, bytes que
se pueden recibir (control flujo)
100
101
102
...
170 171
172
...
200
201
bytes recibidos y
confirmados
Buffer de recepción
Deslizamiento de la ventana
cuando se consumen los datos
Números Confirmación (ACK), número del primer byte en el flujo de datos que
se espera recibir.
● Acumulativos, confirman todos los bytes anteriores al de ACK
● Piggybacking, se solapan con el envío de datos
Ventana Deslizante: Funcionamiento
Ejemplo: Transmisión sin errores. Tamaño de la ventana 100 bytes, Tamaño del
segmento 50 bytes.
Emisor
Receptor
ACK = 101 (bytes del 1 al 100)
ACK = 201 (bytes del 101 al 200)
ACK = 301 (bytes del 201 al 300)
ACK = 401 (bytes del 301 al 400)
SEQ = 1
(bytes del 1 al 100)
SEQ = 101
(bytes del 101 al 200)
SEQ = 201
(bytes del 201 al 300)
SEQ = 301
(bytes del 301 al 400)
Ejemplo: ¿Cuál serían los números de secuencia y confirmación para un tamaño de
segmento de 50 bytes? (Nota, las confirmaciones en TCP no se realizan de forma
inmediata)
Formato del Segmento TCP
Puertos, Identifican los
extremos de la conexión
Números de secuencia y confirmación,
expresado en bytes en el flujo de datos
longitud de la cabecera en
palabras de 32 bits (20-60bytes)
Tamaño de la ventana expresado
en bytes (control de flujo)
Formato del Segmento TCP
Flags del campo de control (6 bits)
● URG y puntero urgente. (URG=1) El segmento transporta datos urgentes a partir
del nº de byte especificado en el campo puntero urgente.
● ACK: (ACK=1) El segmento un número de confirmación válido. Todos los
segmentos de una conexión TCP, excepto el primero, llevan ACK=1.
● PUSH: Los datos deben ser enviados inmediatamente a la aplicación (PUSH=1),
secuencia iniciales
● FIN:Utilizado en la finalización de la conexión
o pueden almacenarse en el buffer (PUSH=0).
● RST: Utilizado para abortar una conexión
● SYN: Utilizado en el establecimiento de la conexión y sincronizar los números de
Fases de la Conexión: Establecimiento (3-way)
Números de secuencia inicial,
sincronizan ambos extremos.
Tamaños de ventana, junto con
confirmaciones en ambos sentidos
Primer mensaje que puede llevar datos
SYN Flood
● Vulnerabilidad en el protocolo que consiste en enviar una gran cantidad de
segmentos TCP con el flag SYN activado.
● Satura el servidor (DoS) que asigna recursos a cada intento de conexión.
Alternativas:
○ Limitar el número de conexiones
○ Aceptar conexiones sólo de IP’s confiables
○ Retrasar la asignación de recursos usando cookies
Fases de la Conexión: Transferencia
Tamaño del segmento, fijado
independientemente por cada extremos.
● PUSH (Emisor). Crea un segmento
inmediatamente y lo envía (sin
esperar MSS).
● PUSH (Receptor) Pasa los datos a la
aplicación inmediatamente.
● TCP actúa orientado a fragmento y no
a byte
URG, desde el primer byte hasta el
marcado por el puntero de urgente.
● TCP notifica a la aplicación de los
datos urgentes (SIGURG).
● El tratamiento de urgencia
corresponde a la aplicación no a TCP.
Fases de la Conexión: Finalización (3-way)
● Ambos extremos dejan de enviar información
● Los mensajes de FIN pueden contener datos. Siempre consume un número
de secuencia como mínimo ya que deben ser confirmados
● El último ACK no lleva datos
Fases de la Conexión: Finalización (4-way)
● Termina el envío de datos pero se
siguen recibiendo.
● El cliente inicia el cierre, el servidor
confirma el FIN pero no inicia la
finalización de su extremo.
● El servidor continúa enviando datos al
cliente
● Termina la conexión con un mensaje
FIN que debe ser confirmado.
Fases de la Conexión: Finalización (4-way)
● Termina el envío de datos pero se
siguen recibiendo.
● El cliente inicia el cierre, el servidor
confirma el FIN pero no inicia la
finalización de su extremo.
● El servidor continúa enviando datos al
cliente
● Termina la conexión con un mensaje
FIN que debe ser confirmado.
Fases de la Conexión: Máquina de Estados
+
+
+
Ambos extremos
cerrando a la vez
Esperando el cierre
de la aplicación
2º FIN enviado
Fases de la Conexión: Máquina de Estados
Fases de la Conexión: Máquina de Estados
Ejemplos: Describir la secuencia de estados para el cliente y servidor durante:
● El cierre de tres vías
● El cierre simultáneo
Fases de la Conexión: Máquina de Estados
Ejemplos: Describir la secuencia de estados para el cliente y servidor durante:
● El cierre de tres vías
● El cierre simultáneo
Control de Errores: Confirmaciones
● El control de errores se realiza usando el mecanismo de ventana deslizante que
permite gestionar:
○ La recepción de paquetes duplicados
○ La retransmisión de paquetes erróneos o perdidos
○ La recepción de paquetes fuera de línea
Confirmaciones
● Acumulativas, siguiente byte que espera recibir y solapadas con los envíos
(piggyback)
● Las confirmaciones de paquetes en-orden se retrasan para solaparla con un
envío un máximo de 500ms.
● Sólo se retrasan un máximo de dos confirmaciones en orden.
● Los paquetes fuera de orden se confirman con el siguiente byte que se espera
recibir.
● Los paquetes duplicados se confirman para prevenir pérdidas de ACK’s.
● (opcional) SACK, confirmaciones selectivas de paquetes fuera de orden
○ No reemplazan los ACK, informativos para el emisor
○ Implementados como opción TCP
Control de Errores: Retransmisión
● La capacidad para retransmitir un segmento TCP cuando no se recibe o se recibe
erróneamente es el núcleo del control de errores.
● TCP dispone de dos mecanismos de retránsmisión:
○ Temporizador de Retransmisión (RTO, Retransmission Time-Out)
■ Cada conexión tiene asociado un único temporizador
■ Cuando el RTO expira se envía el primer segmento sin confirmar de la
ventana
■ Existen diversos algoritmos para fijar RTO que es dinámico y debe ser
mayor que el RTT (round-trip time)
○ Retransmisión por recepción de 3 ACKs duplicados
■ Retransmisión rápida, no requiere que expire el RTO
Control de Errores: Transmisión sin Error
Control de Errores: Recepción fuera de orden
Control de Errores: Perdida de un Segmento
Temporizador RTO expirado
Recepción de 3 ACK’s repetidos
(Fast-retransmission)
Control de Errores: Perdida de un ACK
Sin expirar el temporizador RTO
Temporizador RTO expirado
Temporizadores TCP
● 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
Temporizador de Retransmisión
● 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
Temporizador de Retransmisión
Tiempo de ida y vuelta medido (RTTM)
● Cuando se envía segmento, se mide el tiempo transcurrido desde que se envía el
segmento hasta que se recibe el ACK, denominado RTTM (Measured Round-Trip
Time)
● Sólo hay un temporizador RTTM
● El valor del RTTM puede experimentar grandes fluctuaciones
Tiempo de ida y vuelta suavizado (RTTS)
● Evitar las fluctuaciones del RTT
● RTTS (Smoothed Round-Trip Time), es la media ponderada entre el RTTM y el
último RTTs calculado:
Medida 1: RTTS[1]= RTTM[1]
Medida k: RTTS[k] = (1 -α )×RTTS[k-1] + α×RTTM[k], α<1 (Ej. α=⅛)
Desviación del RTT (RTTD)
● Considera la variaci
Comentarios de: Tema 3. Conceptos Avanzados del Protocolo TCP (0)
No hay comentarios