Le protocole HTTP. Olivier Aubert 1/40



Documents pareils
Le protocole HTTP. 10 minutes pour comprendre. HTTP/0.9 - Lacunes et limitations HTTP/1.0 HTTP/1.1

(structure des entêtes)

L3 informatique TP n o 2 : Les applications réseau

HTTP HTTP. IUT1 dpt SRC L Isle d Abeau Jean-françois Berdjugin. Introduction et architecture Messages Authentification Conclusion

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

HTTP 1.1. HyperText Transfer Protocol TCP IP ...

RFC 7230 : Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing

1 Introduction Propos du document Introduction De HTTP 1.0 à HTTP

Introduction à HTTP. Chapitre HTTP 0.9

Serveurs de noms Protocoles HTTP et FTP

«Cachez-moi cette page!»

Application Web et J2EE

Protocoles Applicatifs

Types MIME (2) Typage des ressources Internet. Les URI. Syntaxe dans les URI. Possibilité de spécifier un paramètre du sous-type

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

SERVEUR HTTP Administration d apache

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Dans l'épisode précédent

Protection des protocoles

Réseaux. 1 Généralités. E. Jeandel

18 TCP Les protocoles de domaines d applications

Le serveur HTTPd WASD. Jean-François Piéronne

Activité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données

Cours CCNA 1. Exercices

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

Divers éléments. Protocoles d'applications. Un agent Utilisateur. MUA - Agents Utilisateurs de Courriel. Simple Mail Transfer Protocol

Développement des Systèmes d Information

Introduction à l'internet et ces Protocoles

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

Administration Linux - Proxy

INF8007 Langages de script

Web des services : REST

Programmation Web. Madalina Croitoru IUT Montpellier

Internet. Web Sécurité Optimisation

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

Paiement sécurisé sur Internet. Documentation Technique

Sécurité des applications Web

Hébergement de site web Damien Nouvel

Proxies,, Caches & CDNs

Couches 4 à 7 : Traitement des données

La VOIP :Les protocoles H.323 et SIP

Linux sécurité des réseaux

Module http MMS AllMySMS.com Manuel d intégration

FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET. Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date :

Content Switch ou routage de niveau HTTP

API ONE-TIME PASSWORD

Proxy et reverse proxy. Serveurs mandataires et relais inverses

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

GENERALITES. COURS TCP/IP Niveau 1

Caches web. Olivier Aubert 1/35

Bien architecturer une application REST

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

Protocoles DHCP et DNS

Tests de montée en charge avec Tsung

Le service FTP. M.BOUABID, Page 1 sur 5

SSH, le shell sécurisé

Manuel d'installation

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Chapitre : Les Protocoles

Plateforme PAYZEN. Intégration du module de paiement pour la plateforme Magento version 1.3.x.x. Paiement en plusieurs fois. Version 1.

Couche Session M1 Info Z. Mammeri - UPS 1. Concept de session

Outils de l Internet

Dynamic Host Configuration Protocol

L identité numérique. Risques, protection

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Sur un ordinateur exécutant Windows 2000 Server Ayant une adresse IP statique

Etude et développement d un moteur de recherche

Introduction. Adresses

M1 Informatique, Réseaux Cours 9 : Réseaux pour le multimédia

Squid. Olivier Aubert 1/19

RTE Technologies. RTE Geoloc. Configuration avec Proxy ou Firewall

Partie 2 (Service de téléphonie simple) :

4. SERVICES WEB REST 46

SIP. Sommaire. Internet Multimédia

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Protocole SIP et rc o d n o C ée yc L N E S ro P c a B

FTP & SMTP. Deux applications fondamentales pour le réseau Internet.

Apache Tomcat 6. Guide d'administration du serveur Java EE sous Windows et Linux. Résumé. Étienne LANGLET

Zoom sur Newtest LDAP intégration

L annuaire et le Service DNS

WebSSO, synchronisation et contrôle des accès via LDAP

Technologie des Serveurs Internet. Langage Perl

Un exemple d'authentification sécurisée utilisant les outils du Web : CAS. P-F. Bonnefoi

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

Push API Technical Specifications V1.0

Configuration du driver SIP dans ALERT. V2

Applications TCP/IP. Protocoles applicatifs Répartition du trafic sur Internet. 3. La couche Application

Les serveurs. UE 103b. Guillaume Burel.

Guide d implémentation. Réussir l intégration de Systempay

Windows Internet Name Service (WINS)

Spécifications de raccordement au service de Téléphonie sur IP (ToIP) de RENATER

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

CGI et SSI. La programmation CGI. Sources. Objectifs. Qu'est ce qu'un programme CGI? CGI

Index. Symboles. Nombres

Application des Spécifications détaillées pour la Retraite, architecture portail à portail

Messagerie sécurisée, fiable et économique

Accès réseau Banque-Carrefour par l Internet Version /06/2005

SIP A. Aoun - La Visioconférence SIP - 1

Transcription:

Le protocole HTTP Olivier Aubert 1/40

Liens http://www.jmarshall.com/easy/http/ Références : RFC1945 (HTTP1.0), RFC2616 (HTTP1.1), RFC822 (format des entêtes), RFC2396 (syntaxe des URL), RFC1521 (types MIME) http://www.w3.org/protocols/ 2/40

HTTP HyperText Transfer Protocol Au dessus de TCP/IP Transmission de ressources : morceau d information identifié par une URL Fonctionnement client-serveur (requête/réponse) 3/40

Structure des transactions Messages structurés Une ligne initiale Zéro ou plusieurs lignes d entête (format : Header1 : valeur1 Header2 : valeur2 Une ligne vide (CRLF) Le corps (optionnel) du message Les lignes doivent se terminer par CRLF. 4/40

Ligne initiale Différente suivante que le message est une requête ou une réponse Ligne de requête = 3 parties séparées par des espaces : nom de méthode, chemin d accès à la ressource, version de HTTP GET / oaubert/cours/index.html HTTP/1.0 GET est la méthode la plus commune. On peut trouver aussi HEAD, POST, etc. 5/40

Ligne initiale pour la réponse Trois parties séparées par des espaces : version de HTTP, code de statut, description du code de statut. HTTP/1.0 200 OK HTTP/1.0 404 Not Found Le code est un entier sur trois chiffre dont le premier chiffre identifie la catégorie : 1xx : message d information 2xx : succès (plusieurs variantes) 3xx : redirection 4xx : erreur du côté du client 5xx : erreur du côté du serveur Par exemple : 301 Moved Permanently, 302 Moved Temporarily, 500 Server Error,... 6/40

Lignes d entête Ajoutent des informations à la requête ou la réponse Format : Header-name : valeur (RFC822) Ligne terminée par CRLF. Nom de l entête non sensible à la casse (la valeur peut l être) Les lignes commençant par des espaces/tabulations sont des lignes de continuation de l entête précédent. HTTP1.0 (RFC1945) définit 16 entêtes, tous facultatifs HTTP1.1 (RFC2616) définit 46 entêtes, dont un (Host :) obligatoire 7/40

Exemples d entête Envoyés par le client Host : www.google.com User-Agent : Mozilla/5.0 Galeon/1.0.2 (X11 ; Linux i686 ; U ;) Gecko/20011224 Accept : text/html, application/xml, image/jpeg ;q=0.2 Envoyés par le serveur Date : Wed, 06 Feb 2002 10 :25 :03 GMT Server : Apache/1.3.9 (Unix) Debian/GNU Last-Modified : Wed, 11 Jul 2001 10 :25 :15 GMT Connection : Keep-Alive Keep-Alive : timeout=15, max=100 8/40

Corps de message Le corps de message est séparé des entêtes par une ligne vide (donc deux fois CRLF) S il existe un corps de message, son type et sa longueur sont précisés dans les entêtes Content-type : indique le type MIME du document (par exemple text/html ou image/jpeg) Content-length : indique la taille en nombre d octets du document. 9/40

Méthode HEAD Utilisée pour vérifier les métadonnées d une ressource (contenues dans les entêtes). Ne retourne que des entêtes, pas de corps de message 10/40

Méthode POST Utilisée pour envoyer des données du client vers le serveur (généralement vers un script) Un corps de message est présent dans la requête. Il est décrit dans les entêtes par son type et sa longueur. L utilisation la plus courante de POST est pour envoyer des données depuis un formulaire. Dans ce cas : Content-type : application/x-www-form-urlencoded Content-length : longueur des données 11/40

Encodage URL Référence : RFC2396 (Uniform Resource Identifiers : Generic Syntax) Les caractères non-alphanumériques sont remplacés par %xx avec xx = code ASCII du caractère en hexadécimal. Les espaces sont remplacés par des + Par exemple, la chaîne Tom & Jerry sera transformée en Tom+%26+Jerry. 12/40

Évolution vers HTTP1.1 Définition dans RFC 2616 Améliorations apportées connexions persistentes meilleur contrôle des caches chunk encoding pour renvoyer une réponse par morceaux Virtual Hosting 13/40

Côté client Les clients HTTP1.1 ont un certain nombre d obligations : inclure l entête Host : dans chaque requête accepter les réponses par morceaux (chunks) gérer les connexions persistentes, ou ajouter l entête Connection : close avec chaque requête gérer la réponse 100 Continue 14/40

Entête Host : Une adresse IP peut correspondre à plusieurs noms symboliques Pour pouvoir gérer cette situation au niveau des serveurs web, il faut ajouter une information concernant le nom (et éventuellement le port) du serveur interrogé. Une requête minimale pour un document en HTTP1.1 est donc : GET /index.html HTTP/1.1 Host: www.apache.org:80 Cet entête est obligatoire en HTTP1.1 Il résout aussi certains problèmes liés aux caches 15/40

Transfert par morceaux Un serveur peut envoyer une réponse par morceaux (s il ne peut pas déterminer la longueur totale par exemple) La version simple consiste à ajouter l entête Transfer-Encoding : chunked puis à envoyer les morceaux successifs de la réponse. Après les morceaux, on envoie 0 sur une ligne, puis éventuellement des entêtes supplémentaires. Un morceau consiste en une ligne comportant la longueur (en hexadécimal) du morceau, suivi d un commentaire facultatif, terminée par CRLF, puis les données terminées par CRLF 16/40

Exemple - chunk HTTP/1.1 200 OK Date: Fri, 31 Dec 1999 23:59:59 GMT Content-Type: text/plain Transfer-Encoding: chunked 1a; ignore-stuff-here abcdefghijklmnopqrstuvwxyz 10 1234567890abcdef 0 some-footer: some-value another-footer: another-value [blank line here] 17/40

Exemple 2 - no chunk HTTP/1.1 200 OK Date: Fri, 31 Dec 1999 23:59:59 GMT Content-Type: text/plain Content-Length: 42 some-footer: some-value another-footer: another-value abcdefghijklmnopqrstuvwxyz1234567890abcdef 18/40

Connexions persistentes En HTTP1.0, une connexion par requête HTTP1.1 : connexions persistentes par défaut Possibilité de revenir à l ancien fonctionnement avec l entête Connection : close Un serveur peut fermer la connexion avant que toutes les réponses ne soient envoyées. Un client doit garder une trace des requêtes et les réenvoyer si nécessaire. En particulier, le client ne doit pas envoyer plusieurs requêtes s il sait que le serveur ne supporte pas HTTP1.1 19/40

100 Continue Envoyé de la part d un serveur pour indiquer au client qu il peut continuer à envoyer des requêtes. Typiquement envoyé après que le client ait envoyé un début de requête avec l entête Expect : 100-continue Utilisé dans le cas d envoi d un gros volume de données par le client 20/40

Côté serveur Les serveurs HTTP1.1 ont un certain nombre d obligations : exiger l entête Host : accepter des URL absolues dans les requêtes accepter les requêtes par morceaux gérer les connexions persistentes ou inclure l entête Connection : close dans chaque réponse envoyer la réponse 100 Continue si besoin est gérer les requêtes If-Modified-Since gérer au moins les méthodes GET et HEAD gérer les requêtes HTTP1.0 21/40

Utilisation de Host : Host : est une mesure intérimaire. Pour l instant, les clients qui se déclarent HTTP/1.1 et envoient une requête sans l entête Host doivent recevoir une erreur 400 Bad Request. Dans les versions ultérieures de HTTP, on utilisera une URL absolue (comme c est déjà le cas pour les proxies) : GET http ://www.apache.org/index.html HTTP/1.1 22/40

Requêtes par morceaux Les serveurs doivent être capables de comprendre des requêtes par morceaux (même si le cas est rare). 23/40

Connexions persistentes Si un client envoie plusieurs requêtes à travers la même connexion, le serveur doit renvoyer les réponses dans l ordre d arrivée des requêtes correspondantes. Si une requête inclut l entête Connection : close, le serveur doit fermer la connexion après avoir envoyé la réponse correspondante. Si le serveur ne veut/peut pas implémenter de connexion persistente, il doit inclure Connection : close dans chaque réponse. 24/40

Datation des réponses Toute réponse doit inclure la date d émission : Date : Date : Fri, 31 Dec 1999 23 :59 :59 GMT La date est précisée en GMT 25/40

Gérer If-Modified-Since Pour éviter de transférer des données inutilement, une requête peut être conditionnée à la date de modification du document. GET /index.html HTTP1.1 If-Modified-Since: Fri, 31 Dec 1999 23:59:59 GMT Pour des raisons de compatibilité, plusieurs formats de date doivent être tolérés : If-Modified-Since: Fri, 31 Dec 1999 23:59:59 GMT If-Modified-Since: Friday, 31-Dec-99 23:59:59 GMT If-Modified-Since: Fri Dec 31 23:59:59 1999 Seul le premier format doit être utilisé par des clients ou des serveurs HTTP1.1 En cas de non-modification, le serveur répond : HTTP/1.1 304 Not Modified Date: Fri, 31 Dec 1999 23:59:59 GMT 26/40

Méthodes supportées Les serveurs HTTP1.1 doivent gérer les méthodes GET et HEAD D autres méthodes existent : PUT, DELETE, OPTIONS, TRACE Si le serveur ne sait pas gérer une méthode, il répond : HTTP/1.1 501 Not Implemented 27/40

Compatibilité Pour être compatible avec les anciens clients, un serveur doit savoir gérer HTTP1.1 En particulier, s il reçoit une requête identifiée comme HTTP1.0 : Ne pas exiger l entête Host : Ne jamais envoyer la réponse 100 Continue 28/40

Range Requests Fonctionnalité optionnelle du protocole Client : envoi d une requête avec l entête Range : bytes=500-600,601-999, ou Range : bytes=500- If-Range : : envoi d une partie si le document n a pas changé, envoi de tout le document s il a été modifié Serveur : envoi d une réponse 206 Partial content, accompagnée de l entête Content-Range : bytes 21010-47021/47022 29/40

Cache - Age Entête Age : pour calculer l âge d un document Valeur : somme des temps écoulés dans chacun des caches depuis le serveur original, plus les temps de transit Permet de mettre en œuvre une expiration plus précise 30/40

Validateurs Opaques aux clients, laissés au choix des serveurs Validateurs forts : indiquent l égalité des ressources Validateurs faibles (optionnels) : indiquent l équivalence des ressources (pour le comptage par exemple) Transmis via l entête Etag : Utilisés avec If-Match : et If-None-Match :. 31/40

Cache-Control Un des apports majeurs de HTTP1.1 Catégories des directives restrictions sur la cachabilité des documents (imposées par le serveur) restrictions sur le droit de stocker dans les caches (imposées par le serveur ou les clients) Modification des mécanismes d expiration Contrôle de la revalidation et du chargement Contrôle de la transformation des ressources Extensions du système de cache 32/40

Cachabilité Restrictions imposées par le serveur d origine public : peut être caché et partagé private : ne peut pas être caché dans un cache public no-cache : interdiction de cacher le document Compatibilité HTTP/1.0 : Pragma : no-cache 33/40

Droit de stocker no-store : interdiction de stocker sur un support non-volatile 34/40

Mécanismes d expiration imposés par le serveur d origine ou le client max-age delta : le client accepte une réponse d âge maximal delta min-fresh delta : le client veut une réponse qui sera encore valable pendant au moins delta secondes max-stale [delta] : le client accepte une réponse expirée 35/40

Revalidation Imposée par le client no-cache : force le rechargement depuis le serveur original only-if-cached : uniquement les documents cachés. 504 Gateway Timeout en cas de non-présence must-revalidate : force la revalidation du document proxy-revalidate : force la revalidation sauf pour les caches privés des applications 36/40

Transformations Un cache peut effectuer une transformation automatique : dégradation de qualité, conversion de format Certaines applications ne peuvent pas tolérer de transformation (domaine médical,...) no-transform 37/40

Warnings Envoyés lorsque la transparence sémantique n est plus assurée : Response is stale Revalidation failed Disconnected operation Heuristic expiration Transformation applied 38/40

Nouveaux entêtes Proxy-Authenticate :, Proxy-Authorization : : Authentification des proxy Content-MD5 : Vérification de l intégrité Content-Transfer-Encoding : Compression des documents 39/40

Extensions futures Comptage du nombre d accès (prise en compte des caches) Compression du protocole Multiplexage des flux HTTP Négociation transparente du contenu Extensibilité du protocole 40/40