Dies könnte eine dumme Frage sein:
- Verwendet HTTP jemals das User Datagram Protocol?
Beispielsweise:
Wenn man MP3 oder Video über HTTP streamt, verwendet es intern UDP für den Transport?
Dies könnte eine dumme Frage sein:
Beispielsweise:
Wenn man MP3 oder Video über HTTP streamt, verwendet es intern UDP für den Transport?
Antworten:
Normalerweise nein.
Streaming wird selten über HTTP selbst verwendet, und HTTP wird selten über UDP ausgeführt. Siehe jedoch RTP .
Für etwas als Ihr Beispiel (im Kommentar) zeigen Sie kein Protokoll für die Ressource an. Wenn dieses Protokoll HTTP wäre, würde ich den Zugriff nicht als "Streaming" bezeichnen. selbst wenn es im wahrsten Sinne des Wortes so ist, dass es eine (möglicherweise große) Ressource seriell über ein Netzwerk sendet. In der Regel wird die Ressource vor der Wiedergabe auf der lokalen Festplatte gespeichert, sodass die Netzwerkübertragung nicht mit "Streaming" gemeint ist.
Wie Kommentatoren jedoch betont haben, ist es sicherlich möglich, wirklich über HTTP zu streamen, und das wird von einigen getan.
server push
HTTP-Verbindung, die MJPEG (mehrere JPEG-Bilder) als separaten Teil einer mehrteiligen MIME-Antwort auf die HTTP-Anforderung sendete. Jedes JPEG-Bild kommt an und ersetzt das vorherige in der Anzeige. Aber Sie haben Recht @unwind, dies wird heute selten gemacht, da RTP / RTSP besser funktioniert.
Aus RFC 2616 :
Die HTTP-Kommunikation erfolgt normalerweise über TCP / IP-Verbindungen. Der Standardport ist TCP 80, es können jedoch auch andere Ports verwendet werden. Dies schließt nicht aus, dass HTTP über einem anderen Protokoll im Internet oder in anderen Netzwerken implementiert wird. HTTP setzt nur einen zuverlässigen Transport voraus; Jedes Protokoll, das solche Garantien bietet, kann verwendet werden. Die Zuordnung der HTTP / 1.1-Anforderungs- und Antwortstrukturen zu den Transportdateneinheiten des betreffenden Protokolls liegt außerhalb des Geltungsbereichs dieser Spezifikation.
Obwohl dies nicht ausdrücklich angegeben ist, wird UDP nicht verwendet, da es sich nicht um einen "zuverlässigen Transport" handelt.
BEARBEITEN - In jüngerer Zeit verwendet das QUIC-Protokoll (das strenger ein Pseudotransport- oder Sitzungsschichtprotokoll ist) UDP für die Übertragung von HTTP / 2.0-Verkehr, und ein Großteil des Google-Verkehrs verwendet dieses Protokoll bereits. Derzeit wird die Standardisierung als HTTP / 3 vorangetrieben .
Vielleicht nur ein bisschen Trivia, aber UPnP verwendet HTTP-formatierte Nachrichten über UDP für die Geräteerkennung.
METHOD
Menge ist unterschiedlich. Danach verwendet UPnP andere Protokolle (und normalerweise TCP) für den Rest seiner Arbeit.
Ja, HTTP als Anwendungsprotokoll kann über das UDP-Transportprotokoll übertragen werden. Hier sind einige der Dienste, die UDP und ein zugrunde liegendes Protokoll zum Übertragen und Streamen von HTTP-Daten an den Endbenutzer verwenden:
Dieser Artikel enthält weitere Details zum Streaming über UDP und seiner zuverlässigen Obermenge, dem RUDP: Reliable UDP (RUDP): Das nächste große Streaming-Protokoll?
Vielleicht einige Änderungen zu diesem Thema mit QUIC
QUIC (Quick UDP Internet Connections, ausgesprochen schnell) ist ein experimentelles Transportschicht-Netzwerkprotokoll, das von Google entwickelt und 2013 implementiert wurde. QUIC unterstützt eine Reihe von Multiplex-Verbindungen zwischen zwei Endpunkten über das User Datagram Protocol (UDP) und wurde entwickelt, um Sicherheitsschutz zu bieten Entspricht TLS / SSL, zusammen mit einer reduzierten Verbindungs- und Transportlatenz und einer Bandbreitenschätzung in jeder Richtung, um eine Überlastung zu vermeiden. Das Hauptziel von QUIC ist die Optimierung verbindungsorientierter Webanwendungen, die derzeit TCP verwenden.
Wenn Sie eine MP3- oder Video-Datei streamen, die möglicherweise nicht unbedingt über HTTP übertragen wird, wäre ich in der Tat überrascht, wenn dies der Fall wäre. Es wäre wahrscheinlich ein anderes Protokoll über TCP, aber ich sehe keinen Grund, warum Sie nicht über UDP streamen können.
Wenn Sie dies tun, müssen Sie berücksichtigen, dass es keine Gewissheit gibt, dass Ihre Daten am anderen Ende ankommen, aber ich kann davon ausgehen, dass Sie über UDP Bescheid wissen.
Um Ihre Frage zu beantworten: Nein, HTTP verwendet KEIN UDP. Für das, worüber Sie sprechen, könnte MP3 / Video-Streaming über UDP erfolgen und sollte meiner Meinung nach niemals über HTTP erfolgen.
Theoretisch ist es ja möglich, UDP für http zu verwenden, aber das könnte problematisch sein. Nehmen wir zum Beispiel an, in Ihrem Beispiel wird eine MP3-Datei oder ein Video gestreamt. Es besteht ein Bestellproblem, und einige Bits gehen möglicherweise verloren, da UDP nicht verbindungsorientiert ist und es keinen Mechanismus für die erneute Übertragung gibt.
UDP is not connection oriented there is no retransmit mechanism
.
Ich denke, einigen Antworten fehlt ein wichtiger Punkt. Die Wahl zwischen UDP und TCP sollte nicht von der Art der Daten (z. B. Audio oder Video) abhängen oder davon, ob die Anwendung sie vor Abschluss der Übertragung abspielt ("Streaming"), sondern davon, ob es sich um Echtzeit handelt . Echtzeitdaten sind (per Definition) verzögerungsempfindlich, daher werden sie häufig am besten über RTP / UDP (Real Time Protocol over UDP) gesendet.
Verzögerung ist kein Problem mit gespeicherten Daten aus einer Datei, selbst wenn es sich um Audio und / oder Video handelt. Daher wird sie wahrscheinlich am besten über TCP gesendet, damit Paketverluste korrigiert werden können. Der Absender kann vorauslesen und die Netzwerkleitung voll halten, und der Empfänger kann auch viel Playout-Puffer verwenden, damit er nicht durch gelegentliche TCP-Neuübertragung oder vorübergehende Netzwerkverlangsamung unterbrochen wird. Im Grenzfall wird die gesamte Aufnahme übertragen, bevor die Wiedergabe beginnt. Dies eliminiert das Risiko eines Wiedergabestopps, ist jedoch häufig unpraktisch.
Das Problem mit TCP für Echtzeitdaten ist nicht die erneute Übertragung, sondern die übermäßige Pufferung, da TCP versucht, die Pipe ohne Rücksicht auf die Latenz so effizient wie möglich zu nutzen. UDP behält Anwendungspaketgrenzen bei und verfügt über keinen internen Speicher, sodass keine Latenz entsteht.
Die Antwort: Ja
Grund: Siehe OSI-Modell.
Erklärung:
HTTP ist ein Protokoll der Anwendungsschicht, das mit einem Protokoll gekapselt werden kann, das UDP verwendet und eine wahrscheinlich schnellere und zuverlässigere Kommunikation als TCP bietet. Der Server-Daemon und der Client müssten dieses neue Protokoll offensichtlich unterstützen. Das Quake 2-Protokoll beweist, dass UDP über TCP verwendet werden kann, um eine Grundlage für ein strukturiertes Kommunikationssystem bereitzustellen, das die Flusskontrolle sicherstellt (z. B. Chunk-IDs).
Versuchen Sie, HTTP über UDP mit Node-httpp auszuführen:
http over udp wird von einigen Torrent-Tracker-Implementierungen verwendet (und von allen Hauptclients unterstützt).
(Dies ist eine alte Frage, die jedoch eine aktualisierte Antwort verdient.)
Höchstwahrscheinlich verwendet HTTP / 3 das QUIC-Protokoll , das als beschrieben wird
Multiplex-Transport über UDP
Unter einem bestimmten Gesichtspunkt könnte man also sagen, dass HTTP / 3 UDP verwenden wird.
UDP ist das beste Protokoll für das Streaming, da keine Anforderungen an fehlende Pakete wie TCP gestellt werden. Und wenn es keine Anforderungen stellt, ist der Fluss viel schneller und ohne Pufferung.
Sogar die Stream-Verzögerung ist geringer als bei TCP. Dies liegt daran, dass TCP (als weitaus sichereres Protokoll) Anforderungen an fehlende Pakete stellt und die vorhandenen überschreibt.
TCP ist also ein zu fortgeschrittenes Protokoll, um für das Streaming verwendet zu werden.