Hay dos tipos de tráfico por Protocolo de Internet (IP, en inglés). Estos son TCP, que significa Transmission Control Protocol (Protocolo de Control de Transmisión) y UDP, que significa User/Universal Datagram Protocol (Protocolo Universal de Datos/de Usuario). TCP está orientado a conexiones, donde una vez establecida la conexión, la data se puede transmitir en ambas direcciones. UDP es un protocolo de Internet más sencillo, sin necesidad de conexiones. Con él se pueden enviar múltiples mensajes en grupos (paquetes) de data.
Tabla de comparación
Diferencias en características de transferencia de data
TCP asegura una entrega ordenada y confiable de una serie de data del usuario al servidor y vice versa. UDP no está dedicado a conexiones de punto a punto y no verifica la disponibilidad del quien reciba la data.
Confiabilidad
TCP es más confiable porque maneja reconocer que se recibió el mensaje y retransmite las partes que se hayan perdido. Esto asegura que nunca se pierde data. UDP no verifica que la comunicación haya llegado porque no tiene los pasos de corroborar y retransmitir en su protocolo.
Ordenar
Las transmisiones por TCP se envían en secuencia y se reciben en la misma secuencia. En el caso de que parte de la data llegue fuera de orden. TCP reordena la data para completarla. En el caso de UDP, la secuencia del mensaje puede cambiar una vez llegue a su destino. No hay manera de predecir en qué orden llegará.
Conexión
TCP es una conexión pesada que requiere 3 paquetes para una conexión "socket" y maneja control de congestión y confiabilidad. UDP es una capa de transporte liviano diseñado para operar encima de protocolos del Internet. No hay conexiones de rastreo ni ordenamiento de mensajes.
Método de transferencia
TCP lee data como una secuencia y el mensaje se transmite en segmentos definidos. Los mensajes por UDP son paquetes de data que se envían individualmente y se verifica su integridad al llegar. Los paquetes tienen límites definidos mientras que la secuencia de data no los tiene.
Cómo trabajan TCP y UDP
Una conexión de TCP se establece en un vínculo de 3 tiempos ("3-way handshake"), que es un proceso de iniciar y verificar una conexión. Una vez se establece la conexión, puede comenzar la transferencia de data. Luego de la transferencia, la conexión se termina cerrando los circuitos virtuales establecidos.
UDP usa un modelo sencillo de transmisión sin vínculo ("handshake") implícito que garantice confiabilidad, orden o integridad de data. Por ello, UDP provee un servicio poco confiable y la data puede llegar fuera de orden, duplicada o incompleta sin que haya aviso. UDP asume que las correcciones y verificación de errores o no es necesario o se hace por medio de la aplicación activa, evitando usar recursos a nivel de la interfase de la red misma. A diferencia de TCP, UDP es compatible con transmisiones amplias de paquetes (envíos a todos los puntos de una red local) y multi-envíos (enviados a todos los suscriptores.)
Diferentes aplicaciones de TCP y UDP
Navegar la Internet, email y transferencia de archivos son aplicaciones comunes que hacen uso de TCP. TCP se usa para controlar los tamaños de los segmentos de data, el nivel de intercambio, el flujo y la congestión dentro de la red. TCP es preferido donde se requieren facilidades de corrección de errores a nivel de interfase de red. UDP se usa mayormente por aplicaciones sensitivas a tiempo al igual que servidores que respondes a pequeñas peticiones de un alto número de clientes. UDP es compatible con transmisiones amplias de paquetes--envíos a todos los puntos de una red local--y multi-envíos--enviados a todos los suscriptores. UDP es usado comúnmente en el Sistema de Nombres de Dominios, Voz sobre IP (VoIP, en inglés), el Protocolo de Transferencia de Archivos Triviales y juegos por Internet.
TCP vs. UDP para servidores de juegos
Para juegos masivos de múltiples jugadores por Internet (MMO, en inglés), los desarrolladores a menudo tiene que hacer una selección arquitectónica entre usar conexiones de UDP o de TCP. La ventaja de TCP estriba en conexiones persistentes, confiabilidad y el poder enviar paquetes de data de tamaños arbitrarios. El problema más grande con TCP en este escenario es que su algoritmo de control de congestión, que responde a paquetes perdidos como un problema de ancho de banda y automáticamente reduce el envío de paquetes. En redes de Wi-Fi o 3G, esto puede causar atrasos significativos. Christopher Lemó, un desarrollador con experiencia, pesó los pros y contras y recomienda los siguientes criterios para escoger si usar TCP o UDP para un juego:
- Usa HTTP sobre TCP para hacer peticiones ocasionales, iniciados del lado del cliente, donde sea aceptable tener un atraso de vez en cuando.
- Use conexiones persistentes simples de TCP si ambos el cliente y el servidor envían paquetes independientemente, pero donde un atraso ocasional es aceptable (por ejemplo, "poker" por Internet, muchos juegos MMO).
- Use UDP si ambos el cliente y el servidor envían paquetes independientemente y no es aceptable que hayan atrasos, como el caso de juegos de acción con múltiples jugadores y algunos MMO.
Comentarios: TCP vs UDP