web-dev-qa-db-fra.com

HTTP utilise-t-il UDP?

Cela pourrait être une question idiote:

  • Est-ce que HTTP utilise le protocole de datagramme utilisateur?

Par exemple:

Si vous diffusez des fichiers MP3 ou vidéo via HTTP, utilisez-vous en interne UDP pour le transport?

94
Sesh

Typiquement non.

Le streaming est rarement utilisé sur HTTP lui-même, et HTTP est rarement exécuté sur UDP. Voir cependant RTP .

Pour quelque chose comme votre exemple (dans le commentaire), vous n’affichez pas de protocole pour la ressource. Si ce protocole devait être HTTP, je n'appellerais pas l'accès "streaming"; même si, dans un certain sens du mot, il en est ainsi car il envoie une ressource (éventuellement une grande) en série sur un réseau. En règle générale, la ressource est enregistrée sur le disque local avant d'être lue. Le transfert réseau n'est donc pas ce que l'on entend habituellement par "diffusion en continu".

Comme les commentateurs l'ont fait remarquer, cependant, il est certainement possible de réellement diffuser en continu sur HTTP, et certains le font.

38
unwind

De RFC 2616 :

La communication HTTP a généralement lieu via des connexions TCP/IP. Le port par défaut est TCP 80, mais vous pouvez utiliser d'autres ports. Cela n'empêche pas HTTP d'être implémenté par-dessus tout autre protocole sur Internet ou sur d'autres réseaux. HTTP suppose seulement une transport fiable; tout protocole fournissant de telles garanties peut être utilisé; le mappage des structures de demande et de réponse HTTP/1.1 sur les unités de données de transport du protocole en question sort du cadre de la présente spécification.

Ainsi, bien qu'il ne le dise pas explicitement, le protocole UDP n'est pas utilisé car il ne s'agit pas d'un "transport fiable".

[~ # ~] edit [~ # ~] - plus récemment, le protocole QUIC (qui est plus strictement un pseudo-transport ou un protocole de couche de session ) utilise UDP pour transporter le trafic HTTP/2.0 et une grande partie du trafic de Google utilise déjà ce protocole. Cependant, il n'est pas encore publié en tant que RFC.

105
Alnitak

Peut-être juste un petit détail, mais UPnP utilisera des messages au format HTTP sur UDP pour la découverte de périphériques.

35
Frank Schwieterman

Oui, HTTP, en tant que protocole d'application, peut être transféré via le protocole de transport UDP. Voici certains des services qui utilisent UDP et un protocole sous-jacent pour transférer des données HTTP et les transmettre à l'utilisateur final:

  • Méthode de transport Jingle Raw UDP de XMPP
  • Un numéro pour les services qui utilisent UDT --- UDP-based Data Transfer Protocol, qui est le sur-ensemble du protocole UDP.
  • Le protocole TLS (Transport Layer Security) encapsulant HTTP, ainsi que les protocoles XMPP et autres applications susmentionnés, comporte une implémentation qui utilise UDP dans sa couche de transport; cette implémentation s'appelle Datagram Transport Layer Security (DTLS).
  • Les notifications push dans GNUTella sont des requêtes HTTP envoyées via le transport UDP.

Cet article contient des informations supplémentaires sur la diffusion en continu sur UDP et son super-ensemble fiable, le RUDP: DP fiable (RUDP): le prochain grand protocole de diffusion en continu?

18
Exotic Hadron

Bien sûr, cela ne doit pas nécessairement être transmis via TCP. J'ai implémenté HTTP sur UDP, pour une utilisation dans le secteur de la diffusion de télévision par satellite.

17
jkc

Peut-être que certains changements sur ce sujet avec QUIC

QUIC (Quick UDP Internet Connections, prononcé quick) est un protocole réseau expérimental développé par Google et mis en œuvre en 2013. QUIC prend en charge un ensemble de connexions multiplexées entre deux points de terminaison via le protocole UDP (User Datagram Protocol). Il a été conçu pour assurer la sécurité. équivalent à TLS/SSL, avec une latence de connexion et de transport réduite et une estimation de la bande passante dans chaque direction pour éviter les encombrements. L'objectif principal de QUIC est d'optimiser les applications Web orientées connexion utilisant actuellement le protocole TCP.

6
Sébastien

Si vous diffusez un mp3 ou une vidéo qui n'est pas nécessairement sur HTTP, je serais surpris de le savoir. Ce serait probablement un autre protocole sur TCP mais je ne vois aucune raison pour laquelle vous ne pouvez pas diffuser sur UDP.

Si vous le faites, vous devez tenir compte du fait qu’il n’ya aucune certitude que vos données parviendront à l’autre bout, mais je peux considérer que vous connaissez l’UDP.

Pour répondre à votre question, non, HTTP n'utilise pas UDP. Pour ce dont vous parlez, le streaming MP3/vidéo POURRAIENT avoir lieu via UDP et, à mon avis, ne devrait jamais se produire via HTTP.

4
Henry B

En théorie, oui, il est possible d’utiliser UDP pour http, mais cela pourrait poser problème. Supposons, par exemple, dans votre exemple, qu'un mp3 ou une vidéo soit en streaming, il y aura un problème de commande et certains bits pourraient disparaître, car UDP n'est pas orienté connexion, il n'y a pas de mécanisme de retransmission.

4
HM Manya

Je pense que certaines des réponses manquent un point important. Le choix entre UDP et TCP devrait pas être basé sur le type de données (audio ou vidéo, par exemple) ou sur le fait que l'application commence à les lire avant le transfert terminé ("streaming"), mais si elle est temps réel. Les données en temps réel sont (par définition) sensibles au délai, de sorte qu'elles sont souvent mieux envoyées via RTP/UDP (protocole temps réel sur UDP) .

Le délai n’est pas un problème avec les données stockées d’un fichier, même s’il s’agit de données audio et/ou vidéo. Il est donc préférable de les envoyer plus TCP afin que toute perte de paquet puisse être corrigée. L’expéditeur peut lire gardez le canal réseau plein et le récepteur peut également utiliser de nombreuses mises en tampon de lecture afin de ne pas être interrompu par la retransmission occasionnelle TCP ou un ralentissement momentané du réseau. Le cas limite en est le cas entier). l'enregistrement est transféré avant le début de la lecture, ce qui élimine tout risque de blocage de la lecture, mais est souvent impraticable.

Le problème avec TCP pour les données en temps réel, c’est moins les retransmissions que la mise en mémoire tampon excessive; TCP essaie d’utiliser le canal aussi efficacement que possible, sans se soucier des UDP préserve les limites des paquets d’application et n’a pas de mémoire interne, il n’introduit donc aucune latence.

3
Phil Karn

La réponse: Oui

Reason: Voir le modèle OSI.

Explication:

HTTP est un protocole de couche application, qui pourrait être encapsulé avec un protocole utilisant UDP, offrant une communication fiable plus rapide que TCP. Le démon et le client du serveur devront évidemment prendre en charge ce nouveau protocole. Le protocole Quake 2 prouve qu’UDP peut être utilisé sur TCP) pour fournir une base à un système de communication structuré assurant le contrôle de flux (par exemple, des identifiants de blocs).

3
savvy

Essayez de lancer HTTP sur UDP avec node-httpp:

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

3
sequoiar

http over udp est utilisé par certaines implémentations de tracker torrent (et supporteb par tous les clients principaux)

2
user2946342

(Ceci est une vieille question, mais elle mérite une réponse mise à jour.)

Très probablement , HTTP/3 utilisera le protocole QUIC , décrit comme suit:

transport multiplexé sur UDP

Donc, d'un certain point de vue , vous pourriez dire que HTTP/3 utilisera UDP.

2
jub0bs

UDP est le meilleur protocole pour la diffusion en continu, car il n'impose pas de paquets manquants comme TCP. Et si cela ne crée pas de demandes, le flux est beaucoup plus rapide et sans aucune mise en mémoire tampon.

Même le délai du flux est inférieur à celui de TCP. En effet, TCP (en tant que protocole beaucoup plus sécurisé) demande des packages manquants, en remplaçant les packages existants.

Donc TCP est un protocole trop avancé pour pouvoir être utilisé en streaming.

1
Pavel