¿HTTP usa UDP?
(12)
Esta podría ser una pregunta tonta:
- ¿Alguna vez HTTP utiliza el protocolo de datagramas de usuario?
Por ejemplo:
Si uno está transmitiendo MP3 o video usando HTTP, ¿usa internamente UDP para el transporte?
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 alcance de esta especificación.
Entonces, aunque no lo dice explícitamente, UDP no se usa porque no es un "transporte confiable".
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.
Intente ejecutar HTTP sobre UDP con node-httpp:
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 datagramas 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 objetivo principal de QUIC es optimizar las aplicaciones web orientadas a la conexión que actualmente usan TCP.
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?
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.
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.
Tal vez solo un poco de trivia, pero UPnP usará mensajes formateados HTTP sobre UDP para el descubrimiento de dispositivos.
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.
http sobre udp es utilizado por algunas implementaciones de seguimiento de torrents (y soporte por todos los clientes principales)
La respuesta: sí
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).