L'Hypertext Transfer Protocol (HTTP, littéralement « protocole de transfert hypertexte ») est utilisé pour charger des pages sur Internet à l'aide d'hyperliens.
Cet article s'articule autour des points suivants :
Contenu associé
Attaque HTTP flood
TCP/IP
User Datagram Protocol (UDP)
Pare-feu d'applications web (WAF)
Logiciels malveillants
Abonnez-vous à theNET, le récapitulatif mensuel de Cloudflare des idées les plus populaires concernant Internet !
Copier le lien de l'article
Le HTTP (Hypertext Transfer Protocol) constitue le fondement premier du World Wide Web. Il sert à charger les pages web à l'aide de liens hypertextes. Conçu pour transférer des informations entre des appareils connectés en réseau, ce protocole de couche applicative s'exécute au-dessus des autres couches de la pile de protocoles réseau. Une session HTTP typique implique l'envoi, par une machine cliente, d'une requête à un serveur qui lui renvoie ensuite un message de réponse.
Une requête HTTP est la façon dont les plateformes de communication Internet, comme les navigateurs web, demandent les informations dont elles ont besoin pour charger un site web.
Chaque requête HTTP effectuée sur Internet comporte une série de données codées qui transportent différents types d'informations. Une requête HTTP typique contient les données suivantes :
Explorons plus en détail le fonctionnement de ces requêtes et la manière dont le contenu d'une requête peut être utilisé pour partager des informations.
Une méthode HTTP, parfois appelée verbe HTTP, indique l'action que la demande HTTP attend du serveur interrogé. Par exemple, deux des méthodes HTTP les plus courantes sont GET et POST. Une demande GET attend des informations en retour (généralement sous la forme d'un site web), tandis qu'une demande POST indique généralement que le client soumet des informations au serveur web (telles que des informations de formulaire, par exemple un nom d'utilisateur et un mot de passe soumis).
Les en-têtes HTTP contiennent des informations textuelles stockées sous forme de paires clé-valeur. Ils sont inclus dans chaque requête HTTP (ainsi que dans la réponse, comme nous le verrons plus loin). Ces en-têtes communiquent des informations essentielles, comme le navigateur utilisé par le client et les données demandées.
Exemple de champs d'en-tête de requête HTTP à partir de l'onglet réseau de Google Chrome :
Le corps d'une requête est la partie qui contient un ensemble de lignes d'informations que la requête transfert. Le corps d'une requête HTTP contient toutes les informations soumises au serveur web, telles qu'un nom d'utilisateur et un mot de passe, ou toute autre donnée entrée dans un formulaire.
Une réponse HTTP est un ensemble de lignes que les clients web (souvent les navigateurs) reçoivent d'un serveur Internet en réponse à une requête HTTP. Ces réponses communiquent des informations précieuses sur la base de ce qui a été demandé dans la requête HTTP.
Une réponse HTTP typique contient les données suivantes :
Décomposons-les :
Les codes de statut HTTP sont des codes à 3 chiffres, le plus souvent utilisés pour indiquer si une requête HTTP a été exécutée avec succès. Les codes de statut sont répartis dans les 5 blocs suivants :
Le xx fait référence à des nombres différents entre 00 et 99.
Les codes de statut commençant par le chiffre 2 indiquent un succès. Par exemple, après qu'un client a demandé une page web, les réponses les plus courantes ont un code de statut 200 OK, indiquant que la requête a été effectuée avec succès.
Un « 4 » ou un « 5 » au début d'une réponse signifie qu'une erreur s'est produite et que la page web demandée ne s'affichera pas. Un code d'état qui commence par un « 4 » indique une erreur côté client (il est très fréquent de rencontrer le code d'état « 404 NOT FOUND » en cas de faute de frappe dans une URL). Un code d'état débutant par « 5 » révèle une anomalie côté serveur. Les codes d'état peuvent également commencer par un « 1 » ou un « 3 », qui indiquent respectivement une réponse d'information et une redirection.
Tout comme une requête HTTP, une réponse HTTP comporte des champs d'en-tête qui véhiculent des informations importantes telles que la langue et le format des données envoyées dans le corps de la réponse.
Exemple de champs d'en-tête de réponse HTTP à partir de l'onglet réseau de Google Chrome :
Les réponses HTTP réussies aux demandes GET présentent généralement un corps contenant les informations demandées. Dans la plupart des requêtes web, il s'agit de données HTML qu'un navigateur web traduit en page web.
Gardez à l'esprit que HTTP est un protocole « sans état », ce qui signifie que chaque commande s'exécute indépendamment de toute autre commande. Dans la spécification d'origine, les requêtes HTTP créaient et fermaient chacune une connexion TCP. Dans les versions plus récentes du protocole HTTP (HTTP 1.1 et version ultérieure), la connexion persistante permet à plusieurs requêtes HTTP d'être transmises sur une connexion TCP persistante, ce qui améliore la consommation des ressources. Dans le contexte d'attaques DoS ou DDoS, des requêtes HTTP en grandes quantités peuvent être utilisées pour monter une attaque sur un dispositif cible, et sont considérés comme faisant partie des attaques de la couche application ou attaques de la couche 7.