¿HTTP utiliza TCP o UDP? ¿Por qué?

HTTP usa conexión TCP. Pero HTTP usa solo una conexión TCP.
En HTTP, el cliente inicia una sesión HTTP abriendo una conexión TCP al servidor HTTP con el que desea comunicarse. Luego envía mensajes de solicitud al servidor, cada uno de los cuales especifica un tipo particular de acción que el usuario del cliente HTTP desea que el servidor tome. El servidor responde a la solicitud del cliente y envía los datos que desea. Pero HTTP usa solo una conexión TCP, es decir, de cliente a servidor, no hay conexión TCP de servidor a cliente. El servidor envía datos al cliente, no hay garantía de que el cliente los obtenga. Si el cliente no obtiene los datos en el TTL (tiempo de vida), nuevamente realiza una solicitud de datos.
Necesitamos una conexión confiable de cliente a servidor para que el servidor pueda recibir todas las solicitudes hechas por el cliente. No hay necesidad de una conexión confiable de servidor a cliente. Si el cliente no obtiene los datos que solicita en el momento, él nuevamente realiza solicitudes para los datos.

Si bien es completamente posible construir un mecanismo de transporte confiable sobre los datagramas UDP (el protocolo QUIC experimental de Google hace exactamente eso), rara vez es necesario reinventar la rueda cuando TCP ya es un estándar.

HTTP usa TCP porque los archivos, las imágenes y las páginas web que obtenemos del host remoto no deben descartarse en el camino y deben entregarse para el cliente HTTP.
HTTP también podría usar UDP, pero generalmente no, si se pierde un paquete UDP que contiene la primera parte de una página web, no se retransmite. Necesitamos escribir algo de código en la capa de aplicación para manejar estas retransmisiones de paquetes perdidos cuando usamos UDP.
Como no queremos cargar a los navegadores web (capa de aplicación) al hacer este trabajo en lugar de hacer el trabajo real de renderizar páginas, usamos TCP.

HTTP usa TCP en lugar de UDP porque garantiza la entrega a través de un enlace de tres vías y la retransmisión de paquetes perdidos. UDP se utiliza principalmente para la transmisión de voz y video para evitar el ensamblaje de paquetes fuera de servicio que puede causar jitter y no requiere el uso de un protocolo de enlace de tres vías más allá del SIP, los protocolos Skinny utilizados para configurar la llamada. TCP retransmitirá los paquetes perdidos y garantizará que todos los datos se reciban como resultado, asegurando que obtendrá todas las imágenes, enlaces y otros elementos de la página web. Si lo hace con una llamada de voz, habrá problemas de calidad de la llamada cuando los paquetes lleguen fuera de servicio o se descarten y haya un retraso en la espera de que ese paquete vuelva a transmitirse.

Espero que esto ayude.

HTTP utiliza TCP, ya que necesita un servicio de entrega confiable subyacente. La mayoría de los navegadores web utilizan el protocolo HTTP para mostrar sitios web en el navegador del cliente y no desea que falten algunos paquetes en la vista.

Recientemente completé un artículo para enumerar los trabajos de investigación más influyentes en el desarrollo de protocolos TCP / IP. No olvides echarle un vistazo.

Debe leer documentos de investigación sobre redes de computadoras