El Protocolo de control de transmisión es el protocolo de capa de transporte más común. Funciona junto con IP y brinda un servicio de transporte confiable entre procesos utilizando el servicio de capa de red proporcionado por el protocolo IP.
Los diversos servicios proporcionados por TCP a la capa de aplicación son los siguientes:
- Comunicación de proceso a proceso:
TCP proporciona una comunicación de proceso a proceso, es decir, la transferencia de datos que tiene lugar entre procesos individuales que se ejecutan en sistemas finales. Esto se hace usando números de puerto o direcciones de puerto. Los números de puerto tienen una longitud de 16 bits que ayudan a identificar qué proceso está enviando o recibiendo datos en un host.
- Orientado a flujo:
esto significa que los datos se envían y reciben como un flujo de bytes (a diferencia de UDP o IP que divide los bits en datagramas o paquetes). Sin embargo, la capa de red, que brinda servicio al TCP, envía paquetes de información, no flujos de bytes. Por lo tanto, TCP agrupa una cantidad de bytes en un segmento y agrega un encabezado a cada uno de estos segmentos y luego entrega estos segmentos a la capa de red. En la capa de red, cada uno de estos segmentos se encapsula en un paquete IP para su transmisión. El encabezado TCP tiene información que se requiere para fines de control que se discutirá junto con la estructura del segmento.
- Servicio full-duplex:
esto significa que la comunicación puede tener lugar en ambas direcciones al mismo tiempo.
- Servicio orientado a la conexión: a
diferencia de UDP, TCP proporciona un servicio orientado a la conexión. Define 3 fases diferentes:- Establecimiento de conexión
- Transferencia de datos
- Terminación de conexión
- Confiabilidad:
TCP es confiable, ya que utiliza la suma de verificación para la detección de errores, los intentos de recuperar paquetes perdidos o corruptos mediante la retransmisión, la política de reconocimiento y los temporizadores. Utiliza características como el número de byte y el número de secuencia y el número de reconocimiento para garantizar la confiabilidad. Además, utiliza mecanismos de control de congestión.
- Multiplexación:
TCP realiza la multiplexación y la demultiplexación en los extremos del remitente y el receptor, respectivamente, ya que se pueden establecer varias conexiones lógicas entre los números de puerto a través de una conexión física.
Número de byte, número de secuencia y número de acuse de recibo:
todos los bytes de datos que se van a transmitir están numerados y el comienzo de esta numeración es arbitrario. Se asignan números de secuencia a los segmentos para volver a ensamblar los bytes en el extremo del receptor incluso si llegan en un orden diferente. El número de secuencia de un segmento es el número de byte del primer byte que se envía. Se requiere el número de reconocimiento ya que TCP proporciona un servicio de dúplex completo. El número de acuse de recibo es el número de byte siguiente que el receptor espera recibir y que también proporciona acuse de recibo de los bytes anteriores.
Ejemplo:
En este ejemplo, vemos que A envía el acuse de recibo número 1001, lo que significa que ha recibido bytes de datos hasta el byte número 1000 y espera recibir 1001 a continuación, por lo tanto, B envía bytes de datos a partir del 1001. De manera similar, dado que B ha recibido bytes de datos hasta el byte número 13001 después de la primera transferencia de datos de A a B, por lo tanto, B envía el número de acuse de recibo 13002, el número de byte que espera recibir de A a continuación.
Estructura del segmento TCP:
un segmento TCP consta de bytes de datos que se enviarán y un encabezado que TCP agregará a los datos, como se muestra:
El encabezado de un segmento TCP puede oscilar entre 20 y 60 bytes. 40 bytes son para opciones. Si no hay opciones, un encabezado tiene 20 bytes; de lo contrario, puede tener un máximo de 60 bytes.
Campos de encabezado:
- Dirección del puerto de origen:
un campo de 16 bits que contiene la dirección del puerto de la aplicación que envía el segmento de datos.
- Dirección del puerto de destino:
un campo de 16 bits que contiene la dirección del puerto de la aplicación en el host que recibe el segmento de datos.
- Número de secuencia:
un campo de 32 bits que contiene el número de secuencia, es decir, el número de byte del primer byte que se envía en ese segmento en particular. Se utiliza para reensamblar el mensaje en el extremo receptor de los segmentos que se reciben desordenados.
- Número de reconocimiento:
un campo de 32 bits que contiene el número de reconocimiento, es decir, el número de byte que el receptor espera recibir a continuación. Es un reconocimiento de que los bytes anteriores se recibieron con éxito.
- Longitud del encabezado (HLEN):
este es un campo de 4 bits que indica la longitud del encabezado TCP mediante una cantidad de palabras de 4 bytes en el encabezado, es decir, si el encabezado tiene 20 bytes (longitud mínima del encabezado TCP), entonces esto el campo contendrá 5 (porque 5 x 4 = 20) y la longitud máxima: 60 bytes, luego contendrá el valor 15 (porque 15 x 4 = 60). Por lo tanto, el valor de este campo siempre está entre 5 y 15.
- Indicadores de control:
estos son 6 bits de control de 1 bit que controlan el establecimiento de la conexión, la terminación de la conexión, el aborto de la conexión, el control de flujo, el modo de transferencia, etc. Su función es:- URG: puntero urgente es válido
- ACK: el número de acuse de recibo es válido (se utiliza en caso de acuse de recibo acumulativo)
- PSH: Solicitud de empuje
- RST: restablecer la conexión
- SYN: Sincronizar números de secuencia
- FIN: terminar la conexión
- Tamaño de la ventana:
este campo indica el tamaño de la ventana del TCP de envío en bytes.
- Suma de comprobación:
este campo contiene la suma de comprobación para el control de errores. Es obligatorio en TCP a diferencia de UDP.
- Puntero urgente:
este campo (válido solo si se establece el indicador de control URG) se utiliza para señalar los datos que se requieren con urgencia y que deben llegar al proceso de recepción lo antes posible. El valor de este campo se suma al número de secuencia para obtener el número de byte del último byte urgente.
Conexión TCP:
TCP está orientado a la conexión. Una conexión TCP se establece mediante un protocolo de enlace de 3 vías .