Technologie Web - Serveur Web et protocole Http

36
INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 1/36 Technologie Web Serveur Web et protocole Http Alexandre Pauchet INSA Rouen - Département ASI BO.B.RC.18, [email protected]

Transcript of Technologie Web - Serveur Web et protocole Http

Page 1: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 1/36

Technologie WebServeur Web et protocole Http

Alexandre Pauchet

INSA Rouen - Département ASI

BO.B.RC.18, [email protected]

Page 2: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 2/36

Plan

1 Historique

2 Fonctionnement

3 Protocole HTTP

4 Les proxys

5 Limites

6 Sources

Page 3: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 3/36

Historique (1/4)Arpanet

1959-68 : Le programme Arpa naît pendant la guerre froideLa peur d’une guerre nucléaire

Faiblesse du système centralisé versus distribuéProposition d’un maillage d’ordinateurs (1964, P. Baran)1ere communication téléphonique entre 2 machines en 1965

1969 : Arpanet1969 : 4 noeuds, 1971 : 15 noeuds, 1972 : 37 noeuds

1970-82 : Ouverture sur le mondeApparition du courrier électroniqueCommunications internationales (Angleterre, Norvège)Apparition de TCP/IP (1974) plus puissant que NCP

1983 : TCP/IP adopté comme standard Arpanet ⇒ Internet

Page 4: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 4/36

Historique (2/4)Internet/World Wide Web

1983-89 : Expansion du réseau : autoroutes de l’informationLa NSF1 effectue des progrès importants (réseau NFSNET)Utilisation importante par les scientifiquesRéseaux hétérogènes (NCP et TCP/IP)Fin officielle de Arpanet en 1989 (TCP/IP)

1990-97 : L’explosion d’internet1990, le physicien Tim Berners Lee (CERN) étend le concept de lienhypertexte à InternetHyperText Markup Language et HyperText Transfer Protocol1er navigateur : NCSA Mosaic1995 ouverture au grand public (Netscape et Internet Explorer)1997 des dizaines de milliers de noeuds dans plus de 42 pays

1National Science Foundation

Page 5: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 5/36

Historique (3/4)Logiciels disponibles

ClientsNetscape, Mozilla, Konqueror, Opera, Lynx, emacs, Internet Explorer

ServeursApache, Internet Information Server (Microsoft), iPlanet (Netscape)

Sources : http://www.netcraft.com

Page 6: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 6/36

Historique (4/4)Répartition des serveurs sur le marché

source : http://www.netcraft.com

Page 7: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 7/36

Principes de fonctionnement (1/8)La base du Web

Architecture Client/ServeurNécessité d’un protocole de communication : Http

Page 8: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 8/36

Principes de fonctionnement (2/8)Différents types de ressources

Ressources statiques : HTML, images, son, vidéosRessources dynamiques

Côté client : applet (Java), Javascript, Plugin, ActiveXCôté serveur : CGI, SSI, servlets/JSP, scripts serveur (php)

Client Web Serveur WebApache Httprequête

ressource

(LAMP)MySQL

PostgreSQL(LAPP)

PHP + SQLite            (LASP)

Javascript,Applet,

...

Client Web Serveur WebJ2EE

requête

ressourceOracleServlets/JSP

+ Hibernate

Javascript,Applet,

...

Page 9: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 9/36

Principes de fonctionnement (3/8)URL, URN et URI

URL : Uniform Ressource LocatorSpécification de la localisation d’une ressource de manière unique

URN : Uniform Ressource NameMécanisme de nommage des ressourcesurn:<Namespace>:<SpecificString>Namespace : identificateur de nommage (ex : isbn)SpecificString : chaîne de caractères spécifique désignant laressource de manière unique

URI : Uniform Resource IdentifierURI = URL + URNEn pratique, la forme d’URI la plus utilisée est l’URL

Page 10: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 10/36

Principes de fonctionnement (4/8)URL : Uniform Ressource Locator

Format<protocole>://<serveur>:<port>/<chemin>/<ressource>

Remarque : certains caractères doivent être encodés par % suivi de leur valeurhexadécimale en ISO Latin ou ASCII (ex : doc#2.html ⇒ doc%232.html).

Exemples :

http://www.linux-mandrake.com:80/fr/index.htmlhttp://asi.insa-rouen.fr/enseignants/~apauchet/ftp://ftp.debian.fr.org/file://home/cours/mailto:[email protected]://user:password@host:port

Page 11: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 11/36

Principes de fonctionnement (5/8)Fonctionnement d’un serveur HTTP

Serveur : application qui écoute un port de communicationPort standard : 80 (seul root peut écouter ce port)Serveur “maître” : utilisateur root écoute le port 80Serveurs “esclaves” : créés par le maître (propriétaire différent)Réception d’une requête :

1 le maître reçoit la connexion2 le maître crée un esclave et lui transmet le canal de communication3 l’esclave traite la requête et retourne le résultat

Page 12: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 12/36

Principes de fonctionnement (6/8)Fonctionnement d’un serveur HTTP

Page 13: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 13/36

Principes de fonctionnement (7/8)Système de fichiers

Page 14: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 14/36

Principes de fonctionnement (8/8)Système de fichiers

http://<serveur>/ racine du serveurhttp://<serveur>/fic.html fic.html à la racinehttp://<serveur>/cgi-bin répertoire des scripts CGIhttp://<serveur>/~arthur la “homepage” de Arthurhttp://<serveur>/~arthur/cgi-bin les scripts CGI de Arthurhttp://<serveur>/cgi-bin/arthur les scripts CGI de Arthur

Remarque : Interdiction d’accéder aux fichiers

de configuration du serveur

extérieurs au serveur WEB (système)

Page 15: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 15/36

Le protocole HTTP (1/16)Présentation de HTTP

http://www.w3.org/

Protocole orienté caractères ⇒ telnet host 80 ounetcat host 80

Non sécurisé (par opposition à HTTPS)HTTP 0.9, protocole très simpleHTTP 1.0 (rfc1945)

ajout du n◦ de version, du statutapparition des entêtes (user-agent)les cookies (simulation de session)

HTTP 1.1 (rfc26162), version actuellepersistance des connexionsméthodes PUT, DELETE, . . .

HTTP NG, en standbygestion des sessions

2http://www.w3.org/Protocols/rfc2616/rfc2616.html

Page 16: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 16/36

Le protocole HTTP (2/16)Exemples de requête HTTP 1.1

Le fichier phrase.txt est placé à la racine d’un serveur Apache Http,tournant sur la machine cliente.

> netcat localhost 80GET /phrase.txt HTTP/1.1Host: localhost

HTTP/1.1 200 OKDate: Wed, 15 Jul 2009 13:08:49 GMTServer: Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-PatchLast-Modified: Tue, 14 Jul 2009 18:24:33 GMTETag: "31c06d-1c-46eae8cd55a40"Accept-Ranges: bytesContent-Length: 28Content-Type: text/plain

Voici un exemple de phrase.

Page 17: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 17/36

Le protocole HTTP (3/16)Exemples de requête HTTP 1.1

> telnet localhost 80Trying 127.0.0.1...Connected to localhost.Escape character is ’^]’.GET /phrase.txt HTTP/1.1Host: localhost

HTTP/1.1 200 OKDate: Tue, 14 Jul 2009 18:28:30 GMTServer: Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-PatchLast-Modified: Tue, 14 Jul 2009 18:24:33 GMTETag: "31c06d-1c-46eae8cd55a40"Accept-Ranges: bytesContent-Length: 28Content-Type: text/plain

Voici un exemple de phrase.Connection closed by foreign host.

Page 18: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 18/36

Le protocole HTTP (4/16)Exemples de requête HTTP 1.1

Page 19: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 19/36

Le protocole HTTP (5/16)Exemples de requête HTTP 1.1

netcat localhost 80GET /index.html HTTP/1.1Host: localhost

HTTP/1.1 200 OKDate: Wed, 15 Jul 2009 13:17:53 GMTServer: Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-PatchLast-Modified: Tue, 14 Jul 2009 18:27:21 GMTETag: "31c072-2d-46eae96d8d440"Accept-Ranges: bytesContent-Length: 45Content-Type: text/html

<html><body><h1>It works!</h1></body></html>

Page 20: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 20/36

Le protocole HTTP (6/16)Requête et Réponse

Requête RéponseRequest line Status line

General header General headerRequest header Response headerEntity header Entity header

CRLF CRLFMessage body Message body

Page 21: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 21/36

Le protocole HTTP (7/16)Requête : Request-Line

Request-LineMETHODE URI HTTP-Version

Les méthodesOPTIONS : demande les méthodes utilisables sur l’URIGET : demande les informations et les données de l’URIHEAD : demande uniquement les informations sur l’URIPOST : envoie de données (ex : formulaire) traitées par l’URIPUT : enregistre le corps de la requête à l’URIDELETE : supprime les données pointées par l’URITRACE : retourne ce qui a été envoyé par le client (' echo)

Page 22: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 22/36

Le protocole HTTP (8/16)Requête/Réponse : General header

Cache-Control : définit la politique de cache pour la ressourceConnection : paramètre de gestion de la connexion (ex :Connection: close)Date : date du messagePragma : utilisé pour spécifier des comportements aux serveursintermédiaires (proxy)Transfer-Encoding : types de transformations appliquées au corpsdu messageUpgrade : spécifie quels autres protocoles supporte le clientVia : indique les intermédiaires par lesquels est passée la requête

Page 23: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 23/36

Le protocole HTTP (9/16)Requête : Request header

Accept : définit les types de médias acceptésAccept-Charset : spécifie les jeux de caractères acceptésAccept-Encoding : spécifie les types de transformations(compressions) du message acceptésAccept-Language : spécifie les langues acceptéesFrom : e-mail de l’utilisateur du client (nécessite accord)Host : spécifie le serveur (et le port) pour la requêteIf-Modified-Since, If-Unmodified-Since : requêteconditionnelle sur la dernière date de modification de l’URIRange : précise la portion de données de la ressourceReferer : spécifie l’URI à l’origine de la requêteUser-Agent : contient l’identifiant du navigateur client

Page 24: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 24/36

Le protocole HTTP (10/16)Requête/Réponse : Entity header

Allow : liste les méthodes autoriséesContent-Encoding : indique l’encodage utilisé pour la ressource(complément au type de média du Content-Type)Content-Language : défini la langue utiliséeContent-length : taille du corps du messageContent-Location : donne la véritable URI de la ressource sicelle-ci a été trouvée grâce à une autre URIContent-Range : donne la plage de données récupérées sur latotalité de la ressourceContent-Type : le type du média (ex : text/html ;charset=ISO-8859-1)Expires : date d’expiration de la ressourceLast-Modified : date de dernière modification

Page 25: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 25/36

Le protocole HTTP (11/16)Réponse : Status-Line

Status-LineHTTP-Version Status-Code Reason-Phrase

Status-Code : code numérique représentant le succès où l’échec dela requêteReason-Phrase : texte expliquant le Status-Code

5 classes de Status-Code

1XX : Information2XX : Succès3XX : Redirection4XX : Erreur client5XX : Erreur serveur

Page 26: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 26/36

Le protocole HTTP (12/16)Réponse : les Status-Code

Code Signification Code Signification Code Signification100 Continue 101 Switching Protocols200 OK 201 Created 202 Accepted203 Non-Authoritative In-

formation204 No Content 205 Reset Content

206 Partial Content300 Multiple Choices 301 Moved Permanently 302 Moved Temporarily303 See Other 304 Not Modified 305 Use Proxy400 Bad Request 401 Unauthorized 402 Payment Required403 Forbidden 404 Not Found 405 Method Not Allowed406 Not Acceptable 407 Proxy Authentication

Required408 Request Time-out

409 Conflict 410 Gone 411 Length Required412 Precondition Failed 413 Request Entity Too

Large414 Request-URI Too

Large415 Unsupported Media

Type500 Internal Server Error 501 Not Implemented 502 Bad Gateway503 Service Unavailable 504 Gateway Time-out 505 HTTP Version not

supported

Page 27: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 27/36

Le protocole HTTP (13/16)Réponse : Response header

Accept-Ranges : informe l’acceptation des requêtes Range par leserveurLocation : redirige la requête vers une autre URI (ex :Status-Code : 3XX)Server : indique le type du serveur web répondant à la requête

Page 28: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 28/36

Le protocole HTTP (14/16)Négociation de contenu

Le client exprime ses capacitésLe serveur doit alors retourner la ressource la plus adéquate

Les types de spécification possibles :LangueType MIMECharset (encodage des caractères)Encodage (compression, encodage, etc.)

Page 29: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 29/36

Le protocole HTTP (15/16)Exemples de négociation sur la langue

Les fichiers texte.fr.txt et texte.en.txt sont placés à la racine duserveur Apache Http.

GET /texte HTTP/1.1Host: localhostAccept-Language: fr;q=1,en;q=0.5

HTTP/1.1 200 OKDate: Wed, 15 Jul 2009 13:50:02 GMTServer: Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-PatchContent-Location: texte.fr.txtVary: negotiate,accept-languageTCN: choiceLast-Modified: Tue, 14 Jul 2009 18:24:33 GMTETag: "31c070-15-46eae8cd55a40;46ebeabae2180"Accept-Ranges: bytesContent-Length: 21Content-Type: text/plainContent-Language: fr

Ceci est du francais.

Page 30: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 30/36

Le protocole HTTP (16/16)Exemples de négociation sur la langue

GET /texte HTTP/1.1Host: localhostAccept-Language: en;q=1,fr;q:0.5

HTTP/1.1 200 OKDate: Wed, 15 Jul 2009 13:50:34 GMTServer: Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-PatchContent-Location: texte.en.txtVary: negotiate,accept-languageTCN: choiceLast-Modified: Tue, 14 Jul 2009 18:24:33 GMTETag: "31c06f-19-46eae8cd55a40;46ebeabae2180"Accept-Ranges: bytesContent-Length: 25Content-Type: text/plainContent-Language: en

These are english words.

Page 31: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 31/36

HTTP et proxys (1/3)Utilisation d’un proxy

Page 32: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 32/36

HTTP et proxys (2/3)Deux grands types de proxy

Le proxy “classique”Il s’agit d’un relais pouvant servir de “filtre” ou de “firewall”

Le proxy cacheIl archive les pages, lors d’une requête.

S’il possède déjà la page, il la renvoie, sinon il va la chercher.

Page 33: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 33/36

HTTP et proxys (3/3)Protocole HTTP et proxy cache

le client effectue une requête (GET) via un proxy cachele proxy vérifie s’il dispose de la page demandéesi oui

le proxy vérifie la date d’expiration de l’URI (Expires)interroge le serveur de l’URI afin de comparer les dates

de dernière modification de l’URI dans le cachede dernière modification de l’URI sur le serveur

Utilisation des méthodes GET ou HEAD et des directivesIf-Modified-Since ou Last-Modifiedsi l’URI du cache est à jour alors le proxy retourne la ressource de soncache

le proxy récupère la ressource du serveur, l’archive et la retourne auclient.

Page 34: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 34/36

Limites (1/2)Gestion des sessions : les cookies

Le protocole Http 1.1 ne gère pas les sessions⇒ Alternative utilisée par les navigateurs : cookies

Fichiers textes stockés sur le disque dur du clientDurée de vie limitée, fixée par le site visitéProblème avec les vieux navigateurs : il est possible pour un serveurde récupérer des cookies d’un client dont il n’est pas à l’origine

Page 35: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 35/36

Limites (2/2)Http sécurisé : Https

Le protocole Http n’est pas sécurisé⇒ Alternative à Http : Https

‘s’ pour securedCombinaison de Http avec SSL ou TLSVérification de l’identité d’un site par un certificat d’authentificationGarantie confidentialité et intégrité des données envoyées parl’utilisateur (ex : formulaires)Port par défaut : 443.

Page 36: Technologie Web - Serveur Web et protocole Http

INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 36/36

Sources

http://www.netcraft.com

http://www.w3.org/

http://apache.org/

http://stielec.ac-aix-marseille.fr/cours/caleca/http/index.html