¿Cuál es la diferencia entre TCP y UDP?
Sé que TCP se usa en el caso de aplicaciones que no son críticas para el tiempo, y UDP se usa para juegos o aplicaciones que requieren una transmisión rápida de datos. Sé que TCP se usa para HTTP, HTTP, FTP, SMTP y Telnet. Sé que UDP se usa para DNS y DHCP.
¿Pero por qué? ¿Qué características de TCP y UDP lo hacen útil para sus respectivos casos de uso?
tcp
network-programming
udp
protocols
usuario749414
fuente
fuente
Respuestas:
TCP
es un flujo orientado a la conexión a través de una red IP. Garantiza que todos los paquetes enviados llegarán al destino en el orden correcto. Esto implica el uso de paquetes de acuse de recibo enviados de vuelta al remitente, y la retransmisión automática, causando demoras adicionales y una transmisión general menos eficiente queUDP
.UDP
es un protocolo sin conexión. La comunicación está orientada a datagramas . La integridad está garantizada solo en el datagrama único. Los datagramas llegan a destino y pueden llegar fuera de servicio o no llegar. Es más eficiente queTCP
porque no usa ACK . Generalmente se usa para la comunicación en tiempo real, donde un pequeño porcentaje de la tasa de pérdida de paquetes es preferible a la sobrecarga de unaTCP
conexión.En ciertas situaciones
UDP
se usa porque permite la transmisión de paquetes de difusión. Esto a veces es fundamental en casos como elDHCP
protocolo, porque la máquina del cliente aún no ha recibido unaIP
dirección (este es elDHCP
propósito del protocolo de negociación) y no habrá ninguna forma de establecer unaTCP
secuencia sin laIP
dirección en sí.fuente
Del artículo de Skullbox:
1) TCP está orientado a la conexión y es confiable, ya que UDP no tiene conexión y es confiable.2) TCP necesita más procesamiento en el nivel de interfaz de red donde, como en UDP, no lo es.
3) TCP utiliza, protocolo de enlace de 3 vías, control de congestión, control de flujo y otros mecanismos para garantizar una transmisión confiable.
4) UDP se utiliza principalmente en casos donde el retraso del paquete es más grave que la pérdida del paquete.
fuente
is the most commonly used protocol on the Internet
declaración es discutible y realmente depende de cómo se definamost commonly used
,protocol
ythe Internet
. Por ejemplo, el Protocolo de Internet es un competidor más probable para esa corona en particular.Piense en TCP como una recogida / entrega de paquetes UPS / FedEx programada dedicada entre dos ubicaciones, mientras que UDP es el equivalente a tirar una tarjeta postal en un buzón.
UPS / FedEx hará todo lo posible para asegurarse de que el paquete que envíe llegue y llegue a tiempo. Con la tarjeta postal, tienes suerte si llega, y puede llegar fuera de servicio o tarde (¿cuántas veces has recibido una tarjeta postal de alguien DESPUÉS de que haya llegado a casa de las vacaciones?)
TCP está lo más cerca posible de un protocolo de entrega garantizado, mientras que UDP es simplemente el "mejor esfuerzo".
fuente
Motivos UDP se utiliza para DNS y DHCP:
DNS: TCP requiere más recursos del servidor (que escucha las conexiones) que del cliente. En particular, cuando se cierra la conexión TCP, el servidor debe recordar los detalles de la conexión (manteniéndolos en la memoria) durante dos minutos, durante un estado conocido como TIME_WAIT_2. Esta es una característica que defiende contra los paquetes repetidos erróneamente de una conexión anterior que se interpreta como parte de una conexión actual. Mantener TIME_WAIT_2 usa memoria del núcleo en el servidor. Las solicitudes de DNS son pequeñas y llegan con frecuencia desde muchos clientes diferentes. Este patrón de uso exacerba la carga en el servidor en comparación con los clientes. Se creía que el uso de UDP, que no tiene conexiones ni estado para mantener en el cliente o el servidor, mejoraría este problema.
DHCP: DHCP es una extensión de BOOTP. BOOTP es un protocolo que utilizan las computadoras cliente para obtener información de configuración de un servidor, mientras el cliente se inicia. Para localizar el servidor, se envía una transmisión solicitando servidores BOOTP (o DHCP). Las transmisiones solo se pueden enviar a través de un protocolo sin conexión, como UDP. Por lo tanto, BOOTP requería al menos un paquete UDP para la transmisión de localización del servidor. Además, debido a que BOOTP se está ejecutando mientras el cliente ... arranca, y este es un período de tiempo en el que el cliente puede no tener toda su pila TCP / IP cargada y ejecutándose, UDP puede ser el único protocolo que el cliente está listo para manejar en ese momento hora. Finalmente, algunos clientes DHCP / BOOTP solo tienen UDP a bordo. Por ejemplo, algunos termostatos IP solo implementan UDP.
Como otros han mencionado, UDP también es útil para la transmisión de medios, especialmente audio. Las conversaciones suenan mejor bajo el retraso de la red si simplemente descarta los paquetes retrasados. Puede hacerlo con UDP, pero con TCP todo lo que obtiene durante el retraso es una pausa, seguida de audio que siempre se retrasará tanto como ya se ha detenido. Para conversaciones telefónicas bidireccionales, esto es inaceptable.
fuente
Una de las diferencias es en resumen
UDP : Enviar mensaje y no mirar hacia atrás si llegó a destino, Protocolo sin conexión
TCP : Enviar mensaje y garantía de llegar a destino, Protocolo orientado a conexión
fuente
TCP establece una conexión antes de que tenga lugar la transmisión de datos real, UDP no. De esta manera, UDP puede proporcionar una entrega más rápida. Las aplicaciones como DNS, acceso al servidor horario, por lo tanto, usan UDP.
A diferencia de UDP, TCP utiliza el control de congestión. Responde a la carga de la red. A diferencia de UDP, se ralentiza cuando la congestión de la red es inminente. Por lo tanto, las aplicaciones como multimedia que prefieren un rendimiento constante pueden ser UDP.
Además, UDP no es confiable, no reacciona ante la pérdida de paquetes. Por lo tanto, las aplicaciones sensibles a la pérdida, como la transmisión multimedia, prefieren UDP. Sin embargo, TCP es un protocolo confiable, por lo tanto, las aplicaciones que requieren confiabilidad como transferencia web, correo electrónico, descarga de archivos prefieren TCP.
Además, en Internet hoy en día UDP no es tan acogedor como TCP debido a los cuadros intermedios. Algunas aplicaciones como Skype caen a TCP cuando se supone que la conexión UDP está bloqueada.
fuente
La ley de las abstracciones permeables por Joel Spolsky
http://www.joelonsoftware.com/articles/LeakyAbstraction.html
fuente
Breves y simples diferencias entre el protocolo Tcp y Udp:
1) Tcp: protocolo de control de transmisión y Udp: protocolo de datagramas de usuario.
2) Tcp es un protocolo confiable, mientras que Udp es un protocolo poco confiable.
3) Tcp es un flujo orientado, mientras que Udp es un protocolo orientado a mensajes.
4) Tcp es más lento que Udp.
fuente
Ejecute este hilo y déjeme intentar expresarlo de esta manera.
TCP
Apretón de manos de 3 vías
Bob: Hola Amy, me gustaría contarte un secreto
Amy: OK, adelante, estoy listo
Bob: OK
Comunicación
Bob: 'Yo', esta es la primera letra
Amy: Primera carta recibida, por favor envíeme la segunda letra
Bob: '', esta es la segunda letra
Amy: Segunda carta recibida, envíeme la tercera letra
Bob: 'L ', esta es la tercera letra
Después de un tiempo
Bob: ' L ', esta es la tercera letra
Amy: Tercera carta recibida, por favor envíeme la cuarta letra
Bob: ' O ', esta es la cuarta carta
Amy: ...
... ...
Apretón de manos de 4 vías
Bob: Mi secreto está expuesto, ahora conoces mi corazón.
Amy: ok. No tengo nada que decir.
Bob: ok.
UDP
Bob: TE AMO
Amy recibió: OVI LE
TCP es más confiable que UDP con un orden de mensajes uniforme garantizado, por eso UDP es más ligero y eficiente.
fuente
Explicación simple por analogía
TCP es así.
Imagina que tienes un amigo por correspondencia en Marte (nos comunicamos con cartas escritas en los viejos tiempos antes de internet).
Debe enviar a su amigo por correspondencia los siete hábitos de las personas altamente efectivas. Entonces decides enviarlo en siete cartas separadas:
etc.
etc..Carta 7 - Afilar la sierra
Requisitos:
Desea asegurarse de que su amigo por correspondencia reciba todas sus cartas, en orden y que lleguen perfectamente . Si su bolígrafo recibe la letra 7 antes de la letra 1, eso no es bueno. si su amigo por correspondencia recibe todas las letras excepto la letra 3, eso tampoco es bueno.
Así es como nos aseguramos de que se cumplan nuestros requisitos:
fuente
TLDR;
Antes de comenzar, recuerde que todas las desventajas de algo son una continuación de sus ventajas . Solo hay una herramienta adecuada para un trabajo, no hay panacea. TCP / UDP coexistió durante décadas, y por una razón.
TCP
Fue diseñado para ser extremadamente confiable y hace su trabajo muy bien. Es muy complejo porque realiza una tarea difícil: demostrar un transporte confiable a través del protocolo IP poco confiable.
Dado que toda la lógica compleja de TCP está encapsulada en la pila de red, no tiene que hacer muchas tareas laboriosas y propensas a errores de bajo nivel en la capa de aplicación.
Cuando envía datos a través de TCP, escribe una secuencia de bytes en el socket en el remitente donde se divide en paquetes, se pasa por la pila y se envía por cable. En el lado del receptor, los paquetes se vuelven a ensamblar en un flujo continuo de bytes.
Mantener esta agradable abstracción tiene un costo en términos de complejidad y rendimiento. Si se pierde el primer paquete del flujo de bytes, el receptor retrasará el procesamiento de los paquetes posteriores, incluso aquellos que ya han llegado.
Además, para ser confiable, TCP implementa esto:
Todo esto se exacerba en redes inalámbricas lentas y poco confiables, mientras que TCP fue diseñado para redes cableadas donde los retrasos son predecibles y la pérdida de paquetes no es tan común. Además, como muchas personas ya mencionaron, para algunas cosas TCP simplemente no funciona en absoluto (DHCP). Sin embargo, cuando es relevante, TCP todavía hace su trabajo excepcionalmente bien.
Al usar una analogía de correo, una sesión TCP es similar a contarle una historia a su secretaria, que la divide en correos y envía un servicio de correo basura a un editor. Por otro lado, otra secretaria reúne los correos en un solo texto. Algunos correos se pierden, otros se corrompen, por lo que se requiere un procedimiento muy complejo para una entrega confiable y su historia de 10 páginas puede tardar mucho tiempo en llegar a su editor.
UDP
UDP, por otro lado, está orientado a mensajes, por lo que un receptor escribe un mensaje (paquete) en el zócalo y luego se transmite a un receptor tal cual, sin ninguna división / ensamblaje.
En comparación con TCP, su especificación es muy simple. Esencialmente, todo lo que hace por usted es agregar una suma de verificación al paquete para que un receptor pueda detectar su corrupción. Todo lo demás debe ser implementado por usted, un desarrollador de software. Ahora lea la voluminosa especificación TCP e intente volver a implementar algunas partes de ella.
Algunas personas tomaron este camino y obtuvieron resultados muy decentes, hasta el punto de que HTTP / 3 usa QUIC, un protocolo basado en UDP. Sin embargo, esto es más una excepción. Las aplicaciones comunes de UDP son aplicaciones de audio / video y conferencias como Skype, Zoom o Google Hangout, donde perder paquetes no es tan importante en comparación con un retraso introducido por TCP.
fuente