DCN - Protocolo de control de transmisión

El Protocolo de control de transmisión (TCP) es uno de los protocolos más importantes del conjunto de protocolos de Internet. Es el protocolo más utilizado para la transmisión de datos en redes de comunicación como Internet.

Caracteristicas

  • TCP es un protocolo confiable. Es decir, el receptor siempre envía un acuse de recibo positivo o negativo sobre el paquete de datos al remitente, de modo que el remitente siempre tiene una pista clara sobre si el paquete de datos llegó al destino o si necesita reenviarlo.

  • TCP garantiza que los datos lleguen al destino previsto en el mismo orden en que se enviaron.

  • TCP está orientado a la conexión. TCP requiere que se establezca una conexión entre dos puntos remotos antes de enviar datos reales.

  • TCP proporciona un mecanismo de recuperación y verificación de errores.

  • TCP proporciona comunicación de un extremo a otro.

  • TCP proporciona control de flujo y calidad de servicio.

  • TCP opera en modo punto a punto Cliente / Servidor.

  • TCP proporciona un servidor full duplex, es decir, puede realizar funciones tanto de receptor como de remitente.

Encabezamiento

La longitud del encabezado TCP tiene un mínimo de 20 bytes y un máximo de 60 bytes.

  • Source Port (16-bits)  - Identifica el puerto de origen del proceso de la aplicación en el dispositivo de envío.

  • Destination Port (16-bits) - Identifica el puerto de destino del proceso de aplicación en el dispositivo receptor.

  • Sequence Number (32-bits) - Número de secuencia de bytes de datos de un segmento en una sesión.

  • Acknowledgement Number (32-bits)  - Cuando se establece el indicador ACK, este número contiene el siguiente número de secuencia del byte de datos esperado y funciona como reconocimiento de los datos recibidos anteriormente.

  • Data Offset (4-bits)  - Este campo implica tanto el tamaño del encabezado TCP (palabras de 32 bits) como el desplazamiento de los datos en el paquete actual en todo el segmento TCP.

  • Reserved (3-bits)  - Reservado para uso futuro y todos se establecen en cero de forma predeterminada.

  • Flags (1-bit each)

    • NS - El proceso de señalización de notificación de congestión explícita utiliza el bit Nonce Sum.

    • CWR - Cuando un host recibe un paquete con el bit ECE establecido, establece Congestion Windows Reduced para reconocer que ECE recibió.

    • ECE -Tiene dos significados:

      • Si el bit SYN está claro a 0, entonces ECE significa que el paquete IP tiene su bit CE (experiencia de congestión) establecido.

      • Si el bit SYN se establece en 1, ECE significa que el dispositivo es compatible con ECT.

    • URG - Indica que el campo de puntero urgente tiene datos importantes y debe procesarse.

    • ACK- Indica que el campo Reconocimiento tiene importancia. Si ACK se pone a 0, indica que el paquete no contiene ningún reconocimiento.

    • PSH - Cuando se establece, es una solicitud a la estación receptora para PUSH de datos (tan pronto como lleguen) a la aplicación receptora sin almacenarlos en búfer.

    • RST - La bandera de reinicio tiene las siguientes características:

      • Se utiliza para rechazar una conexión entrante.

      • Se utiliza para rechazar un segmento.

      • Se utiliza para reiniciar una conexión.

    • SYN - Esta bandera se utiliza para configurar una conexión entre hosts.

    • FIN- Esta bandera se utiliza para liberar una conexión y no se intercambian más datos a partir de entonces. Debido a que los paquetes con indicadores SYN y FIN tienen números de secuencia, se procesan en el orden correcto.

  • Windows Size  - Este campo se utiliza para el control de flujo entre dos estaciones e indica la cantidad de búfer (en bytes) que el receptor ha asignado para un segmento, es decir, cuántos datos espera el receptor.

  • Checksum - Este campo contiene la suma de comprobación de encabezados, datos y pseudo encabezados.

  • Urgent Pointer  - Apunta al byte de datos urgentes si la bandera URG está configurada en 1.

  • Options  - Facilita opciones adicionales que no están cubiertas por el encabezado regular. El campo de opción siempre se describe en palabras de 32 bits. Si este campo contiene datos de menos de 32 bits, el relleno se utiliza para cubrir los bits restantes para alcanzar el límite de 32 bits.

Direccionamiento

La comunicación TCP entre dos hosts remotos se realiza mediante números de puerto (TSAP). Los números de puertos pueden oscilar entre 0 y 65535, que se dividen como:

  • Puertos del sistema (0-1023)
  • Puertos de usuario (1024 - 49151)
  • Puertos privados / dinámicos (49152 - 65535)

Gestión de conexiones

La comunicación TCP funciona en el modelo Servidor / Cliente. El cliente inicia la conexión y el servidor la acepta o la rechaza. El protocolo de enlace de tres vías se utiliza para la gestión de la conexión.

Establecimiento

El cliente inicia la conexión y envía el segmento con un número de secuencia. El servidor lo reconoce con su propio número de secuencia y ACK del segmento del cliente, que es uno más que el número de secuencia del cliente. El cliente después de recibir un ACK de su segmento envía un acuse de recibo de la respuesta del servidor.

Lanzamiento

Tanto el servidor como el cliente pueden enviar un segmento TCP con el indicador FIN establecido en 1. Cuando el extremo receptor responde con ACKnowledging FIN, esa dirección de comunicación TCP se cierra y se libera la conexión.

Gestión de ancho de banda

TCP utiliza el concepto de tamaño de ventana para adaptarse a la necesidad de gestión del ancho de banda. El tamaño de la ventana le dice al remitente en el extremo remoto, el número de segmentos de bytes de datos que el receptor en este extremo puede recibir. TCP usa la fase de inicio lento usando el tamaño de ventana 1 y aumenta el tamaño de la ventana exponencialmente después de cada comunicación exitosa.

Por ejemplo, el cliente usa ventanas de tamaño 2 y envía 2 bytes de datos. Cuando se recibe el acuse de recibo de este segmento, el tamaño de la ventana se duplica a 4 y el siguiente segmento enviado tendrá una longitud de 4 bytes de datos. Cuando se recibe el acuse de recibo del segmento de datos de 4 bytes, el cliente establece el tamaño de la ventana en 8 y así sucesivamente.

Si se pierde un acuse de recibo, es decir, se pierden datos en la red de tránsito o se recibe NACK, el tamaño de la ventana se reduce a la mitad y la fase de inicio lento comienza de nuevo.

Control de errores y control de flujo

TCP utiliza números de puerto para saber qué proceso de aplicación necesita para transferir el segmento de datos. Junto con eso, utiliza números de secuencia para sincronizarse con el host remoto. Todos los segmentos de datos se envían y reciben con números de secuencia. El remitente sabe qué último segmento de datos recibió el receptor cuando recibe ACK. El receptor conoce el último segmento enviado por el remitente haciendo referencia al número de secuencia del paquete recibido recientemente.

Si el número de secuencia de un segmento recibido recientemente no coincide con el número de secuencia que el receptor esperaba, entonces se descarta y se envía NACK. Si llegan dos segmentos con el mismo número de secuencia, el valor de la marca de tiempo de TCP se compara para tomar una decisión.

Multiplexación

La técnica para combinar dos o más flujos de datos en una sesión se denomina multiplexación. Cuando un cliente TCP inicializa una conexión con el servidor, siempre se refiere a un número de puerto bien definido que indica el proceso de aplicación. El propio cliente utiliza un número de puerto generado aleatoriamente de grupos de números de puerto privados.

Al utilizar TCP Multiplexing, un cliente puede comunicarse con varios procesos de aplicación diferentes en una sola sesión. Por ejemplo, un cliente solicita una página web que a su vez contiene diferentes tipos de datos (HTTP, SMTP, FTP, etc.), el tiempo de espera de la sesión TCP aumenta y la sesión se mantiene abierta durante más tiempo para que la sobrecarga del protocolo de enlace de tres vías pueda ser evitado.

Esto permite que el sistema cliente reciba múltiples conexiones a través de una sola conexión virtual. Estas conexiones virtuales no son buenas para los servidores si el tiempo de espera es demasiado largo.

Control de congestión

Cuando se envía una gran cantidad de datos al sistema que no es capaz de manejarlos, se produce una congestión. TCP controla la congestión mediante un mecanismo de ventana. TCP establece un tamaño de ventana que le dice al otro extremo cuánto segmento de datos enviar. TCP puede utilizar tres algoritmos para el control de la congestión:

  • Aumento aditivo, disminución multiplicativa

  • Comienzo lento

  • Reacción del tiempo de espera

Gestión del temporizador

TCP utiliza diferentes tipos de temporizadores para controlar y gestionar varias tareas:

Temporizador para mantener vivo:

  • Este temporizador se utiliza para verificar la integridad y validez de una conexión.

  • Cuando expira el tiempo de mantenimiento, el host envía una sonda para verificar si la conexión aún existe.

Temporizador de retransmisión:

  • Este temporizador mantiene la sesión con estado de los datos enviados.

  • Si el acuse de recibo de los datos enviados no se recibe dentro del tiempo de retransmisión, el segmento de datos se envía de nuevo.

Temporizador de persistencia:

  • La sesión TCP puede ser pausada por cualquiera de los hosts enviando Window Size 0.

  • Para reanudar la sesión, un anfitrión debe enviar Tamaño de ventana con un valor mayor.

  • Si este segmento nunca llega al otro extremo, ambos extremos pueden esperar el uno al otro durante un tiempo infinito.

  • Cuando expira el temporizador de persistencia, el host reenvía el tamaño de su ventana para informar al otro extremo.

  • Persist Timer ayuda a evitar interbloqueos en la comunicación.

Espera temporizada:

  • Después de liberar una conexión, cualquiera de los hosts espera un tiempo de espera temporizada para terminar la conexión por completo.

  • Esto es para asegurarse de que el otro extremo haya recibido el acuse de recibo de su solicitud de terminación de conexión.

  • El tiempo de espera puede ser de un máximo de 240 segundos (4 minutos).

Recuperación de accidentes

TCP es un protocolo muy confiable. Proporciona un número de secuencia a cada byte enviado en segmento. Proporciona el mecanismo de retroalimentación, es decir, cuando un host recibe un paquete, está vinculado a ACK que el paquete tiene el siguiente número de secuencia esperado (si no es el último segmento).

Cuando un servidor TCP bloquea la comunicación a mitad de camino y reinicia su proceso, envía una transmisión TPDU a todos sus hosts. A continuación, los hosts pueden enviar el último segmento de datos que nunca se dejó de reconocer y continuar.