Diferencia entre TCP y UDP?

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

Sé que TCP se usa en el caso de aplicaciones que no son de tiempo crítico, 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 es una transmisión orientada 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, que causa retrasos adicionales y una transmisión general menos eficiente que UDP .

    UDP es un protocolo sin conexión. La comunicación está orientada a datagtwigs . La integridad está garantizada solo en el datagtwig individual. Los datagtwigs llegan a destino y pueden llegar desordenados o no llegar. Es más eficiente que TCP porque usa no 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 una conexión TCP .

    En ciertas situaciones, UDP se utiliza porque permite la transmisión de paquetes de difusión. Esto es a veces fundamental en casos como el protocolo DHCP , porque la máquina cliente todavía no ha recibido una dirección IP (este es el propósito del protocolo de negociación DHCP ) y no habrá forma de establecer una transmisión TCP sin la dirección IP en sí misma.

    Del artículo de Skullbox:

    TCP (Transmission Control Protocol) es el protocolo más utilizado en Internet. La razón de esto es porque TCP ofrece corrección de errores. Cuando se usa el protocolo TCP, hay una “entrega garantizada”. Esto se debe en gran medida en parte a un método llamado “control de flujo”. El control de flujo determina cuándo se deben reenviar los datos, y detiene el flujo de datos hasta que los paquetes anteriores se transfieran con éxito. Esto funciona porque si se envía un paquete de datos, puede producirse una colisión. Cuando esto sucede, el cliente vuelve a solicitar el paquete desde el servidor hasta que se completa el paquete y es idéntico al original.

    UDP (User Datagram Protocol) es otro protocolo comúnmente utilizado en Internet. Sin embargo, UDP nunca se usa para enviar datos importantes como páginas web, información de bases de datos, etc .; UDP se usa comúnmente para transmitir audio y video. Los medios de transmisión como archivos de audio de Windows Media (.WMA), Real Player (.RM) y otros usan UDP porque ofrece velocidad. La razón por la que UDP es más rápido que TCP es porque no hay forma de control de flujo o corrección de errores. Los datos enviados a través de Internet se ven afectados por las colisiones y los errores estarán presentes. Recuerde que UDP solo se preocupa por la velocidad. Esta es la razón principal por la que los medios de transmisión no son de alta calidad. 1) TCP está orientado a la conexión y es confiable cuando UDP es menos conexión y poco fiable.

    2) TCP necesita más procesamiento en el nivel de interfaz de red donde, como en UDP, no.

    3) usos TCP, apretón de manos de 3 vías, control de congestión, control de flujo y otros mecanismos para garantizar la transmisión confiable.

    4) UDP se utiliza principalmente en los casos en que el retraso del paquete es más grave que la pérdida de paquetes.

    Piense en TCP como una recolección / entrega de paquetes UPS / FedEx progtwigda y dedicada entre dos ubicaciones, mientras que UDP es el equivalente a tirar una postal en un buzón.

    UPS / FedEx hará su mejor esfuerzo para asegurarse de que el paquete que envía por correo llegue allí y lo ponga a tiempo. Con la tarjeta postal, tienes suerte si llega y puede llegar fuera de servicio o tarde (¿cuántas veces has recibido una postal de alguien DESPUÉS de que han llegado a casa después de las vacaciones?)

    TCP es lo más cercano posible a un protocolo de entrega garantizado, mientras que UDP es simplemente el “mejor esfuerzo”.

    Razones 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 la conexión TCP está cerrada, se requiere que el servidor recuerde 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 erróneamente repetidos de una conexión precedente que se interpreta como parte de una conexión actual. El mantenimiento de TIME_WAIT_2 consume la memoria del kernel en el servidor. Las solicitudes de DNS son pequeñas y llegan con frecuencia de 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 y no tiene un estado que mantener tanto en el cliente como en el servidor, mejoraría este problema.

    DHCP: DHCP es una extensión de BOOTP. BOOTP es un protocolo que las computadoras cliente usan para obtener información de configuración de un servidor, mientras el cliente está arrancando. Para ubicar 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 requirió al menos un paquete UDP para la transmisión de localización del servidor. Además, dado 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 stack 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. La razón es que están construidos con procesadores tan pequeños y poca memoria que no pueden realizar TCP; sin embargo, aún necesitan obtener una dirección IP cuando inician.

    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 sueltas los paquetes retrasados. Puedes hacer eso con UDP, pero con TCP todo lo que obtienes durante el retraso es una pausa, seguido de audio que siempre se retrasará tanto como lo haya pausado. Para conversaciones telefónicas bidireccionales, esto es inaceptable.

    Una de las diferencias es en pocas palabras

    UDP : envíe un mensaje y no mire hacia atrás si llegó al destino, protocolo sin conexión
    TCP : Enviar mensaje y garantía para llegar a destino, protocolo orientado a la conexión

    TCP establece una conexión antes de que se produzca la transmisión de datos real, UDP no. De esta forma, UDP puede proporcionar una entrega más rápida. Aplicaciones como DNS, acceso a servidor horario, por lo tanto, usan UDP.

    A diferencia de UDP, TCP usa control de congestión. Responde a la carga de la red. A diferencia del UDP, se ralentiza cuando la congestión de la red es inminente. Por lo tanto, las aplicaciones como los multimedia que prefieren un rendimiento constante pueden ir por UDP.

    Además, UDP no es confiable, no reactjs ante las pérdidas 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 la transferencia web, el correo electrónico, la descarga de archivos, prefieren TCP.

    Además, en el Internet de hoy, UDP no es tan acogedor como TCP debido a los cuadros intermedios. Algunas aplicaciones como skype caen en TCP cuando se supone que la conexión UDP está bloqueada.

    La ley de las extravagancias por Joel Spolsky

    http://www.joelonsoftware.com/articles/LeakyAbstractions.html

    Diferencias cortas y simples entre el protocolo Tcp y Udp:

    1) Tcp – protocolo de control de transmisión y Udp – protocolo de datagtwigs de usuario.

    2) Tcp es un protocolo confiable, donde como Udp es un protocolo no confiable.

    3) Tcp es un flujo orientado, mientras que Udp es un protocolo orientado a mensajes.

    4) Tcp es más lento que Udp.

    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 buenos viejos tiempos antes de Internet).

    Debe enviar a su amigo por correspondencia los siete hábitos de personas altamente efectivas. Entonces decide enviarlo en siete cartas separadas:

    1. Carta 1 – Sé proactivo
    2. Letra 2: comienza con el final en mente …

    etc.

    etc. Letra 7 – Afila la sierra

    Requisitos:

    Desea asegurarse de que su amigo por correspondencia reciba todas sus cartas, en orden y que lleguen perfectamente . Si el pago de su pluma 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:

    • Carta de confirmación: Entonces, su amigo por correspondencia envía una carta de confirmación para decir “He recibido la carta 1”. De esa forma sabrá que su amigo por correspondencia lo ha recibido. Si una carta no llega o llega fuera de servicio, entonces tiene que detenerse, volver atrás y volver a enviar esa carta, y todas las cartas subsiguientes.
    • Control de flujo: alrededor de la época de Navidad, usted sabe que su amigo por correspondencia recibirá una gran cantidad de correo, por lo que desacelera porque no desea abrumar a su amigo por correspondencia. (Su amigo por correspondencia le envía actualizaciones constantes sobre la cantidad de mensajes no leídos que hay en el buzón de correo de Penpal; si su amigo por correspondencia dice que la bandeja de entrada está a punto de explotar porque está llena, entonces desparece enviando cartas) porque su amigo por correspondencia no podrá leerlos.
    • Llegada perfecta A veces, mientras envía su carta por correo, puede romperse, o un caracol puede comerse la mitad. ¿Cómo sabes que toda tu carta ha llegado en perfecto estado? Bueno, su amigo por correspondencia le dará un mecanismo por el cual puede verificar si recibió la carta completa y que fue exactamente la carta que envió. (por ejemplo, a través de un conteo de palabras, etc.). una analogía básica.