¿UDP? ¿TCP? Un paseo por el protocolo de comunicación de transporte.
Si ha configurado un teléfono IP o un softphone antes, es posible que esté familiarizado con el término «transporte». ¿Está familiarizado con él y sabe cómo funciona?
Para entender qué es un «transporte», primero tenemos que entender cómo funcionan las IP. Un Protocolo de Internet (IP) establece las normas que rigen el formato en el que se intercambian los datos entre todos los sistemas conectados a redes públicas o privadas. A todos los dispositivos que se conectan a una red se les asigna una dirección IP, con el objetivo de identificar los dispositivos de todo Internet. Cada dirección IP contiene información de localización que hace que cada dispositivo sea accesible para la comunicación.
Las direcciones IP son una cadena de dígitos numéricos separados por puntos y normalmente expresados en grupos de cuatro números llamados octetos. Pero, ¿cómo funcionan y se comunican entre sí las direcciones IP? Como cualquier otro lenguaje de codificación, el IP funciona utilizando pautas bien establecidas y reglas debidamente definidas. Si dos dispositivos de una red pueden entender y comunicarse en el mismo lenguaje, entonces son capaces de establecer una conexión satisfactoria e intercambiar información entre sí.
El proceso, aunque invisible al ojo humano, puede ser bastante complejo. En primer lugar, su dispositivo se conectará a una red con acceso a Internet a través de un proveedor de servicios de Internet, que asignará una IP a su dispositivo y gestionará las peticiones de sus dispositivos, ya sea enviándolas al destino adecuado o enrutando el tráfico entrante hacia su dispositivo. Estas direcciones IP asignadas a tus dispositivos pueden cambiar en un momento dado, y se denominan «IP dinámicas», mientras que las que no cambian se llaman «IP estáticas».
Ahora que comprendemos mejor los conceptos básicos, podemos pasar al siguiente tema, el «transporte». Ahora sabemos que la información se intercambia entre tu dispositivo y otros dispositivos en una red utilizando el Protocolo de Internet de una dirección IP a otra (y viceversa), pero cómo se comparte exactamente esta información lo descubriremos a continuación: la información de un peer se envía en lo que se llama un paquete, y los paquetes se pueden enviar de distintas formas, ya sea utilizando un protocolo UDP o TCP. Por lo tanto, se conoce como transporte el protocolo que los dispositivos pueden utilizar para comunicarse con otros dispositivos en una red para intercambiar paquetes entre sí.
UDP
también conocido como Protocolo de Datagramas de Usuario, es un protocolo de comunicación ampliamente empleado para múltiples propósitos, entre los que podríamos destacar la transmisión sensible al tiempo (reproducción de vídeo) o las búsquedas DNS (DNS son las siglas de Domain Name System, es básicamente un directorio para internet, donde podrías introducir https://www.voip.ms en tu navegador, DNS traducirá dicho nombre a una dirección IP y localizará la información del sitio web requerido en el destino adecuado para mostrártelo). La peculiaridad de este protocolo es que no requiere establecer una conexión antes de enviar o recibir datos, lo que acelera el proceso, con la desventaja de la posible pérdida de paquetes en el proceso (que podría causar vulnerabilidades en una configuración específica).
El protocolo TCP
También conocido como Protocolo de Control de Transmisión, aunque ofrece la ventaja de ser un protocolo más seguro, tiene la desventaja de requerir más ancho de banda que un UDP. TCP permite que los dispositivos que utilizan el Protocolo de Internet permanezcan conectados con el fin de asegurar el orden de los paquetes, garantizando así el intercambio de los mismos. A diferencia del protocolo UDP, TCP requiere establecer un handshake (apretón de manos) con la parte receptora para que el proceso pueda completarse con éxito.
Si nos fijamos en el proceso, básicamente, el dispositivo que inicia la conexión pregunta primero por la disponibilidad del dispositivo de destino, después, el receptor devuelve una respuesta y, a continuación, el emisor acusa recibo de la respuesta enviada por el receptor de destino e inicia la comunicación si el receptor está disponible.
Este proceso se conoce como «3-way handshake», tiene lugar justo antes de que se produzca cualquier intercambio de datos y es en esta etapa donde se reservan los puertos utilizados en la conexión con el objetivo de tener una conexión fiable entre los dispositivos implicados. El protocolo TCP también tiene capacidades para identificar paquetes de datos perdidos en el proceso de intercambio, la idea es garantizar que no se pierdan paquetes de datos en ningún momento. El inconveniente de todo este camino que recorre el protocolo TCP para enviar y recibir información es que este proceso requiere más tiempo y recursos para funcionar.
Aunque es bien sabido que un protocolo TCP es considerablemente más seguro que un protocolo UDP, las conexiones pueden seguir estando en peligro mientras se utiliza TCP, se han registrado ataques más elaborados y complejos contra conexiones TCP que requieren soluciones de alta gama para garantizar la protección de dichas conexiones. En resumen, repasemos las ventajas de los protocolos UDP y TCP:
TCP es un protocolo orientado a la conexión, los dispositivos que intentan compartir información deben establecer primero una conexión antes de poder transmitir ningún dato, esta conexión debe cerrarse en cuanto se envían/reciben datos, y UDP deja la conexión abierta debido a la falta de una sobrecarga que la abra, la mantenga y luego la termine, lo que sería recomendable tanto para multidifusión como para transmisiones de radiodifusión.
- UDP no puede garantizar que los datos lleguen al destino previsto, mientras que TCP sí lo garantiza.
- TCP proporciona más métodos de comprobación de errores, de los que carece UDP, que ofrece una comprobación de errores básica mediante sumas de comprobación.
- En UDP no hay segmentos de acuse de recibo, mientras que en TCP sí los hay.
- TCP es un poco más lento porque es un poco más «pesado», mientras que UDP lo es porque es más ligero.
- UDP no tiene secuenciación de datos, si se requiere, esto tendrá que hacerse en la capa de aplicación, mientras que TCP asegura la llegada del paquete en el orden en que estos necesitan ser enviados/recibidos.
Conclusión
Aunque ambos protocolos le permitirán conectarse correctamente, UDP debería emplearse cuando la velocidad sea la prioridad, teniendo en cuenta cualquier posible problema de seguridad que este protocolo pueda implicar, mientras que TCP es la opción para dar prioridad a la precisión, debido al hecho de que TCP asegura la no pérdida de paquetes en el proceso.