¿Cuál es la diferencia entre UDP y TCP?

46

Mi enrutador tiene dos protocolos (y una opción de "ambos") que puedo seleccionar al configurar el reenvío de puertos: UDP y TCP. ¿Cuál es la diferencia entre estos dos protocolos y cuándo seleccionaría uno sobre el otro en el reenvío de puertos?

Chico
fuente

Respuestas:

51

TCP está respaldado por acks y reintentos para asegurarse de que sus datos lleguen a donde van. UDP no tiene conexión y "dispara y olvida". UDP se usa principalmente para aplicaciones de tipo de transmisión, donde si pierde algunos datos no necesita intentar enviarlos nuevamente.

El que uses depende de la aplicación. Por ejemplo, un servidor web usa TCP.


fuente
3
Eso tiene sentido, por lo que si está transmitiendo un video no tiene sentido volver a enviar un fotograma faltante más tarde porque ya pasó ese punto. Gracias
Guy
15
+1. Solo para agregar, cualquiera que busque una comprensión más profunda debería leer uno de los excelentes libros de W. Richard Stevens sobre el tema. "TCP / IP Illustrated, v1" y "Programación de red UNIX" sirven como excelentes tutoriales y referencias.
Murali Suriar
73

Puedes encontrar un buen resumen aquí:

¿Cuál es la diferencia entre los protocolos de internet UDP y TCP?

Tanto TCP como UDP funcionan en el modelo TCP / IP de la capa de transporte, pero tienen un uso muy diferente.

Las diferencias más importantes son:

  • Fiabilidad :
    TCP:
    UDP orientado a la conexión: sin conexión
  • Pedido :
    TCP: el orden de recepción del mensaje está garantizado
    UDP: el pedido no está garantizado
  • Peso del protocolo :
    TCP: pesado, debido a la sobrecarga de conexión / pedido
    UDP: ligero, muy poca sobrecarga
  • Paquetes :
    TCP: transmisión, los datos se leen como una "transmisión", sin que nada distinga dónde termina un paquete y dónde comienza otro. Puede haber múltiples paquetes por llamada de lectura.
    UDP: datagramas, un paquete por una llamada de lectura.

Estructura del marco

Cuando los datos se envían a través de la red, deben encapsularse en los llamados "marcos". Existen varios métodos de encapsulación según el protocolo y la topología que se estén utilizando. Las siguientes imágenes muestran cómo difieren las estructuras de trama TCP y UDP.

Esta es la estructura de trama TCP:

Trama TCP

Y esta es la estructura de trama UDP, mucho más simple:

Trama UDP

Los protocolos típicos que usan TCP son HTTP, FTP y SMTP. Ejemplos de protocolos que usan UDP son DNS y DHCP.

splattne
fuente
@splattne - la orden de recepción del mensaje es garantía, no transmisión
Alnitak
@Alnitak: por supuesto, tienes razón. Quise decir que el recibo está garantizado en la orden de transmisión. Actualizaré para aclarar eso.
splattne
43

Y la explicación a nivel de CEO:

UDP es cuando arrojas tu papel en la dirección general de la papelera.

TCP es cuando falla, arrojas copias exactas del mismo papel una y otra vez hasta que cae en el contenedor. Habría desperdicio de papel, incluso el reenvío de paquetes TCP provocaría el desperdicio de recursos de la red o del sistema.

pgs
fuente
1
Esa es una muy buena explicación de "nivel de CEO": ¡me gusta!
Keithius
No soy un CEO, pero ¿por qué nadie me dijo esto antes? : p
Nicolas Dorier
¡Esto es brillante!
shylent
7

TCP y UDP son protocolos que se ejecutan sobre IP. TCP ha garantizado la entrega y UDP no. Seleccionaría uno u otro para el reenvío de puertos según el servicio que intente reenviar. HTTP, por ejemplo, es TCP. Si no sabe qué protocolo es el servicio que está intentando reenviar, es casi seguro que es TCP.

Brian
fuente
3

Para responder a otra parte de su pregunta, debe reenviar lo que usa su aplicación. Para reenviar el tráfico HTTP, seleccione TCP. Para reenviar el tráfico TFTP, seleccione UDP. Los programas p2p utilizan principalmente tcp y udp, así que reenvíelos a ambos.

Todo depende del protocolo y del programa que esté utilizando.

hayalci
fuente
No tienes toda la razón. dns usa también tcp / 53, no tan a menudo pero aún así [por ejemplo. para transferencia de zona].
pQd
si. Además, es completamente válido enviar consultas DNS regulares a través de tcp. Cambié el ejemplo a TFTP, que usa exclusivamente UDP.
hayalci
2

Además de las diferencias mencionadas hasta ahora, TCP también proporciona

control de flujo. Utilizando un mecanismo de ventana, el destinatario limita cuántos octetos (bytes) quiere recibir del remitente antes de que el remitente deba esperar el permiso para enviar más datos. El receptor puede cambiar el tamaño de la ventana a medida que avanza la conversación. Esto permite que un receptor 'acelere' la velocidad de los datos que provienen de un remitente: UDP no permite esto y todo lo que un receptor puede hacer es tirar los datos que no puede almacenar o procesar al llegar.

algunas instalaciones más técnicas, como el reconocimiento no contiguo (utiliza reconocimientos selectivos para permitir que el remitente retransmita solo una trama faltante en lugar de la trama faltante y las subsiguientes que el receptor ya tiene pero no pudo reconocer de la manera habitual), manejo de congestión y retransmisión adaptativa (ajuste del temporizador que decide qué tan pronto reenviar una trama transmitida cuando no se recibe un acuse de recibo). Estos no son relevantes para UDP, pero ayudan a TCP a proporcionar servicios adicionales a través de UDP sin aumentar en gran medida la carga de la red para el mismo volumen de carga útil.

mas
fuente
2

TCP hace un esfuerzo para garantizar que los datos lleguen al destinatario; UDP no lo hace.

J. Polfer
fuente
Incorrecto. El protocolo IP no es confiable y puede ocurrir pérdida de datos. TCP hace un esfuerzo para garantizar que los datos enviados (que se dividen en partes pequeñas y se envían a través de paquetes IP) lleguen al destinatario (eventualmente reenviando partes pequeñas si es necesario).
Anónimo
@ Anónimo: básicamente repitió lo que dije anteriormente. Como me equivoco
J. Polfer
Creo que ambos encontrarán que IP es el marco subyacente (pila) y el protocolo de comunicación básico que utilizan UDP y TCP. En realidad, no puede comunicar datos útiles a través de Internet utilizando SOLO IP, que yo sepa, incluso los pings básicos, etc., utilizan un protocolo sobre IP (el otro principal; ICMP).
Lee B
1

No importa todas las respuestas que explican una versus la otra. A los efectos de configurar un reenvío de puerto, las reglas son bastante simples: debe elegir TCP, a menos que los documentos para el protocolo / aplicación que está utilizando digan que use UDP. Por lo general, los que usan UDP están relacionados con la transmisión, o cosas muy simples que favorecen protocolos ligeros / velocidad sobre confiabilidad (particularmente DNS y NTP). Tenga en cuenta que también hay otros protocolos además de TCP y UDP: ICMP, protocolos de túnel, etc.

Lee B
fuente
1

Cuanto más conocido es un protocolo, más enrutadores en el camino intervienen con el protocolo. Envíe paquetes tcp, y existe una gran probabilidad de que los paquetes recibidos estén muy destrozados. UDP generalmente no está tan maltratado, y los otros 254 protocolos IP paylod generalmente están completamente intactos.


fuente
0

Protocolo de datagramas de usuario (UDP)

Forma parte de los protocolos básicos de Internet Protocol Suite. Los programas en computadoras en red pueden enviar mensajes cortos a veces llamados datagramas. UDP no garantiza ninguna confiabilidad (sucede que el datagrama puede llegar fuera de servicio, se duplica o falta sin previo aviso). El hecho de que no se compruebe si todos los paquetes se entregan realmente, UDP demuestra ser más rápido y más eficiente, para aplicaciones que no necesitan entrega garantizada. UDP encuentra sus usos en tales situaciones:

Aplicaciones sensibles al tiempo. Se evitan los problemas debidos a paquetes retrasados.

También es útil para servidores que responden consultas pequeñas de un gran número de clientes. UDP admite la difusión de paquetes (se transmite a todos en la red local) y la multidifusión (se transmite a todos los suscriptores).

Protocolo de control de transmisión (TCP)

A menudo se le conoce como TCP / IP debido a la importancia de este protocolo en Internet Protocol Suite. TCP opera a un nivel superior, preocupado solo con los dos sistemas finales (por ejemplo, entre el navegador web y un servidor web). TCP proporciona una entrega confiable y secuencial de un flujo de datos de un programa en una computadora a otro programa en otra computadora. Usos comunes del soporte de correo electrónico de reagrupamiento TCP y transferencia de archivos y aplicaciones web. Entre sus tareas de administración, TCP controla el tamaño de los mensajes, la velocidad a la que se intercambian los mensajes y la congestión del tráfico de la red. En cuanto a IP, maneja transmisiones de nivel inferior de computadora a computadora como un mensaje transferido a través de Internet.


fuente
0

Bueno, ambos son protocolos de red construidos sobre algo llamado Protocolo de Internet o IP. El Protocolo de Internet es el principal protocolo de Internet y es, por ejemplo, lo que nos permite navegar por la web. Es por eso que a menudo verá estos protocolos escritos como TCP / IP o UDP / IP. En realidad son protocolos centrales de internet.

En ambos casos, sus datos se dividen en fragmentos llamados paquetes. TCP asegura que estos paquetes lleguen a su destino y en el orden correcto y sin ningún error.

UDP, por otro lado, no garantizará que incluso llegue un paquete de datos. Solo se asegurará de que si llega será sin error.

Por lo general, otros protocolos se ejecutarán sobre TCP y UDP y se conocen como protocolos de aplicación porque operan dentro de una aplicación y no dentro del sistema operativo. Su navegador web utiliza el protocolo HTTP que utilizará el protocolo TCP.

Las búsquedas de nombres de dominio o consultas DNS a menudo usan UDP pero también pueden usar TCP. Varios servicios de transmisión usan UDP debajo de otros protocolos de aplicación.

Espero que responda su pregunta en un inglés más simple.

Mate
fuente