PDF de programación - Tema 3. Conceptos Avanzados del Protocolo TCP

Imágen de pdf Tema 3. Conceptos Avanzados del Protocolo TCP

Tema 3. Conceptos Avanzados del Protocolo TCPgráfica de visualizaciones

Publicado el 14 de Mayo del 2021
120 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
  • Links de descarga
http://lwp-l.com/pdf19190

Comentarios de: Tema 3. Conceptos Avanzados del Protocolo TCP (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad