¿HTTP usa UDP?

Esta podría ser una pregunta tonta:

  • ¿Alguna vez HTTP utiliza el protocolo de datagtwigs de usuario?

Por ejemplo:

Si uno está transmitiendo MP3 o video usando HTTP, ¿usa internamente UDP para el transporte?

Típicamente, no.

La transmisión por secuencias casi nunca se usa en HTTP, y el HTTP rara vez se ejecuta sobre UDP. Ver, sin embargo, RTP .

Para algo como tu ejemplo (en el comentario), no estás mostrando un protocolo para el recurso. Si ese protocolo fuera HTTP, no llamaría “transmisión” al acceso; incluso si es en algún sentido de la palabra, ya que está enviando un recurso (posiblemente grande) en serie a través de una red. Normalmente, el recurso se guardará en el disco local antes de ser reproducido, por lo que la transferencia de red no es lo que generalmente se entiende por “transmisión”.

Sin embargo, como comentaron los comentaristas, ciertamente es posible transmitir realmente a través de HTTP, y algunos lo hacen.

De RFC 2616 :

La comunicación HTTP generalmente se lleva a cabo a través de conexiones TCP / IP. El puerto predeterminado es TCP 80, pero se pueden usar otros puertos. Esto no impide que HTTP se implemente sobre cualquier otro protocolo en Internet o en otras redes. HTTP solo supone un transporte confiable; se puede usar cualquier protocolo que proporcione tales garantías; el mapeo de las estructuras de solicitud y respuesta HTTP / 1.1 en las unidades de datos de transporte del protocolo en cuestión está fuera del scope de esta especificación.

Entonces, aunque no lo dice explícitamente, UDP no se usa porque no es un “transporte confiable”.

Tal vez solo un poco de trivia, pero UPnP usará mensajes formateados HTTP sobre UDP para el descubrimiento de dispositivos.

Sí, HTTP, como protocolo de aplicación, se puede transferir a través del protocolo de transporte UDP. Estos son algunos de los servicios que usan UDP y un protocolo subyacente para transferir datos HTTP y transmitirlos al usuario final:

  • Método de transporte UDP Jingle Raw de XMPP
  • Un número para servicios que usan UDT — Protocolo de transferencia de datos basado en UDP, que es un superconjunto del protocolo UDP.
  • El protocolo de seguridad de la capa de transporte (TLS) que encapsula HTTP, así como el mencionado XMPP y otros protocolos de aplicación, tiene una implementación que usa UDP en su capa de transporte; esta implementación se llama Datagram Transport Layer Security (DTLS).
  • Las notificaciones push en GNUTella son solicitudes HTTP enviadas a través de transporte UDP.

Este artículo contiene más detalles sobre la transmisión por UDP y su superconjunto confiable, el RUDP: UDP confiable (RUDP): ¿el próximo protocolo de transmisión continua?

Por supuesto, no necesariamente tiene que transmitirse a través de TCP. Implementé HTTP sobre UDP, para usar en la industria de transmisión de TV satelital.

Quizás algún cambio en este tema con QUIC

QUIC (Quick Internet Conexiones de Internet, pronunciado rápido) es un protocolo de red de capa de transporte experimental desarrollado por Google e implementado en 2013. QUIC admite un conjunto de conexiones multiplexadas entre dos puntos finales a través del Protocolo de datagtwigs de usuario (UDP) y fue diseñado para proporcionar protección de seguridad equivalente a TLS / SSL, junto con una latencia de conexión y transporte reducida, y una estimación del ancho de banda en cada dirección para evitar la congestión. El objective principal de QUIC es optimizar las aplicaciones web orientadas a la conexión que actualmente usan TCP.

Intente ejecutar HTTP sobre UDP con node-httpp:

https://github.com/InstantWebP2P/node-httpp

Si está transmitiendo un mp3 o un video que puede no ser necesariamente por HTTP, de hecho, me sorprendería si fuera así. Probablemente sea otro protocolo sobre TCP, pero no veo ninguna razón por la cual no se pueda transmitir a través de UDP.

Si lo hace, debe tener en cuenta que no hay certeza de que sus datos llegarán al otro extremo, pero puedo entender que usted sabe acerca de UDP.

Para responder su pregunta, No, HTTP NO usa UDP. Sin embargo, para lo que hablas, la transmisión de mp3 / video PODRÍA pasar por UDP y, en mi opinión, nunca debería pasar por HTTP.

La respuesta:

Motivo: Ver el modelo OSI.

Explicación

HTTP es un protocolo de capa de aplicación, que se puede encapsular con un protocolo que usa UDP, proporcionando una comunicación confiable mucho más rápida que TCP. El daemon del servidor y el cliente obviamente necesitarían soportar este nuevo protocolo. El protocolo Quake 2 demuestra que UDP se puede usar a través de TCP para proporcionar una base para un sistema de comunicación estructurado asegurando el control de flujo (por ejemplo, identificadores de fragmentos).

http sobre udp es utilizado por algunas implementaciones de seguimiento de torrents (y soporte por todos los clientes principales)

En teoría sí, es posible usar UDP para http, pero eso podría ser problemático. Digamos, por ejemplo, en su ejemplo que se está transmitiendo un archivo mp3 o un video, que habrá un problema de pedido y que algunos bits pueden perderse, ya que el UDP no está orientado a la conexión, no hay un mecanismo de retransmisión.

UDP es el mejor protocolo para la transmisión, ya que no exige que falten paquetes como TCP. Y si no exige nada, el flujo es mucho más rápido y sin ningún almacenamiento intermedio.

Incluso el retraso de la secuencia es menor que TCP. Esto se debe a que TCP (como protocolo mucho más seguro) exige demandas por paquetes faltantes, sobrescribiendo los existentes.

Entonces TCP es un protocolo demasiado avanzado para ser utilizado para la transmisión.

Creo que a algunas de las respuestas les falta un punto importante. La elección entre UDP y TCP no debe basarse en el tipo de datos (por ejemplo, audio o video) o si la aplicación comienza a reproducirlo antes de que se complete la transferencia (“transmisión”), sino si es en tiempo real . Los datos en tiempo real son (por definición) sensibles al retardo, por lo que a menudo se envía mejor a través de RTP / UDP (protocolo de tiempo real sobre UDP).

El retraso no es un problema con los datos almacenados de un archivo, incluso si es de audio y / o video, por lo que probablemente se envíe mejor a través de TCP para que cualquier pérdida de paquetes se pueda corregir. El remitente puede leer con anticipación y mantener el canal de red lleno y el receptor también puede usar una gran cantidad de almacenamiento intermedio de reproducción para que no sea interrumpido por la retransmisión TCP ocasional o la desaceleración momentánea de la red. El caso límite es donde se transfiere toda la grabación antes de que comience la reproducción. Esto elimina cualquier riesgo de pérdida de reproducción, pero a menudo no es práctico.

El problema con el TCP para los datos en tiempo real no radica tanto en las retransmisiones como en el exceso de almacenamiento en búfer, ya que TCP intenta usar el conducto de la manera más eficiente posible sin tener en cuenta la latencia. UDP conserva los límites del paquete de aplicaciones y no tiene almacenamiento interno, por lo que no introduce ninguna latencia.