TCP: Protocolo de Control de Protocolo de Control de Transmisión
Introducción
Constituye el segundo servicio más conocido y empleado de los protocolos TCP/IP.
Es un protocolo de nivel de transporte.
Brinda una entrega de flujo confiable.
Ofrece servicio orientado a conexión.
Entrega confiable
Orientación de flujo: El servicio de TCP pasa al proceso destino la misma secuencia
de octetos que le pasa el proceso fuente.
Conexión de Circuito virtual: Antes de la transferencia de datos se
establece una conexión entre los niveles de transporte y entre los procesos que se
comunican y ambos acuerdan la comunicación
Transferencia con memoria intermedia: El S/W del protocolo puede dividir el flujo
en paquetes, independientemente de las piezas que transfiera el programa de
aplicación.
Flujo no estructurado: El servicio de flujo de TCP no está obligado a formar flujos
estructurados de datos (no entiende contenido de datos).
Conexión Full Duplex: Las conexiones de TCP permiten la transferencia concurrente en
ambas direcciones. Junto a los datos en un sentido viajan las confirmaciones de la
comunicación del sentido contrario (piggybacking)
Posición de TCP en la estructura de capas estructura de capas. El TCP proporciona un servicio
de flujo confiable, mientras que el UDP proporciona un servicio de entrega de datagramas
no confiable. Los programas de aplicación emplean uno de ellos según sus requerimientos.
¿Qué brinda TCP?
TCP especifica el formato de datos y los acuses de recibo para lograr una transferencia
confiable.
Procedimientos de las computadoras para asegurarse que los datos lleguen correctos.
Distingue el camino correcto entre muchos destinos en una misma máquina.
Resuelve errores de pérdida y duplicación de paquetes.
Procedimientos para el establecimiento y liberación de conexiones.
Problemas a resolver por TCP
El bloque transmitido puede ser fragmentado durante la transmisión.
Los datagramas que portan los bloques pueden tomar rutas diferentes y llegar al
destino desordenados.
Pueden sufrir demoras en el trayecto y ser necesarias las retransmisiones, por lo que
pudieran llegar duplicados.
Pueden encontrar congestión en la red, demorarse y deben contribuir a la
recuperación de la congestión.
Puertos, conexiones y puntos extremos
TCP identifica los puntos extremos de una comunicación a través del concepto de
conexión.
Una conexión queda definida por un par de puntos extremos.
Cada punto extremo queda definido por un par de números enteros (host, puerto)
(socket).
Ejemplo:
Punto extremo ([Link], 25)
La abstracción de conexión permite que varias conexiones compartan un punto
extremo.
Varias conexiones en la misma máquina pueden compartir un número de puerto
común.
Ejemplo: pueden mantenerse activas simultáneamente las conexiones:
([Link], 1184) y ([Link], 53)
([Link], 10) y ([Link], 53)
Gracias a que TCP asocia los mensajes entrantes con conexiones y no con puerto de protocolo.
Aperturas pasivas y activas
Apertura activa: realizada por la aplicación que solicita a su sistema operativo el
establecimiento de una conexión.
Apertura pasiva: realizada por la aplicación que contacta a su sistema operativo
para aceptar una conexión entrante.
Números de Puerto de TCP.
TCP combina asignación estática y dinámica de puertos.
Asignación estática de puertos bien conocidos para servicios llamados con frecuencia,
tales como correo electrónico, (puerto 25).
Asignación de puerto dinámica conforme las aplicaciones lo necesiten para otras
aplicaciones menos empleadas.
Ventana deslizante. Segmentos
Con el flujo de datos que recibe TCP del programa de aplicación forma segmentos para
su transmisión.
Cada segmento viaja dentro de un datagrama IP.
Los segmentos se transmiten empleando un algoritmo de ventana deslizante para
ejercer el control de flujo.
El mecanismo de ventana deslizante opera a nivel de octeto no a nivel de segmento.
Los octetos de flujo se numeran de forma secuencial y el transmisor guarda tres
apuntadores asociados a cada conexión.
Tamaño de ventana variable
La ventana deslizante es de tamaño variable.
Cada acuse de recibo contiene cuantos octetos adicionales de datos está preparado el
receptor para aceptar en función del espacio de buffer disponible.
Si la memoria intermedia del receptor se llena, éste anuncia una ventana más pequeña
o incluso de cero, con lo que detiene el envío del transmisor.
Aprecie que TCP con su ventana deslizante de tamaño variable brinda control de
flujo extremo-extremo pero no controla la congestión en puntos intermedios de la red.
Formato de segmento TCP.
Tamaño
Tamaño máximo de los segmentos
TCP utiliza el campo de OPCION para negociar con el otro extremo el tamaño
máximo de segmento, constituye el uso fundamental del campo OPCIÓN.
Para extremos en una misma red local la solución es simple, alcanzar el MTU de la red.
Para extremos en redes diferentes pueden intentar descubrir la MTU mínima en el
camino o escoger un tamaño por defecto de 536. (Máx. del datagrama IP -
encabezados).
El tamaño óptimo de segmento es el que hace que los segmentos sean tan grandes
como sea posible sin requerir fragmentación del datagrama. (¿Por que?).
Tiempo límite y Retransmisión.
Cada vez que se envía un segmento TCP el emisor arranca un temporizador con un
tiempo límite de espera del acuse de recibo.
Si expira el temporizador sin la llegada del acuse, el transmisor estima que el segmento
se ha perdido y lo retransmite.
El tiempo necesario para que un segmento viaje al destino y regrese el acuse es
variable, dependiendo de múltiples factores.
TCP calcula para cada segmento el tiempo de viaje redondo. (Llegada del Acuse -
Envío).
TCP maneja tiempos límites variables con el empleo de un algoritmo adaptable.
Ajustar los tiempos límites usando los tiempos de viaje redondos de los
paquetes retransmitidos conduce con frecuencia a errores.
Algoritmo de Karn: Computar tiempo de viaje redondo ignorando los
segmentos retransmitidos pero utilizando una estrategia de incrementar los
tiempos límites (New_timeout= timeout*g ) por cada retransmisión, manteniendo
hasta que se obtenga un ejemplo válido (sin retransmisión).
Respuesta al congestionamiento.
Aunque el intercambio de información de TCP es sólo entre los extremos, éste también
debe reaccionar ante el congestionamiento de la red.
El congestionamiento aumenta los retrasos y en el peor de los casos se pierden
datagramas por descarte en los routers.
Las retransmisiones empeoran la congestión.
TCP evita el colapso reduciendo la velocidad de transmisión.
Para control de congestión TCP emplea dos técnicas: la disminución multiplicativa y el
arranque lento.
Objetivo: Reducción rápida del tráfico ante congestión.
TCP define la ventana de congestionamiento:
Ventana permitida = min ( Aviso de ventana, ventana de congestionamiento).
División multiplicativa : Cuando se pierde un segmento reducir a la mitad la ventana de
congestionamiento (hasta un mínimo de un segmento). Para los segmentos que están
dentro de la ventana permitida aplicar algoritmos de ajuste de tiempo límite.
Arranque lento: al arrancar tras congestión activar la ventana de congestión con el
tamaño de un segmento y aumentar un segmento cada vez que llegue un acuse de
recibo.
Estas técnicas y otras más permiten un buen desempeño de TCP sin agregar ningún
trabajo computacional significativo al protocolo.
Se logran mejoras en el desempeño en factores de hasta 10.
Resumen TCP
TCP define un servicio de entrega de flujo confiable.
Proporciona conexión full dúplex entre dos aplicaciones.
Segmento es la unidad básica de transferencia.
Ejecuta control de flujo entre los extremos de ventana deslizante con tamaño de ventana
variable.
TCP establece que el receptor anuncia el tamaño de ventana disponible.
Contempla algoritmos para control de congestión y para prevenir el uso de segmentos
pequeños.
Servicios de TRANSPORTE
TDP
Puerto Servicio
11 Usuarios Activos
13 Día y Hora
20 FTP - Data
21 FTP
23 TELNET
25 SMTP
111 SUN RPC
UCP
Puerto Servicio
11 Usuarios Activos
13 Día y Hora
53 Name Server
69 TFTP
111 SUN RPC
161 SNMP Monitor
513 Remote Who