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
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 puerto | Aplicación |
20 | FTP datos |
21 | FTP control |
22 | SSH |
23 | Telnet |
25 | SMTP |
53 | DNS |
80 | HTTP (WWW) |
110 | POP3 |
443 | SSL |
Cómo funciona TCP
Multiplexación Utilizando Números de Puerto 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:
- Una dirección IP
- Un protocolo de tranporte
- Un número de puerto
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).
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
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
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.
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.
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.
BUENAS TARDES MI ESTIMADO.
ESTE DOCUMENTO LLEGA HASTA EL VI O HAY MAS MATERIAL QUE FALTA PARA AGREGAR.
Hola Frank, no se porqué me quedó perdido tu mensaje, si bien lo aprobé para publicar se ve que nunca te contesté.
Sobre tu consulta, el curso abarca aun más temas, de hecho cuando hiciste la consulta llegaba hasta la Parte VI y hoy ya esta finalizada la parte VIII. Esto contempla todo el Volumen 1 del curso, en breve comenzaré con el Volumen 2 que es la última parte para completar todo el curso.
Puedes seguir el progreso por las redes sociales Twitter o Facebook del sitio web o suscribiéndote a la newsletter donde envío un email entre tanto con información y actualizaciones del avance del curso.