Aller au contenu principal

2. Architecture (Architecture)

HTTP a été conçu pour être un protocole de communication de niveau application sans état, qui peut être utilisé pour de nombreuses tâches au-delà de son utilisation pour l'hypertexte, telles que les serveurs de noms et les systèmes de gestion d'objets distribués, grâce à l'extension de ses méthodes de requête, codes d'erreur et en-têtes.

2.1. Client/Server Messaging (Messagerie Client/Serveur)

HTTP est un protocole de requête/réponse sans état. Un client envoie une requête sous la forme d'un message de requête à un serveur. Le serveur répond avec un message de réponse.

La terminologie de "client" et "serveur" fait référence uniquement aux rôles que ces programmes assument pour une connexion particulière. Le même programme peut agir en tant que client sur certaines connexions et serveur sur d'autres.

2.2. Implementation Diversity (Diversité d'Implémentation)

HTTP est conçu pour masquer les détails d'implémentation de ses participants. Par conséquent, HTTP peut être utilisé avec de nombreux protocoles de transport de couche inférieure différents.

2.3. Intermediaries (Intermédiaires)

Les intermédiaires HTTP sont des composants qui se trouvent entre le client et le serveur et qui agissent comme des agents de transfert de messages.

Il existe trois types courants d'intermédiaires HTTP:

Proxy (Proxy)

Un proxy est un agent de transfert de messages sélectionné par le client, généralement via la configuration locale, pour recevoir des requêtes pour certains types d'URI absolus et tenter de satisfaire ces requêtes via la traduction, si nécessaire.

Gateway (Passerelle)

Une passerelle (également connue sous le nom de proxy inverse) est un agent de transfert de messages qui agit comme un serveur d'origine pour la requête entrante, mais qui traduit les requêtes reçues et les transmet en amont vers un autre serveur (ou serveurs).

Tunnel (Tunnel)

Un tunnel agit comme un relais entre deux connexions sans changer les messages. Un tunnel cesse d'exister lorsque les deux extrémités de la connexion relayée sont fermées.

2.4. Caches (Caches)

Un cache est un stockage local de messages de réponse et le sous-système qui contrôle leur stockage, récupération et suppression. Un cache stocke les réponses aux requêtes pour réduire le temps de réponse et la consommation de bande passante réseau lors des requêtes futures équivalentes.

2.5. Conformance and Error Handling (Conformité et Gestion des Erreurs)

Le mot-clé "MUST" (DOIT), ou les termes "REQUIRED" (REQUIS) ou "SHALL" (DOIT), signifient qu'une définition est une exigence absolue de la spécification.

Le mot-clé "MUST NOT" (NE DOIT PAS), ou l'expression "SHALL NOT" (NE DOIT PAS), signifient qu'une définition est une interdiction absolue de la spécification.

Le mot-clé "SHOULD" (DEVRAIT), ou l'adjectif "RECOMMENDED" (RECOMMANDÉ), signifient qu'il peut exister des raisons valables dans des circonstances particulières d'ignorer un élément particulier, mais toutes les implications doivent être comprises et soigneusement pesées avant de choisir un cours différent.

Le mot-clé "SHOULD NOT" (NE DEVRAIT PAS), ou l'expression "NOT RECOMMENDED" (NON RECOMMANDÉ), signifient que des raisons valables dans des circonstances particulières peuvent exister lorsque le comportement particulier est acceptable ou même utile.

Le mot-clé "MAY" (PEUT), ou l'adjectif "OPTIONAL" (FACULTATIF), signifient qu'un élément est véritablement facultatif.

2.6. Protocol Versioning (Versionnage du Protocole)

HTTP utilise un schéma de numérotation de version "<major>.<minor>" pour indiquer les versions du protocole. Ce document définit HTTP/1.1.

2.7. Uniform Resource Identifiers (Identifiants de Ressources Uniformes)

Les Uniform Resource Identifiers (URI) [RFC3986] sont utilisés dans HTTP pour identifier les ressources. Les références URI sont utilisées pour cibler les requêtes, indiquer les redirections et définir les relations.

URI-reference = <URI-reference, voir [RFC3986], Section 4.1>
absolute-URI = <absolute-URI, voir [RFC3986], Section 4.3>
relative-part = <relative-part, voir [RFC3986], Section 4.2>
authority = <authority, voir [RFC3986], Section 3.2>
uri-host = <host, voir [RFC3986], Section 3.2.2>
port = <port, voir [RFC3986], Section 3.2.3>
path-abempty = <path-abempty, voir [RFC3986], Section 3.3>
segment = <segment, voir [RFC3986], Section 3.3>
query = <query, voir [RFC3986], Section 3.4>

2.7.1. http URI Scheme (Schéma URI http)

Le schéma "http" est utilisé pour localiser les ressources réseau via le protocole HTTP.

http-URI = "http://" authority path-abempty [ "?" query ]
[ "#" fragment ]

2.7.2. https URI Scheme (Schéma URI https)

Le schéma "https" est utilisé pour localiser les ressources réseau via le protocole HTTP sur une connexion sécurisée.

https-URI = "https://" authority path-abempty [ "?" query ]
[ "#" fragment ]

2.7.3. http and https URI Normalization and Comparison (Normalisation et Comparaison des URI http et https)

Les URI HTTP et HTTPS sont comparés de la même manière que tous les autres URI.