TCP & UDP
La transmisión de datos por una red de datos en una red de computadoras, requiere protocolos de transporte y comunicación eficientes y eficaces. Debido a esto un protocolo no puede cumplir con los requerimientos para la inmensidad de posibilidades de transmisión de datos. Es por esto que Internet usa varios protocolos de comunicación, entre ellos TCP y UDP. Estos dos protocolos tienen diferencias fundamentales, que caracterizan y las hacen eficientes para todas las aplicaciones de transmisión de datos. Este informe busca definir a cada una, su funcionamiento y realizar una comparativa de estas.
Palabras Claves: TCP, UDP, Datos, RFC
II. INTRODUCCION
TCP es un protocolo de nivel de transporte completo que proporciona un servicio de transferencia fiable de datos y un método para trasladar datos encapsulados con TCP a un protocolo de nivel de aplicación. En el nivel de aplicación, posibilita la administración de datos que vienen del nivel más bajo del modelo, o van hacia él, (es decir, el protocolo IP). Cuando se proporcionan los datos al protocolo IP, los agrupa en datagramas IP, fijando el campo del protocolo en 6 (para que sepa con anticipación que el protocolo es TCP).
El protocolo UDP o Protocolo de Datagrama de Usuario, proporciona una
comunicación muy sencilla entre las aplicaciones de dos ordenadores. Este protocolo es no orientado a conexión, no se establece una conexión previa con el otro extremo para transmitir un mensaje UDP. Los mensajes se envían sin control, pudiendo duplicarse o desordenarse, esto lo hace no fiable, ya que se pueden perder o llegar dañados.
UDP utiliza el protocolo IP para transportar sus mensajes. No añadiendo ninguna mejora en la calidad de la transferencia, si incorpora los puertos origen y destino en su formato de mensaje. Las aplicaciones que usan este protocol deben programarse teniendo en cuenta que la información puede no llegar de forma correcta.
III. MARCO TEORICO
El protocolo de control de transmisión o Transmission Control Protocol, con siglas TCP, es un protocol fundamentales en Internet. Varios programas en una red de datos compuesta por redes de computadoras, pueden usar TCP que creen conexiones entre sí por donde se envíen un flujo de datos. TCP garantiza que los datos serán entregados en su destino sin errores, ordenados de la misma manera que se trasmitió. Este protocolo otorga un mecanismo para distinguir varias aplicaciones en una misma máquina, a través del concepto de Puerto.
Creado en 1973–1974 por Vint Cerf y Robert Kahn.
TCP da soporte a muchas de las aplicaciones más populares de Internet (navegadores, intercambio de ficheros, clientes FTP, etc.) y protocolos de aplicación HTTP, SMTP, SSH y FTP.
En el protocol TCP, las aplicaciones se comunican de forma segura (gracias por el acuse de recibo -ACK- independientemente de las capas inferiores. Esto refiere a que la capa de transporte se encarga del envío de datagramas, asi los routers no se preocupan del monitoreo de datos.
Este protocolo fue definido en el RFC 793 y el RFC 1323. El RFC 1323 lo caracteriza de tal manera que: “fue diseñado para operar de manera confiable durante casi cualquier medio de transmisión, independientemente de la velocidad de transmisión, demora, corrupción, duplicación o reordenación de segmentos.
Las implementaciones TCP de producción actualmente adaptadas a velocidades de transferencia en el rango de 100 bps a 10e7 bps y retrasos de ida y vuelta en el rango 1 ms a 100 segundos. El trabajo reciente sobre el rendimiento de TCP ha demostrado que TCP puede funcionar bien en una variedad de rutas de Internet, que van desde 800 Canales de E / S de Mbit / seg a módems de acceso telefónico de 300 bit / seg” [2].
TCP es un protocolo orientado a la conexión, porque cliente y servidor se anuncian y aceptan la conexión antes de comenzar a transmitir los datos a ese usuario que debe recibirlos.
Durante una comunicación TCP, las dos máquinas establecen una conexión. La máquina emisora (solicita la conexión) se llama cliente, y la máquina receptora se llama servidor. Por eso se refiere a esta como entorno Cliente-Servidor.
Asi las máquinas de dicho entorno se comunican en modo en línea, es decir, que la comunicación se realiza en las dos direcciones.
Para posibilitar la comunicación y que funcionen bien todos los controles que la acompañan, los datos se agrupan; es decir, que se agrega un encabezado a los paquetes de datos que permitirán sincronizar las transmisiones y garantizar su recepción.
Una funcionalidad adicional es la capacidad de controlar la velocidad de los datos usando su capacidad para emitir mensajes de tamaño variable. Estos mensajes se llaman segmentos.
Las características primordiales de TCP son:
- Ordenamiento de datagramas cuando proviene del protocolo IP
- Evita la saturación de la red.
- Monitoreo del flujo de datos.
- Segmentación de datos.
Una función muy importante del protocolo TCP, es la Multiplexion y Desmultiplexion, asi puede transmitir datos desde diversas aplicaciones en la misma línea o, en otras palabras, ordenar la información que llega en paralelo (Figura 1), esta función se realiza empleando puertos o conexiones, que son números vinculados a un tipo de aplicación que, cuando se combina con una dirección de IP, permite determinar en forma exclusiva una aplicación que se ejecuta en una máquina determinada.
Formato de segmento TCP (Figura 2) se compone por los datos enviados desde la capa de aplicación y la cabecera añadida por el protocolo de transporte. El segmento TCP es luego encapsulado en un datagrama IP para ser enviado por la capa de red. El formato de la cabecera TCP se detalla a continuación:
A. Funcionamiento de TCP.
Para el establecimiento de la conexión sigue la negociación en tres pasos (3-way handshake), y para la desconexión usa la “negociación en cuatro pasos”. Teniendo asi las conexiones TCP tres etapas:
1. Establecimiento de la conexión
2. Transferencia de datos
3. Fin de la conexión
Segun CCM “Cuando se emite un segmento, se lo vincula a un número de secuencia. Con la recepción de un segmento de datos, la máquina receptora devolverá un segmento de datos donde el indicador ACK esté fijado en 1 (para poder indicar que es un acuse de recibo) acompañado por un número de acuse de recibo que equivale al número de secuencia anterior. Además, usando un temporizador que comienza con la recepción del segmento en el nivel de la máquina originadora, el segmento se reenvía cuando ha transcurrido el tiempo permitido, ya que en este caso la máquina originadora considera que el segmento está perdido (Figura 3). Si el segmento no está perdido y llega a destino, la máquina receptora lo sabrá, gracias al número de secuencia, que es un duplicado, y sólo retendrá el último segmento que llegó a destino.” [3]
La negociación en tres pasos:
Un método importante implementado en este protocol en el de la ventana corrediza (Figura 4), ya que en diversos casos es posible limitar la cantidad de acuses de recibo con el fin de aliviar el tráfico en la red. Esto se logra fijando un número de secuencia después del cual se requiera un acuse de recibo. Este número en realidad se guarda en el campo ventana del encabezado TCP/IP.
En este método se define una serie de secuencias que no necesitan acuses de recibo y que se desplaza a medida que se reciben los acuses de recibo. El tamaño de la ventana no es fijo. Asi el servidor puede incluir el tamaño de la ventana que considera más apropiado en sus acuses de recibo guardándolo en el campo ventana. Asi cuando el acuse de recibo indica un pedido para aumentar la ventana, el cliente se desplazará al borde derecho de la ventana. En caso de una reducción, el cliente no desplazará el borde derecho de la ventana hacia la izquierda, sino que esperará que avance el borde izquierdo (al llegar los acuses de recibo).
B. UDP
El protocolo UDP, User Datagram Protocol es un protocolo no orientado a conexión de la capa de transporte del modelo TCP/IP. La simplicidad de este protocolo es grande ya que no proporciona detección de errores. Este protocolo se definió en el RFC 768.
Entre las características importantes de UDP están:
Permite el envío de datagramas por la red sin una conexión previa, ya que el datagrama incorpora información de direccionamiento en la cabecera.
No tiene confirmación ni control de flujo, esto refiere a la baja fiabilidad, asi los paquetes pueden adelantarse unos a otros sin saber si ha llegado correctamente, ya que no hay confirmación de entrega o recepción.
El uso de UDP es orientado para protocolos como DHCP, BOOTP, DNS y donde el intercambio de paquetes de la conexión/desconexión son mayores, o no son rentables con respecto a la información transmitida, así como para la transmisión de audio y vídeo en real, donde no es posible realizar retransmisiones por los estrictos requisitos de retardo que se tiene en estos casos.
Trabaja con datagramas enteros a diferencia de TCP. La transferencia de datos por UDP se hace en bloques de datos.
A comparación de la cabecera de TCP, la cabecera de UDP es bastante simple (Figura 5).
C. Usos de UDP
- Usado en la transmisión de vídeo y voz por una red, ya que no hay tiempo para enviar de nuevo paquetes perdidos cuando se está escuchando a alguien o viendo un vídeo en tiempo real.
- Usado en la telemática.
- Usado por la mayoría de las aplicaciones claves de Internet utilizan el protocolo UDP, incluyendo: el Sistema de Nombres de Dominio(DNS), ya que las consultas deben ser rápidas y tendrán una sola solicitud, luego de un paquete único de respuesta, el Protocolo de Administración de Red, el Protocolo de Información de Enrutamiento (RIP) y el Protocolo de Configuración dinámica de host.
IV. CONCLUSIONES
- El protocolo TCP proporciona un transporte fiable de flujo de bits entre aplicaciones, donde se pueden enviar grandes cantidades de información de forma fiable, facilitando el trabajo del programador ya que no tiene que gestionar la fiabilidad de la conexión. La complejidad de la gestión de la fiabilidad tiene un coste en eficiencia, puesto que se tienen que añadir bastante información a los paquetes que enviar. “Los paquetes de datos a enviar tienen un tamaño máximo, cuanta más información añada el protocolo para su gestión, menos información que proviene de la aplicación podrá contener ese paquete (el segmento TCP tiene una sobrecarga de 20 bytes en cada segmento, mientras que UDP solo añade 8 bytes). Por eso, cuando es más importante la velocidad que la fiabilidad, se utiliza UDP. En cambio, TCP asegura la recepción en destino de la información para transmitir.” [5]
- El protocolo UDP proporciona un nivel de transporte no fiable de datagramas, porque añade poca información necesaria para la comunicación extremo a extremo al paquete que envía al nivel inferior. Es usada por aplicaciones como NFS y RCP, se usa en tareas de control y en la transmisión de audio y vídeo a través de una red. No introduce retardos para establecer una conexión, no mantiene estado de conexión alguno y no realiza seguimiento de estos parámetros. Así, un servidor dedicado a una aplicación particular puede soportar más clientes activos cuando la aplicación corre sobre UDP en lugar de sobre TCP.
V. BIBLIOGRAFIA
[1]. Jacobson V. Braden R. Borman D., “RFC 7323”, 1992. Available online: https://tools.ietf.org/html/rfc1323
[2]. Colaboradores Wikipedia, “Protocolo de control de transmisión”, 2017. Available online: https://es.wikipedia.org/wiki/Protocolo_de_control_de_transmisi%C3%B3n
[3]. Vialfa Carlos, “Protocolo TCP”, 2017. Available online:
http://es.ccm.net/contents/281-protocolo-tcp
[4]. Colaboradores Wikipedia, “Protocolo UDP”, 2017. Available online:
https://es.wikipedia.org/w/index.php?title=User_Datagram_Protocol&oldid=99514966
[5]. Colaboradores Wikipedia, “Segmento TCP”, 2017. Available online:
https://es.wikipedia.org/wiki/Segmento_TCP
[6]. Postel J., “RFC 768”, 1980. Available online:
https://tools.ietf.org/html/rfc768
[7]. Vialfa Carlos, “Protocolo UDP”, 2017. Available online: