Protocolo TCP

Qué es el Protocolo TCP

TCP es un protocolo que se encuentra en la Capa 4 del Modelo OSI, en ésta capa (capa de transporte) se definen varias funciones siendo la más importante la de recuperación de errores y control de flujo. Los mensajes creados por TCP son llamados segmentos.

Funciones soportadas por TCP

Multiplexación Utilizando Puertos: Permite que lo que llega desde una fuente (como una aplicación) pueda enviar los datos basándose en el número de puerto.

Recuperación de Errores (Confiabilidad): Permite la retransmisión ya que enumera los datos con una secuencia conocida.

Control de Flujo: Evita congestión utilizando un tamaño de ventana, es decir un buffer.

Orientado a Conexión: Establecimiento y finalización de conexión.

Ordena Datos de Transferencia y Segmentación: Ordena los bytes en el mismo orden

Cabecera TCP

Campos de la Cabecera TCP
Campos de la Cabecera TCP

Puerto Origen (16 bits): Identifica el puerto emisor.

Puerto de Destino (16 bits): Identifica el puerto receptor.

Número de secuencia (32 bits): Identifica el byte del flujo de datos enviado por el emisor TCP al receptor TCP.

Número de reconocimiento o acuse de recibo (32 bits): Contiene el valor del siguiente número de secuencia que el emisor del segmento espera recibir.

Offset o Longitud de cabecera (4 bits): Especifica el tamaño de la cabecera en palabras de 32 bits.

Reservado (3 bits): Para uso futuro.

Bits de Bandera o Flag (9 bits): Nueve banderas de 1 bit para distintos propósitos.

Ventana (16 bits): Tamaño de ventana que especifica el número máximo de bytes que pueden ser metidos en el buffer de recepción.

Suma de control o verificación(16 bits): Checksum utilizado para la comprobación de errores tanto en la cabecera como en los datos.

Urgente (16 bits): Cantidad de bytes desde el número de secuencia que indica el lugar donde acaban los datos urgentes.

Aplicaciones que utilizan TCP

Número de puertoAplicación
20FTP datos
21FTP control
22SSH
23Telnet
25SMTP
53DNS
80HTTP (WWW)
110POP3
443SSL

Cómo funciona TCP

Multiplexación Utilizando Números de Puerto TCP

Qué es Multiplexación en TCP
Qué es Multiplexación en TCP

En el siguiente ejemplo podemos ver la comunicación entre dos dispositivos que utilizan diferentes aplicaciones a través de los diferentes puertos según el servicio.

La Multiplexación se base en un concepto llamado socket (zócalo). Un socket consiste en tres cosas:

Donde la solicitud es originada cualquier número de puerto puede ser utilizado.

De esta manera, cada solicitud en un mismo host utiliza diferentes números de puerto, pero un servidor utilizara el mismo número de puerto para todas las conexiones.

Por ejemplo, 50 navegadores web en un mismo host (diferente puertos de origen) puede conectarse a un mismo servidor web, pero el servidor web que tiene conectados 50 hosts a él, tiene un socket y por tanto un solo puerto (puerto 80 para este caso).

Sockets en TCP
Sockets en TCP

El servidor puede decir cuales paquetes son enviados desde uno de los 50 clientes mirando el puerto de origen en el segmento TCP recibido.

Establecimiento y Finalización de Conexión

Establecimiento de conexión TCP

Establecimiento y Finalización de Conexión TCP
Establecimiento y Finalización de Conexión TCP de tres vías (también llamado three-way handshake)

 

El establecimiento de conexión en TCP se realiza por tres vías (también llamado three-way handshake) y se realiza previo a comenzar la transferencia.

La conexión se establece entre dos sockets.

Las señales de conexión TCP utilizan 2 bits dentro del campo bandera (flag) en la cabecera TCP. Las banderas son SYN y ACK.

SYN significa «synchronize the sequence numbers ó del español; sincronizar los números de secuencia» que es necesario para la inicialización en TCP.

Finalización de conexión TCP

Finalización de conexión en TCP
Finalización de conexión en TCP por cuatro vías

La finalización de conexión TCP se realiza por tres vías, es sencilla y utiliza una bandera adicional llamad el bit FIN.

TCP es un protocolo orientado a conexión

Protocolo orientado a conexión: Requiere un intercambio de mensajes antes de comenzar a trasferir o requiere pre-establecer una correlación entre dos puntos finales.

El protocolo no orientado a conexión es lo contrario; no requiere de algún intercambio de mensajes antes de comenzar la transferencia.

Recuperación de Errores y Confiabilidad

Confiabilidad en TCP

TCP provee confiabilidad en la transferencia de datos, llamado también recuperación de errores.

Para poder brindar esa confiabilidad, TCP enumera los bytes utilizando una Secuencia y Reconocimiento (Acknowledgment) de los campos en la cabecera TCP.

TCP logra la confiabilidad en ambas direcciones, utilizando el campo Número de Secuencia para un dirección combinado con el campo Número de Reconocimiento en la dirección contraria.

La siguiente figura nos muestra un ejemplo de cómo el número de secuencia y el número de reconocimiento permite enviar 3000 bytes de datos desde la PC al Servidor Web.

Confiabilidad en la trandferencia de datos en TCP
Confiabilidad en la transferencia de datos en TCP

En la figura se ven los segmentos TCP en orden, de arriba hacia abajo. Por simplicidad todos los mensajes tienen 1000 bytes de datos en la porción de datos del segmento de TCP.

En la figura se puede ver que sólo un mensaje va desde el servidor hacia la PC, es el mensaje de número de reconocimiento que da acuse de recibo.

El valor 4000 para el número de reconocimiento quiere decir «Recibí todos los datos en número de secuencia hasta 4000 o menos, estoy listo para recibir tu byte 4000.» Esta convención de reconocimiento al enumerar el siguiente byte esperado, en lugar del número del último byte recibido, se denomina acuse de recibo.

En éste primer ejemplo no se recupera ningún error, pero nos muestra de una manera simple cómo un host envía datos con números de secuencia para identificar los datos y del otro lado host que lo recibe utiliza el número de reconocimiento de para reconocer los datos.

Para conseguir recuperar errores, TCP utiliza éstas herramientas.

Recuperación de Errores en TCP

Gracias al campo número de secuencia y reconocimiento es que el dispositivo receptor puede avisar si un dato se perdió, pidiéndole al dispositivo que envidio los datos que vuelva a enviarlos y reconoce si el dato enviado llega al destino.

La siguiente figura nos muestra un ejemplo de cómo se puede recuperar datos perdidos. Basándonos en el caso anterior, en éste ejemplo el segundo segmento de TCP falla a través de la red.

Recuperación de Errores en TCP
Recuperación de Errores en TCP

Control de Flujo Utilizando Tamaño de Ventana

El concepto de ventana deja el dispositivo receptor avisarle al transmisor cuantos datos puede recibir en ese momento, así el transmisor transfiere más o menos datos.

El receptor puede cambiar el tamaño de ventana. En la siguiente figura podemos ver un ejemplo de esto.

Control de Flujo Utilizando una Ventana en TCP
Control de Flujo Utilizando una Ventana en TCP

Deja un comentario