Protocole HTTP

HTTP (HyperText Transfer Protocol) est l'un des protocoles les plus largement utilisés sur Internet, utilisé pour transférer de l'hypertexte (comme des pages web) entre des clients (comme des navigateurs) et des serveurs.

HTTP est le fondement du World Wide Web (WWW), prenant en charge des scénarios d'application tels que la navigation web, le téléchargement de fichiers et les appels API.


Fonctionnement de HTTP

HTTP utilise un modèle client-serveur et transmet les données selon un mode requête-réponse. Sa fonction principale est que le client envoie une requête au serveur, et le serveur renvoie une réponse.

1. Processus de requête-réponse HTTP

  • Client: envoie une requête HTTP au serveur (commeGET /index.html)。
  • Serveur: traite la requête et renvoie une réponse HTTP (comme200 OKet le contenu de la page web).

2. Structure de la requête HTTP

Une requête HTTP se compose des parties suivantes :

  1. Ligne de requête: inclut la méthode de requête (comme GET, POST), la ressource demandée (comme/index.html) et la version du protocole (comme HTTP/1.1).
  2. En-têtes de requête: contiennent des informations supplémentaires (commeHost、User-Agent、Accept)。
  3. Corps de la requête: facultatif, utilisé pour transmettre des données (comme les données de formulaire dans les requêtes POST).

Exemple :

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html

3. Structure de la réponse HTTP

Une réponse HTTP se compose des parties suivantes :

  1. Ligne d'état: inclut la version du protocole (comme HTTP/1.1), le code d'état (comme 200) et le message d'état (comme OK).
  2. En-têtes de réponse: contiennent des informations supplémentaires (commeContent-Type、Content-Length)。
  3. Corps de la réponse: contient les données réelles (comme le contenu HTML).

Exemple :

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1234

<html>...</html>

Caractéristiques principales de HTTP

  1. Protocole sans état:

    • Chaque requête est indépendante, et le serveur ne conserve pas l'état du client.
    • La gestion de l'état est mise en œuvre via des cookies ou des sessions.
  2. Prend en charge plusieurs méthodes de requête:

    • GET: récupérer des ressources.
    • POST: soumettre des données.
    • PUT: mettre à jour des ressources.
    • DELETE: supprimer des ressources.
  3. Prend en charge plusieurs types de données:

    • Via l'Content-Typeen-tête, le type de données est spécifié (tel quetext/html、application/json)。
  4. Mécanisme de mise en cache:

    • Via l'Cache-ControletETagen-tête, la mise en cache est implémentée pour améliorer les performances.
  5. Extensibilité:

    • Prend en charge des en-têtes de requête et de réponse personnalisés pour étendre les fonctionnalités.

Scénarios d'application de HTTP

HTTP est largement utilisé dans les scénarios suivants :

  • Navigation Web: accéder aux pages Web via un navigateur.
  • Appels API: transmettre des données via des API RESTful.
  • Téléchargement de fichiers: télécharger des fichiers ou des ressources.
  • Soumission de formulaire: soumettre des données saisies par l'utilisateur.

Problèmes de sécurité liés à HTTP

HTTP lui-même est peu sûr car il transmet les données en clair lors de la transmission, ce qui le rend vulnérable aux attaques suivantes :

  1. Écoute clandestine: les attaquants peuvent écouter les données transmises.
  2. Altération: les attaquants peuvent altérer les données transmises.
  3. Usurpation d'identité: les attaquants peuvent se faire passer pour le serveur ou le client.

Pour améliorer la sécurité, HTTPS (HTTP Secure) peut être utilisé, c'est-à-dire HTTP sur TLS/SSL, afin de protéger la transmission des données grâce à une communication chiffrée.


Versions HTTP

HTTP possède plusieurs versions, les principales différences résidant dans les performances et les fonctionnalités :

  1. HTTP/1.0:
    • Chaque requête nécessite l'établissement d'une nouvelle connexion, ce qui entraîne de mauvaises performances.
  2. HTTP/1.1:
    • Prend en charge les connexions persistantes et le pipelining, ce qui améliore les performances.
  3. HTTP/2:
    • Prend en charge le multiplexage, les trames binaires et la compression des en-têtes, ce qui améliore considérablement les performances.
  4. HTTP/3:
    • Basé sur le protocole QUIC, optimisant davantage les performances et la sécurité.
Autres extensions