Está en la página 1de 21

Capítulo 4.

TCP avanzado

Redes de Ordenadores
5º Ingeniero de Telecomunicación

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 2

Índice
1 Paradigmas de comunicaciones
2 Multiplexación por puerto
3 UDP
4 TCP
4.1 Cabecera TCP
4.2 Opciones cabecera TCP
4.3 Conexiones TCP
4.3.1 Establecimiento
4.3.2 Transferencia
4.3.3 Finalización
4.3.4 Diagrama de transición de estados TCP
4.4 Transferencia interactiva
4.4.1 Confirmación retrasada (delayed ACK)
4.4.2 Algoritmo de Nagle
4.5 Transferencia masiva
4.5.1 Transferencia normal
4.5.2 Control de flujo
4.5.3 Control de congestión
4.5.4 Producto RTTxBW
4.6 Fiabilidad en TCP
4.6.1 Timeouts y retransmisiones
4.6.2 Temporizador de persistencia
4.6.3 Temporizador keepalive
4.7 Fast Retransmit y Fast Recovery
4.8 Versiones de TCP

1
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 3

Parte 1
1 Paradigmas de comunicaciones
2 Multiplexación por puerto
3 UDP
4 TCP
4.1 Cabecera TCP
4.2 Opciones cabecera TCP
4.3 Conexiones TCP
4.3.1 Establecimiento
4.3.2 Transferencia
4.3.3 Finalización
4.3.4 Diagrama de transición de estados TCP
4.4 Transferencia interactiva
4.4.1 Confirmación retrasada (delayed ACK)
4.4.2 Algoritmo de Nagle
4.5 Transferencia masiva
4.5.1 Transferencia normal
4.5.2 Control de flujo
4.5.3 Control de congestión
4.5.4 Producto RTTxBW
4.6 Fiabilidad en TCP
4.6.1 Timeouts y retransmisiones
4.6.2 Temporizador de persistencia
4.6.3 Temporizador keepalive
4.7 Fast Retransmit y Fast Recovery
4.8 Versiones de TCP

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 4

Introducción
 Revisados los niveles de enlace y red, el siguiente nivel es el de
transporte.
 El protocolo IP provee un servicio de datagramas no fiable.
 Direccionamiento.
 Encaminamiento.
 Fragmentación y reensamblado.
 Capacidades de manejo de Calidad de Servicio.
 (IPorigen, IPdestino) permiten distinguir una comunicación.
 ¿Qué ocurre si se quiere mantener varias comunicaciones
simultáneas con diferentes aplicaciones en la misma máquina
destino?
 Necesidad de multiplexar varias comunicaciones sobre el mismo nivel
de red IP.

2
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 5

1 Paradigmas de comunicaciones
 Las aplicaciones se implementan tradicionalmente sobre el nivel de
transporte (UDP o TCP).
 Las aplicaciones hacen uso de los servicios proporcionados por el nivel
de transporte.
 Existen APIs que proporciona el sistema operativo para el acceso a
las funciones del nivel de transporte
 Sockets BSD
 Existen diferentes estrategias o paradigmas de comunicación a la
hora de distribuir la responsabilidad de la comunicación:
 Cliente/Servidor
 P2P
 Híbridos

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 6

1.1 Paradigma cliente/servidor


 Cliente: requieren un servicio.
 Normalmente inicia la comunicación y la finaliza.
 Servidor: prestan un servicio.
 Normalmente atiende la comunicación iniciada por el cliente.
 Patrón típico de petición-respuesta SERVIDOR

 Cliente: envía solicitud y recibe respuesta.


 Servidor: recibe solicitud, la procesa y envía respuesta.

CLIENTE 4

CLIENTE 1

CLIENTE 3

 Comunicación asimétrica: CLIENTE 2


 Alta carga del servidor
 Necesidad de elevado ancho de banda en la red de acceso al servidor

3
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 7

1.2 Paradigma Peer-to-Peer (P2P)


 Igual-a-igual, par-a-par, todos los nodos son clientes y servidores
simultáneamente.
 Todos los nodos son funcionalmente iguales.
 Popularidad de aplicaciones de intercambio de ficheros basadas en
P2P, superando incluso al tráfico generado por la web.
 Ventajas de P2P:
 Alta escalabilidad: la información se intercambia directamente entre los
usuarios finales sin pasar por un servidor intermedio. Se dispone de los
recursos (ancho de banda, almacenamiento y CPU) de miles de nodos.

PEER

PEER

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 8

2 Multiplexación por puerto


 El puerto identifica a la aplicación corriendo en determinada
máquina.
 El par (IP, puerto) se denomina socket e identifica unívocamente a
un proceso de aplicación en una máquina que puede enviar/recibir
datos.

4
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 9

Multiplexación por puerto


 La aplicación escuchando en un puerto recibirá todos los paquetes
dirigidos a esa (IP, puerto, nivel de transporte).
 Puerto, identificador de 16bits: 1 a 65535, el 0 no se utiliza.
 Puertos bien conocidos: <1024, registrados por la ICANN identifican el
tipo de servicio normalmente.
 Puertos UDP típicos: 7 Echo, 13 Daytime, 53 DNS, 69 TFTP, 123 NTP,
161/162 SNMP, etc.
 Puertos TCP típicos: 20/21 FTP, 23 Telnet, 25 SMTP, 53 DNS, 80 HTTP,
110 POP3, etc.
 Lista completa de puertos en el fichero /etc/services en Linux.
 Puertos efímeros: se escogen por encima del 1024 sin que colisionen
con uno ya existente.
 Envío de un datagrama a un puerto sin aplicación escuchando
devuelve:
 En el caso de UDP: ICMP de error de puerto inalcanzable.
 En el caso de TCP: mensaje de RESET.

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 10

Multiplexación por puerto


 Puerto bidireccional: transmisión/recepción.
 Buffers de entrada/salida de tamaño configurable por el sistema
operativo.

5
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 11

3 UDP RFC768(STD6)

 User Datagram Protocol


 UDP es un protocolo de nivel de transporte: se encapsula por
encima de IP (cabecera IP con campo protocol=17).
 Ofrece un servicio de datagramas (no orientado a conexión). Cada
datagrama enviado es independiente.
 1 write() de la aplicación  1 datagrama UDP  1 datagrama IP (o
varios si hay fragmentación).
 La aplicación determina el tamaño de datos de cada datagrama UDP
(payload).
 Si es mayor que la MTU de la red sufrirá fragmentación.
 No buffered, UDP acepta datos y los transmite inmediatamente
(siempre que los niveles inferiores se lo permitan).
 Habitualmente menos del 5-10% del tráfico total de redes de área
local o troncales es UDP. El resto del tráfico es mayoritariamente
TCP.

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 12

Características UDP
 Deficiencias cubiertas por otros niveles de transporte:
 UDP no es fiable
 Los paquetes se pueden perder.
 Los paquetes se pueden entregar fuera de orden.
 UDP no incorpora mecanismos de control de flujo y congestión
 La aplicación ha de implementarlos.
 Si todas las aplicaciones de una red fueran UDP y empezasen a mandar a
elevadas tasas, se producirían desbordamientos en las colas de los routers
sin ningún tipo de control.

 UDP ofrece:
 Multiplexación de aplicaciones gracias al uso de puertos.
 Checksum del mensaje.

6
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 13

3.1 Cabecera UDP

 Source/Destination port (16bits)


 Length (16bits): longitud total de la cabecera UDP+datos en bytes.
Valor máximo: 216-1=65535, pero el campo longitud de la cabecera
IP también tiene este máximo, por lo que el mayor tamaño posible
de datos UDP será: 65535-20(IP)-8(UDP) = 65507 bytes.
 Checksum (16bits): calculado como el CRC de IP en palabras de 16
bits aplicado sobre
 cabecera UDP
 datos UDP: se hace padding con 0’s hasta múltiplo de 16bits.
 seudocabecera UDP

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 14

Seudocabecera UDP para el checksum


 Incluye ciertos campos de la cabecera IP:
 IP origen
 IP destino
 Protocolo
 Longitud UDP
 Permite una doble comprobación de que los datos han llegado al
destino adecuado.

7
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 15

3.2 Cuándo usar UDP


 La falta de fiabilidad y segmentación supone más tareas para la
aplicación.
 Sin embargo, UDP es:
 Rápido, no hay fase de establecimiento de conexión.
 Ligero, supone poca sobrecarga de protocolo (8 bytes).

 Será por tanto útil para:


 Aplicaciones de control y gestión.
 Aplicaciones de difusión.
 Aplicaciones de tiempo real.

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 16

Cuándo usar UDP


 Aplicaciones de control y gestión
 Requieren normalmente poco intercambio de información, del tipo
petición-respuesta.
 Los paquetes son pequeños. Dependiendo de la aplicación pueden
generarse en gran número.
 UDP evita el coste de apertura y cierre de conexiones TCP.

 Aplicaciones de difusión
 Necesiten usar direcciones destino Multicast o Broadcast.
 Con TCP no es posible.

8
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 17

Cuándo usar UDP


 Aplicaciones de tiempo real
 Necesitan un control absoluto de los paquetes generados en la red, por
ejemplo, del espaciado entre paquetes.
 El retardo extremo a extremo y el jitter son importantes.
 El buffer en recepción permite ocultar parte del retardo y jitter.
 Pequeñas pérdidas de paquetes son tolerables.
 Algunas de estas pérdidas pueden ser ocultadas por los codecs.
 Ejemplos:
 Aplicaciones de voz sobre IP (VoIP).
 Transmisión de audio/video en tiempo real (la aplicación es la encargada del
control de la comunicación casi en su totalidad). Streaming.

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 18

4 TCP RFC768(STD6)

 Transmission Control Protocol.


 TCP es un protocolo de nivel de transporte encapsulado por encima
de IP (campo protocol=6 de la cabecera IP).
 Ofrece un servicio orientado a conexión, de forma que se establece
un circuito virtual entre extremos. Fases necesarias:
 establecimiento de la conexión.
 transferencia de datos.
 finalización de la conexión.
 Permite el intercambio entre extremos de un stream de bytes, sin
poder marcar mensajes, de forma bidireccional (full-duplex).
write() write() write() read()

 Fiabilidad: garantiza la correcta recepción de los datos mediante


mecanismos de confirmación y retransmisión.

9
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 19

Características TCP
 TCP divide los datos en bloques de tamaño óptimo para ser
transmitidos por la red y llamados segmentos.
 MSS (Maximum Segment Size) será el tamaño máximo de datos del
segmento TCP de tamaño óptimo que estará relacionado con la MTU
del camino y evitar así fragmentación.
 Cada segmento se encapsula en un paquete IP manteniendo la
cabecera TCP.

MSS

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 20

Características TCP
 Incorpora mecanismos de:
 Control de flujo: evitar saturar al receptor (ventana deslizante).
 Control de congestión: evitar saturar la red (ventana de congestión,
umbral de slow-start).
 Multiplexación por puerto
 Se denomina conexión a (IP_origen, puerto_origen, IP_destino,
puerto_destino, ¿protocolo?) = (socket_origen, socket_destino)
 Estos 4 campos identifican unívocamente a todos los segmentos TCP
pertenecientes a la misma conexión.

10
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 21

4.1 Cabecera TCP

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 22

Cabecera TCP
 Puerto origen/destino (16bits)
 Numero de secuencia (32bits)
 Identifica el byte del stream que representa el primer byte de datos de
este segmento. TCP numera cada byte de datos transmitidos con un
número de secuencia.
 El contador se reinicia a 0 después de alcanzar el máximo de 232-1.
 Al establecer la conexión, en el segmento con el flag SYN activado este
campo contiene el nº de secuencia inicial (ISN, Initial Sequence
Number) que la máquina elige de un contador de 32 bits que se
incrementa cada 4 s. Esto permite no confundir segmentos antiguos
de una conexión pasada como de esta.
 Este segmento de SYN consume un nº de secuencia por lo que el
primer byte de datos reales comienza en ISN+1. El segmento de FIN
también consumirá un nº de secuencia.

11
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 23

Cabecera TCP
 Número de confirmación (32bits)
 Contiene el siguiente número de secuencia que el emisor de la
confirmación espera recibir: con ello confirma todos los bytes recibidos
hasta el nº secuencia=(nºconfirmación - 1).
 Este campo es válido sólo si el flag ACK está activado.
 Como los campos de confirmación están incluidos en la cabecera
básica no supone un coste extra activarlo. Normalmente activado en la
fase de intercambio de datos.
 Full-duplex, cada extremo debe llevar cuenta de su nº de secuencia y
su nº de confirmación.
 Longitud cabecera (4bits)
 Tamaño de la cabecera TCP en palabras de 32 bits para identificar así
el tamaño variable de los campos de opciones.
 Reservados (6 bits)
 No utilizados.

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 24

Cabecera TCP
 Flags (6bits)

 URG: Urgent
 Comunica al otro extremo que se han colocado datos urgentes en este
segmento, y queda en manos del receptor qué hacer.
 El campo “puntero urgente” es válido sólo ahora.
 ACK: Acknowledgement
 Indica que el campo “número de confirmación” es válido.
 PSH: Push
 Notifica al otro extremo para que pase los datos a la aplicación
inmediatamente.
 Hace referencia a datos que habría antes en el buffer receptor y a los
nuevos de este segmento con PSH activado.
 Muchas implementaciones adjuntan PSH automáticamente cuando se vacía
el buffer del transmisor.

12
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 25

Cabecera TCP
 RST: Reset
 Cierra la conexión pasando directamente al estado “closed” (del diagrama
de estados de TCP), sin pasar por la fase de finalización de conexión.
 Todos los segmentos que hubiera en el buffer del receptor se desechan.
 Se puede usar para:
 Cierre brusco de la conexión (unilateral).
 Avisar de que no existe aplicación escuchando en ese puerto.
 SYN: Synchronize
 Sincronizar los nº de secuencia para iniciar la conexión.
 Con SYN activo, el campo de nº de secuencia se interpreta como número
de secuencia inicial (ISN).
 Consume un nº de secuencia aunque no incluye datos.
 FIN: Finish
 El emisor ha terminado de enviar datos.
 Consume un nº de secuencia aunque no incluye datos.

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 26

Cabecera TCP
 Tamaño de ventana (16bits)
 Ventana anunciada por el receptor WR.
 Control de flujo: indica el nº de bytes que el receptor está dispuesto a
aceptar (posee buffer libre) desde el byte especificado por el campo
número de confirmación.
 Tamaño máximo de ventana 216-1=65535 bytes. Existe una opción de
escalado de ventana para aumentar ese límite.
 Puntero urgente (16bits)
 Sólo válido si el flag URG está activado.
 Indica el offset que añadido al nº de secuencia TCP obtiene el nº de
secuencia del último byte urgente.

13
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 27

Cabecera TCP
 Checksum (16bits)
 Se calcula como en IP en palabras de 16 bits aplicado sobre:
 Cabecera TCP
 Datos TCP
 Seudocabecera TCP
 IP origen
 IP destino
 Protocolo
 Longitud TCP

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 28

Cabecera TCP
 Datos TCP (tamaño variable)
 Opcional, no se incluye en paquetes de:
 SYN
 FIN

14
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 29

4.2 Opciones cabecera TCP

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 30

4.2.1 Opción: Fin de opciones


 Indica que:
 No siguen más opciones.
 Lo restante de esa palabra
de 32 bits es basura.
 Los datos comienzan en la
siguiente palabra de 32 bits.

4.2.2 Opción: No operación


 Padding de la cabecera TCP
a palabras de 4 bytes
(exigido por campo longitud).
 Los campos de opciones de
2 o más bytes deben
alinearse a palabras de 4
bytes.

15
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 31

4.2.3 Opción: Máximo tamaño de segmento


 Maximum Segment Size (MSS).
 Normalmente se incluye en el primer segmento intercambiado en la
conexión, el de SYN activado.
 Especifica el tamaño de segmento máximo (campo de datos) que el
receptor desea recibir para evitar fragmentación. Se calcula como:
MSS=MTUcamino - Long.Cab.IP - Long.Cab.TCP
Ej: Ethernet MSS=1500-20-20=1460
 Para calcular la MTU del camino se aplica un mecanismo de
descubrimiento.
 En su defecto se usa la MTU del interfaz directamente conectado.
 Si se desconoce también éste se toma por defecto 536 (576-20-20).

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 32

4.2.4 Opción: Escalado de ventana


 Permite incrementar la capacidad del tamaño de ventana de 16 a 30
bits sin tocar el campo correspondiente de la cabecera TCP.
 Factor escalado:
 ventana final = ventana real * 2factor escalado
 min=0: no escalado.
 max=14: máximo valor de ventana final= 216 * 214
 Esta opción se manda sólo en el paquete de SYN y han de
mandarlo ambos extremos aunque los factores de escalado puedan
ser distintos en cada sentido.
 Si un extremo no manda la opción se supone que no la soporta y no
se usa aunque el otro extremo la haya anunciado.
 El factor de escalado lo elige TCP automáticamente en función del
tamaño de buffer disponible.

16
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 33

4.2.5 Opción: Timestamp


 Permite al emisor adjuntar un timestamp (en cualquier unidad
porque se retorna al emisor) en cada segmento que después el
receptor copiará en el paquete de confirmación, permitiendo al
emisor calcular el RTT por cada ACK recibido. A B

 Debe enviarse en los SYNs iniciales para que RTT


T 1

luego se adjunte en todos los demás paquetes. T 1’

 Casos especiales: A B
T1
 Si se recibe un ACK por 2 segmentos mandados, T2
se incluye copia del timestamp del primero de RTT

esos segmentos. T 1’
A B
 Si se reciben fuera de secuencia, el ACK adjunta T
copia del timestamp del primero que debería haber 1

RTT T2
llegado aunque hayan llegado después en
desorden. T 1’

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 34

Opción: Timestamp

17
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 35

Opción: Timestamp

 Formato cabecera

 PAWS: Protection Against Wrapped Sequence Numbers


 En una red de muy alta velocidad puede ocurrir que al repetirse
cíclicamente los números de secuencia (contador 32 bits) se reciba en
un momento un segmento con un nº de secuencia dentro de los
esperados pero que en realidad es antiguo (pertenece al ciclo de
contador anterior y no ha agotado su TTL).
 Si se incluye la opción TCP de timestamp, este timestamp será menor
en el segmento antiguo con respecto al esperado por lo que se
ignorará. El timestamp no se resetea por lo que no tiene ese problema.

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 36

4.2.5 Opción: SACK


 SACK (Selective Acknowledgment)
 Permite confirmar al receptor aquellos segmentos recibidos sin que
sea necesario que sean consecutivos y sin huecos como el ACK
acumulativo.
 Se consigue evitar que el emisor envíe segmentos duplicados que
ya se recibieron anteriormente.
 Se implementa en 2 opciones:
 SACK-permitted: únicamente se utiliza en la fase de establecimiento
cuando se envía el SYN y el SYN+ACK, para avisar al otro extremo que
se pretende utilizar SACK. Ambos deben señalizar su uso para que
tenga efecto.
 SACK option: de tamaño variable, se utiliza en la fase de transferencia.
Consiste en un listado de bloques que han llegado fuera de orden, con
2 números de 32 bits, que indican respectivamente el comienzo y el
final del bloque recibido.

18
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 37

Opción: SACK

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 38

Opción: SACK
 Ejemplo, segmentos 3, 4 y 5 fuera de orden

19
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 39

Opción: SACK
 Ejemplo, segmentos 4 duplicado

REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 40

Resumen
 Paradigmas:
 Cliente/Servidor
 P2P
 Multiplexación de aplicaciones gracias al uso de puertos.
 UDP ofrece un servicio de datagramas (no orientado a conexión)
 No es fiable.
 No incorpora mecanismos de control de flujo y congestión.
 TCP ofrece un servicio orientado a conexión.
 De intercambio entre extremos de un stream de bytes..
 Dividiendo los datos en bloques de tamaño óptimo: MSS.
 Fiable.
 Con control de flujo.
 Con control de congestión.
 La cabecera TCP incorpora multitud de campos para soportar la
complejidad del protocolo.

20
REDES DE ORDENADORES
Área de Ingeniería Telemática Capítulo 4: TCP avanzado 41

Bibliografía
 [Forouzan]
 Capítulo 11
 Capítulo 12, secciones 12.1-12.3 y 12.14
 [Stevens]
 Capítulo 11
 Capítulo 17
 [Comer]
 Capítulo 12
 Capítulo 13, secciones 13.1-13.4 y 13.11
 [Kurose]
 Capítulo 3, sección 3.3, 3.5.1-3.5.2
 [Tanenbaum]
 Capítulo 6, sección 6.4

21

También podría gustarte