En la capa de transporte, se utilizan dos protocolos principales: TCP y UDP. TCP, el protocolo de control de transmisión, se encarga de garantizar la entrega segura y confiable de los datos, mientras que UDP, el protocolo de datagramas de usuario, se enfoca en la entrega rápida y eficiente de los datos. Ambos protocolos utilizan números de puerto para identificar los procesos en los que se está realizando la comunicación. En el proceso de comunicación de TCP, se establece una conexión entre el emisor y el receptor antes de la transferencia de datos. Por otro lado, la comunicación UDP es no confiable y no requiere una conexión previa.
Transporte de datos
Función de la Capa de Transporte
La capa de aplicación de los programas genera datos que deben intercambiarse entre los hosts de origen y destino. Para esto, se requiere la capa de transporte, la cual se encarga de las comunicaciones lógicas entre aplicaciones que se ejecutan en diferentes hosts. Entre sus funciones se encuentra el establecimiento de sesiones temporales entre dos hosts y la transmisión fiable de información para una aplicación.
Cabe mencionar que la capa de transporte no tiene conocimiento del tipo de host de destino, el medio por el que deben viajar los datos, la ruta tomada por los datos, la congestión en un enlace o el tamaño de la red. En cambio, esta capa incluye dos protocolos: el Protocolo de Control de Transmisión (TCP) y el Protocolo de Datagramas de Usuario (UDP). Ambos protocolos son esenciales para el intercambio de datos entre hosts y aplicaciones de manera segura y eficiente.
Responsabilidades de la Capa de Transporte
La Capa de Transporte tiene varias responsabilidades importantes en el intercambio de datos entre hosts y aplicaciones. Una de ellas es el seguimiento de conversaciones individuales entre los hosts.
Otra de sus funciones es la segmentación de los datos, es decir, dividir los datos en segmentos más pequeños que puedan ser transmitidos con mayor eficiencia. La Capa de Transporte también se encarga del rearmado de segmentos, que consiste en ensamblar los segmentos recibidos en el orden correcto.
Además, esta capa agrega información de encabezado a los datos, incluyendo información de control de flujo y verificación de errores. Por otra parte, es responsable de identificar las aplicaciones a las que se destina la información.
Protocolos de Capa de Transporte
El protocolo IP se enfoca en la estructura, direccionamiento y routing de paquetes, pero no especifica cómo se realiza la entrega o transporte de los mismos.
Por otro lado, los protocolos de la capa de transporte son responsables de administrar los requisitos de fiabilidad de una conversación y especifican cómo transferir mensajes entre hosts. Esta capa incluye dos protocolos importantes: TCP y UDP. TCP es un protocolo de transporte confiable que garantiza la entrega de paquetes y se utiliza para aplicaciones que requieren una transferencia de datos precisa y segura. UDP, por otro lado, es un protocolo de transporte no confiable que se utiliza para aplicaciones que requieren una transferencia de datos rápida y eficiente. En conjunto, la capa de transporte y los protocolos que la conforman son esenciales para el correcto funcionamiento y rendimiento de las redes de computadoras.
Protocolo de Control de Transmisión (TCP)
El protocolo IP se centra únicamente en la estructura, direccionamiento y enrutamiento de paquetes desde el remitente original hasta el destino final, sin garantizar la entrega o determinar si es necesario establecer una conexión entre el remitente y el receptor.
En cambio, el protocolo de transporte TCP es un protocolo confiable y completo que garantiza la entrega de los datos de la aplicación al destino. TCP divide los datos en segmentos y se encarga de rastrear y enumerar los segmentos transmitidos, confirmar los datos recibidos y retransmitir cualquier información no reconocida. Además, TCP secuencia los datos que pueden llegar en un orden incorrecto, envía datos a una velocidad eficiente y establece una conexión entre el remitente y el receptor para mantener el estado de la conversación.
Para llevar a cabo estas operaciones básicas y mantener el estado de la conversación, TCP debe establecer una conexión entre el remitente y el receptor. Es por eso que se le conoce como un protocolo orientado a la conexión.
Protocolo de Datagramas de Usuario (UDP)
El protocolo UDP es más simple que el protocolo TCP y se considera un protocolo de capa de transporte básico. A diferencia de TCP, UDP no proporciona confiabilidad y control de flujo, lo que significa que requiere menos campos de encabezado. Debido a que UDP no administra la confiabilidad y el control de flujo, los datagramas UDP se pueden procesar más rápido que los segmentos TCP.
UDP proporciona las funciones básicas para entregar datagramas o segmentos de datos entre las aplicaciones correspondientes con muy poca sobrecarga y revisión de datos. UDP es un protocolo sin conexión, lo que significa que no requiere una conexión establecida. Además, UDP no realiza un seguimiento de la información enviada o recibida entre el cliente y el servidor, lo que lo convierte en un protocolo sin estado.
UDP también se conoce como un protocolo de entrega de mejor esfuerzo, ya que no hay reconocimiento de que los datos se reciben en el destino. Con UDP, no existen procesos de capa de transporte que informen al emisor si la entrega se realizó correctamente.
Protocolo de la capa de transporte correcto para la aplicación adecuada
UDP es la mejor opción para aplicaciones que pueden tolerar cierta pérdida de datos, pero donde los retrasos en la transmisión son inaceptables. UDP requiere menos sobrecarga de red y es preferible para aplicaciones como Voz sobre IP (VoIP). Para las aplicaciones de solicitud y respuesta donde los datos son mínimos, UDP también se utiliza. El servicio de nombres de dominio (DNS) utiliza UDP para este tipo de transacción.
TCP se utiliza para aplicaciones donde es importante que todos los datos lleguen y puedan ser procesados en su secuencia adecuada. Las aplicaciones como las bases de datos, los navegadores web y los clientes de correo electrónico requieren que todos los datos que se envían lleguen a destino en su formato original.
Los desarrolladores de aplicaciones deben elegir qué tipo de protocolo de transporte es adecuado según los requisitos de las aplicaciones. El vídeo y la voz en tiempo real generalmente usan UDP, pero también pueden usar TCP o ambos. Las aplicaciones que transmiten audio y video almacenado usan TCP, mientras que las aplicaciones que transmiten datos mínimos utilizan UDP. En el caso de una transmisión de vídeo en vivo, donde la pérdida de datos no afectaría significativamente la calidad del vídeo, es preferible utilizar UDP.
Es importante tener en cuenta que si la red no puede admitir el ancho de banda necesario para ver una película a pedido, la aplicación detendrá la reproducción y TCP intentará restablecer la transmisión. Una vez que se restaura un nivel mínimo de ancho de banda, se reanuda la sesión TCP y se reanuda la reproducción de la película.
Descripción general de TCP
Características de TCP
Para entender las diferencias entre TCP y UDP, es necesario comprender cómo cada protocolo implementa funciones de confiabilidad específicas y cómo cada protocolo realiza un seguimiento de las conversaciones.
TCP establece una sesión, negocia y establece una conexión permanente entre los dispositivos de origen y destino antes de reenviar cualquier tráfico. TCP asegura que cada segmento que envía la fuente llega al destino, proporciona entrega en el mismo pedido y admite el control de flujo para evitar la necesidad de retransmitir los datos cuando los recursos del host receptor se ven desbordados.
Encabezado TCP
TCP es un protocolo de estado que realiza un seguimiento del estado de la sesión de comunicación. TCP registra qué información se envió y qué información se reconoció para hacer un seguimiento del estado de una sesión. La sesión comienza con el establecimiento de la sesión y termina con la finalización de la sesión.
Cada segmento TCP agrega 20 bytes (160 bits) de sobrecarga al encapsular los datos de la capa de aplicación. Esta sobrecarga se utiliza para registrar la información necesaria para garantizar que los datos se entreguen de manera confiable y en el orden correcto.
Campos de Encabezado TCP
El encabezado TCP incluye varios campos para permitir la comunicación de extremo a extremo confiable. Algunos de estos campos son:
- Puerto de origen: identifica el puerto de origen del host que está enviando el segmento.
- Puerto de destino: identifica el puerto de destino del host que está recibiendo el segmento.
- Número de secuencia: identifica el número de secuencia del primer byte de datos en el segmento.
- Número de reconocimiento: identifica el número de secuencia del próximo byte de datos que se espera del otro extremo.
- Longitud de cabecera: especifica la longitud de la cabecera TCP en términos de palabras de 32 bits.
- Bandera de control: indica el propósito del segmento, como si es un segmento de solicitud de conexión, un segmento de datos o un segmento de finalización de conexión.
- Ventana de recepción: indica la cantidad de datos que el host receptor está dispuesto a aceptar antes de que se confirme la recepción de los datos.
- Suma de comprobación: proporciona una comprobación de integridad para la cabecera y los datos del segmento.
- Puntero urgente: indica la posición del último byte de datos urgentes en el segmento.
Aplicaciones que utilizan TCP
TCP se utiliza en una amplia variedad de aplicaciones que requieren una entrega confiable y control de flujo. Algunas de las aplicaciones más comunes que utilizan TCP incluyen navegadores web, correo electrónico, transferencias de archivos, bases de datos, aplicaciones de escritorio remoto y aplicaciones de mensajería instantánea. Además, muchas aplicaciones empresariales y de telecomunicaciones también utilizan TCP para garantizar la entrega confiable de datos.
Visión generalde UDP
Características de UDP
UDP es un protocolo de transporte muy simple que se caracteriza principalmente por lo que no hace en comparación con TCP. Algunas de las características de UDP incluyen las siguientes:
- Los datos se reconstruyen en el orden en que se recibieron.
- Los segmentos perdidos no se vuelven a enviar.
- No se establece una sesión antes de la transmisión de datos.
- El emisor no está informado sobre la disponibilidad de recursos en el receptor.
Encabezado UDP
El encabezado UDP consta de 4 campos de 2 bytes cada uno, lo que totaliza 8 bytes. Los campos son los siguientes:
- Puerto de origen: identifica el puerto en el host de origen.
- Puerto de destino: identifica el puerto en el host de destino.
- Longitud: especifica la longitud total del datagrama UDP, incluyendo el encabezado y los datos.
- Suma de comprobación: opcional y se utiliza para detectar errores en el datagrama UDP. Si se utiliza, se calcula en el host de origen y se verifica en el host de destino.
Números de puerto
Comunicaciones Múltiples Separadas
Los protocolos de transporte TCP y UDP utilizan números de puerto para administrar múltiples conversaciones simultáneas entre aplicaciones. El número de puerto de origen está asociado con la aplicación de origen en el host local, mientras que el número de puerto de destino está asociado con la aplicación de destino en el host remoto.
Por ejemplo, cuando un host inicia una solicitud de página web a un servidor web, el host genera dinámicamente un número de puerto de origen para identificar exclusivamente la conversación. Cada solicitud generada por un host utiliza un número de puerto de origen diferente creado dinámicamente, permitiendo varias conversaciones simultáneamente.
En la solicitud, el número de puerto de destino identifica el tipo de servicio solicitado al servidor web. Por ejemplo, cuando un cliente especifica el puerto 80 como puerto de destino, el servidor que recibe el mensaje sabe que se solicitan servicios web.
Pares de Sockets
Los puertos de origen y destino se incluyen en el segmento de los protocolos de transporte TCP y UDP. Estos segmentos se encapsulan dentro de un paquete IP, que contiene las direcciones IP de origen y destino. El término «socket» se refiere a la combinación de la dirección IP y el número de puerto. Los sockets permiten que los procesos en un cliente o servidor se distingan entre sí y diferencien diferentes conexiones a un proceso. El número de puerto de origen actúa como la dirección de retorno para la aplicación que realizó la solicitud, y la capa de transporte realiza un seguimiento de este puerto y de la aplicación para enviar la respuesta correspondiente.
Grupos de números de puerto
Los números de puerto se dividen en tres grupos: puertos bien conocidos, puertos registrados y puertos dinámicos/privados.
Los puertos bien conocidos van del 0 al 1023 y están asignados a servicios específicos. Por ejemplo, el puerto 80 está reservado para el servicio web HTTP.
Los puertos registrados van del 1024 al 49151 y están asignados a aplicaciones específicas que se han registrado en la Corporación de Internet para la Asignación de Nombres y Números (ICANN). Por ejemplo, el puerto 3306 está reservado para la base de datos MySQL.
Los puertos dinámicos/privados van del 49152 al 65535 y están disponibles para su uso por aplicaciones específicas. Cuando una aplicación genera una solicitud, selecciona un número de puerto dinámico/privado para ser utilizado como el puerto de origen.
El comando netstat
El comando netstat es una herramienta de línea de comandos que se utiliza para mostrar información sobre la red y las conexiones de red en un sistema operativo. Con netstat, se pueden ver las conexiones abiertas y los puertos que están siendo utilizados por las aplicaciones en un sistema. Además, netstat también puede mostrar estadísticas sobre el tráfico de red, como el número de paquetes enviados y recibidos, y la cantidad de errores de transmisión.
Proceso de comunicación TCP
Procesos del Servidor TCP
Los procesos del servidor TCP son una parte crucial del funcionamiento de la red de Internet. El servidor TCP utiliza varios procesos para administrar las conexiones entrantes y salientes de los clientes. Uno de los procesos más importantes es el proceso de escucha, que espera activamente nuevas conexiones entrantes y las acepta cuando llegan. Otros procesos importantes incluyen el proceso de manejo de solicitudes, que maneja las solicitudes de los clientes y envía las respuestas correspondientes, y el proceso de cierre, que cierra las conexiones cuando se han completado las transacciones.
Para garantizar el funcionamiento adecuado del servidor TCP, es necesario que estos procesos se ejecuten de manera eficiente y se comuniquen correctamente entre sí. Además, deben ser capaces de manejar múltiples conexiones simultáneamente sin disminuir la velocidad o la calidad del servicio.
Para lograr esto, se utilizan diversas técnicas y algoritmos de programación, así como herramientas y librerías específicas para el desarrollo de servidores TCP. Es importante que los desarrolladores de software sigan las mejores prácticas y las normas de seguridad al implementar estos procesos para garantizar la estabilidad y la seguridad del servidor.
Establecimiento de Conexiones TCP
El establecimiento de conexiones TCP implica el intercambio de paquetes SYN (solicitud de sincronización) y ACK (confirmación de recepción) entre dispositivos. Este proceso comienza cuando un dispositivo envía un paquete SYN al otro dispositivo para iniciar la solicitud de conexión.
El dispositivo receptor responde con un paquete SYN-ACK para confirmar la recepción de la solicitud y su disposición a establecer la conexión. A continuación, el dispositivo emisor envía un paquete ACK para confirmar que ha recibido el paquete SYN-ACK.
Durante este proceso, los dispositivos también negocian detalles importantes como el tamaño de la ventana de recepción y el número de secuencia. Estos detalles ayudan a garantizar que los datos se envíen y se reciban de manera confiable y sin errores.
Una vez que se ha establecido la conexión TCP, los dispositivos pueden comenzar a enviar datos con confianza, sabiendo que los paquetes llegarán en el orden correcto y sin errores. El proceso de cierre de la conexión TCP también implica el intercambio de paquetes SYN, ACK y FIN (finalización) para garantizar que todos los datos se envíen y se reciban correctamente antes de que se cierre la conexión.
Terminación de Sesión
Para cerrar una conexión TCP, es necesario establecer el bit FIN (Finalización) en el encabezado del segmento. Para finalizar todas las sesiones TCP de una conexión bidireccional, se utiliza un enlace de dos vías compuesto por un segmento FIN y un segmento de reconocimiento (ACK). En consecuencia, se necesitan cuatro intercambios de segmentos para finalizar ambas sesiones y cerrar una conversación simple establecida por TCP. Tanto el cliente como el servidor pueden iniciar el proceso de terminación. Es importante destacar que esta información ha sido generada de forma autónoma por un modelo de lenguaje basado en inteligencia artificial y se han tomado medidas para evitar cualquier tipo de plagio.
Confiabilidad y control de flujo
Fiabilidad de TCP: Entrega Garantizada y Ordenada
TCP es considerado el mejor protocolo para ciertas aplicaciones debido a que, a diferencia de UDP, es capaz de reenviar paquetes descartados y asignar números de secuencia para indicar su orden correcto antes de la entrega. Además, TCP ayuda a mantener el flujo de paquetes para evitar que los dispositivos se sobrecarguen. Estas características de TCP son abordadas de manera detallada en este tema.
En algunas ocasiones, los segmentos TCP pueden no llegar a su destino o llegar fuera de servicio. Para asegurar que el receptor entienda el mensaje original, los datos en estos segmentos se ensamblan de nuevo en el orden original. Para lograr esto, se asigna un número de secuencia en el encabezado de cada paquete, el cual representa el primer byte de datos del segmento TCP.
Durante la configuración de la sesión, se establece un número de secuencia inicial (ISN). Este valor representa el primer byte transmitido a la aplicación receptora. A medida que se transmiten los datos durante la sesión, el número de secuencia se incrementa según el número de bytes que se han transmitido. Este seguimiento de bytes de datos permite identificar y reconocer cada segmento de manera exclusiva, incluso aquellos que se pierden durante la transmisión.
Fiabilidad de TCP: Pérdida y Retransmisión de Datos
A pesar de que una red esté bien diseñada, a veces se pierden datos. TCP proporciona formas de gestionar la pérdida de segmentos, incluyendo un mecanismo para retransmitir segmentos de datos que no han sido reconocidos.
Los números de secuencia (SEQ) y de acuse de recibo (ACK) se usan juntos para confirmar la recepción de los bytes de datos en los segmentos transmitidos. El número SEQ identifica el primer byte de datos en el segmento que se transmite. TCP utiliza el número de ACK enviado de vuelta al origen para indicar el siguiente byte que el receptor espera recibir. Esto se conoce como el acuse de recibo esperado. Tenga en cuenta que TCP normalmente envía ACK por cada otro paquete, pero pueden existir otros factores que alteren este comportamiento.
Comunicación UDP
Comparación de baja sobrecarga y confiabilidad de UDP
UDP es un protocolo de transporte que no establece una conexión antes de enviar datos. A diferencia de TCP, UDP tiene un encabezado de datagrama pequeño y no realiza un seguimiento de los números de secuencia. Debido a esto, UDP es capaz de ofrecer una baja sobrecarga de red en comparación con TCP.
Cuando se envían datagramas UDP, a menudo toman diferentes rutas y pueden llegar en un orden diferente al que se enviaron. El proceso de cliente UDP selecciona dinámicamente un número de puerto del intervalo de números de puerto disponibles y lo utiliza como puerto de origen para la conversación. Por lo general, el puerto de destino es el número de puerto bien conocido o registrado que se asigna al proceso de servidor.
Una vez que se han seleccionado los puertos de origen y destino, se utilizan en todos los datagramas en la transacción. Para la devolución de datos del servidor al cliente, se invierten los números de puerto de origen y destino en el encabezado del datagrama.