Fue desarrollado hace casi cuatro décadas, pero aún así, el protocolo TCP sigue siendo imprescindible para las comunicaciones en internet. En este artículo vemos en qué consiste este protocolo, cuáles son sus características, cómo establece las conexiones entre servidor y cliente, y mucho más.
¿Qué es el protocolo TCP o Transfer Control Protocol?
El Protocolo TCP/IP o Transfer Control Protocol consiste en un acuerdo estandarizado sobre el que se realiza la transmisión de datos entre los participantes de una red informática.
Los programas que forman redes de datos en una red de ordenadores emplean el protocolo TCP para crear conexiones entre sí, de forma que se pueda garantizar el flujo de datos entre las partes. A través de este protocolo se asegura que los datos lleguen a su destino en el mismo orden que se transfirieron y sin errores.
La inmensa mayoría de comunicaciones que se realizan en internet utilizan el protocolo TCP IP, como es el caso de navegadores, programas de intercambio de ficheros, servicios FTP y un largo etcétera.
El origen de este protocolo se sitúa en 1973 y fue desarrollado por Robert E. Kahn y Vinton G. Cerf. Sin embargo, hasta ocho años después no se convirtió en un protocolo estandarizado gracias al documento RFC 793. Lo más sorprendente es que hoy en día sigue vigente.
Características principales
Las principales características del TCP Protocol son:
- Es un protocolo que funciona mediante la conexión mutua entre cliente y servidor.
- Ordena los segmentos provenientes del protocolo IP.
- Monitorea el flujo de los datos y permite evitar la saturación de la red.
- Entrega los datos al protocolo IP en forma de segmentos de longitud variable.
- Permite circular de forma simultánea a la información proveniente de diferentes fuentes.
¿Cómo funcionan las conexiones en un protocolo TCP?
Para saber cómo funciona el protocolo TCP es necesario tener en cuenta que se trata de un estándar que se basa en la transmisión bidireccional de la información.
Imaginemos una comunicación por vía telefónica, en la que tanto el emisor como el receptor establecen una comunicación entre sí. Pues esto sería similar al funcionamiento del TCP.
En este caso, la comunicación se realizaría en base a paquetes o segmentos, que funcionarían como las unidades básicas de transmisión.
Tanto la conexión entre terminales, como la transmisión de los datos, es llevada a cabo por un software TCP, el cual se ejecuta dentro del conjunto de protocolos de red del sistema operativo.
Las aplicaciones de red, como los servidores o los navegadores de internet, cuentan con interfaces que permiten activar este software TCP.
Para establecer la conexión, es necesario que se reconozcan dos puntos de acceso y destino (cliente y servidor). Sin embargo, no importa qué parte hace de cliente y cuál hace de servidor, Lo único que necesita el software TCP para establecer la conexión es que cada una de las partes cuente con una dirección IP y un puerto asignado.
Secuencia de una conexión en un TCP
Una conexión en el protocolo TCP/IP se establece en base a la siguiente secuencia.
En primer lugar, el cliente envía un paquete o segmento SYN (synchonize o sincronizar). Este segmento contiene un número aleatorio que garantiza una transmisión completa y ordenada de la información.
Una vez que el servidor ha recibido al segmento por parte del cliente, debe confirmar su recepción mediante el envío de un segmento SYN ACK (acknowledgement o confirmación). En este se incluye el número de secuencia del cliente +1, y además, se envía un número propio al cliente.
Por último, el cliente recibe el paquete del servidor y confirma su recepción a través de un segmento ACK, que consiste en el número de secuencia del servidor +1.
Componentes del encabezado TCP
El encabezado del protocolo TCP está formado por una serie de componentes. Veamos lo que significan las diferentes secuencias de bits en un segmento TCP:
- Puerto de origen (16 bits): se refiere la aplicación que está en curso en el dispositivo de origen.
- Puerto de destino (16 bits): relativo la aplicación que está en curso curso en el dispositivo de destino.
- Número de secuencia (32 bits): son las secuencias de números que cliente y servidor se envían para que se pueda establecer la comunicación.
- Número de acuse de recibo (32 bits): indica el número de secuencia del siguiente segmento que se espera recibir.
- Margen de datos (4 bits): determina el lugar del segmento donde comienzan los datos.
- Reservado (6 bits): es un campo reservado para futuros usos. Su valor siempre es igual a cero.
- Indicadores (6 bit): Ofrecen información adicional::
- URG: cuando su valor es 1, se trata de un segmento que se ha de procesar de manera urgente.
- ACK: cuando su valor es 1, el segmento consiste en un acuse de recibo.
- PSH: cuando su valor es 1, el paquete procesa los datos sin esperar a completar el segmento
- RST: cuando su valor es 1, se reanuda la conexión.
- SYN: cuando su valor es 1, se solicita un pedido para establecer una conexión.
- FIN: cuando su valor es 1, determina el fin de la conexión..
- Ventana (16 bits): determina la cantidad de bytes que desea recibir el receptor sin acuse de recibo.
- Suma de control (24 bit): verifica la integridad del paquete a través de la comprobación de errores.
- Puntero urgente (16 bits): se utiliza para enviar datos urgentes e indica la ubicación de los datos que siguen a los urgentes.
- Opciones (bits variables): para definir funciones TCP que no forman parte del encabezado general.
- Relleno: su función es asegurar que la longitud de la cabecera sea múltiplo de 32 bits.
¿Cómo interrumpir una conexión de forma controlada?
En el protocolo TCP ambas partes de la comunicación pueden interrumpir la conexión de forma controlada. Incluso, se puede hacer de forma unilateral por una de las partes. Veamos cómo se realiza este proceso:
En primer lugar, el cliente envía un segmento FIN al servidor para notificarle que no desea seguir adelante con la conexión. Este segmento contiene un número de secuencia concreto.
Una vez que recibe el segmento FIN, el servidor envía un segmento ACK al cliente, para corroborar que ha recibido el paquete. Este segmento contiene el mismo número de secuencia que envió el cliente +1.
El cliente confirma la recepción de este paquete, enviando un nuevo segmento ACK al servidor. Este segmento es el mismo número de secuencia que le envío el servidor +1.
Ventajas y desventajas del protocolo de control de transmisión
La principal ventaja que ha convertido al protocolo TCP y IP en un método estandarizado para la transmisión de datos en red, es que se trata de un protocolo que requiere el establecimiento de un canal seguro por ambas partes, y que garantiza el acuso de recibe de la información enviada. Por tanto, se trata de un método fiable, seguro y que asegura un flujo ordenado de los datos y a prueba de errores.
Como puntos mejorables, se trata de un protocolo que puede funcionar de forma demasiado lenta en algunos tipos de redes, sobre todo a causa de la necesidad de confirmar que los segmentos han sido recibidos en tiempo y forma. Por ejemplo, en el caso de las redes inalámbricas, se tiende a perder información a causa de las interferencias producidas por el canal de radio. Esta información se tiene que recuperar para poder entregar el mensaje, lo que pueda causar un retraso en la comunicación.
Los puertos TCP
Los puertos TCP permiten distinguir distintas aplicaciones dentro de una misma máquina, A través del número de puerto se identifican las aplicaciones emisores y receptoras. Esto resulta fundamental, junto a la IP, para que se puede establecer la comunicación entre cliente y servidor.
Cada lado de la conexión tiene asignado un determinado número de puerto. Se puede distinguir entre puertos bien conocidos, registrados o dinámicos. En total existen 65.535 puertos,
Diferencias entre conexión TCP y UDP
Son dos de los más usados para las comunicaciones en red. Sin embargo, existen importantes diferencias entre el protocolo TCP y UDP.
La definición de protocolo UDP podría ser aquel que hace posible que las aplicaciones puedan comunicarse en las capas inferiores del protocolo TCP/IP. Por ejemplo, es empleado en los servidores DNS.
Una de las diferencias entre ambos es que el protocolo UDP permite el envío de datagramas sin necesidad de establecer una conexión previa entre las partes, al contrario que en el protocolo TCP.
Por otro lado, el UDP es un protocolo que no ofrece un control de flujo. Al contrario que en el TCP, no controla que la comunicación se establezca en tiempo y forma. Si un equipo es más rápido que otro, es probable que el equipo más lento colapse y, a causa de ello, se pierda información.
Por último, el protocolo UDP tampoco ofrece un sistema de control de congestión. Si la red está saturada, se perderán paquetes y no se reorganizarán para enviarse de forma ordenada, como sí ocurre en el TCP.
En definitiva, el protocolo TCP es un estándar básico que permite, de forma silenciosa, establecer las comunicaciones necesarias entre los equipos para que los usuarios podamos navegar por internet y utilizar plataformas y servicios en red.