ServeurWeb ProtocoleHttp
ServeurWeb ProtocoleHttp
ServeurWeb ProtocoleHttp
Technologie Web
Serveur Web et protocole HTTP
Alexandre Pauchet
Plan
1 Historique
2 Fonctionnement
3 Protocole HTTP
4 Négociation de contenu
5 Les proxys
6 Limites
7 Sources
INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 3/40
Historique (1/5)
Arpanet
Historique (2/5)
Internet/World Wide Web
Historique (3/5)
Nombre de sites Web
source : http://www.netcraft.com
INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 6/40
Historique (4/5)
Logiciels disponibles
Clients
Netscape, Mozilla, Konqueror, Opera, Lynx, emacs, Internet Explorer
Serveurs
Apache, Internet Information Server (Microsoft), iPlanet (Netscape)
Sources: http://www.netcraft.com
INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 7/40
Historique (5/5)
Répartition des serveurs sur le marché
source : http://www.netcraft.com
INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 8/40
Réponse Ressource
Client Web
(navigateur) Serveur Web
Architecture Client/Serveur
Nécessité d’un protocole de communication : Http
INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 9/40
Format
<protocole>://<serveur>:<port>/<chemin>/<ressource>
Remarque : certains caractères doivent être encodés par % suivi de leur valeur
hexadécimale en ISO Latin ou ASCII (ex : doc#2.html ⇒ doc%232.html).
Exemples :
http://www.linux-mandrake.com:80/fr/index.html
http://asi.insa-rouen.fr/enseignants/~apauchet/
ftp://ftp.debian.fr.org/
sftp://apauchet@insa-rouen.fr/
file://home/cours/
mailto:pauchet@insa-rouen.fr
telnet://user:password@host:port
INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 12/40
Serveur Web
Requête (URL) Ressource ?
Réponse Ressource
http://<serveur>/cgi-bin/
apauchet bleponge www
apauchet bleponge
lien symbolique
lien symbolique
INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 14/40
http://www.w3.org/
Protocole orienté caractères ⇒ telnet host 80 ou
netcat host 80
Non sécurisé (par opposition à HTTPS)
HTTP 0.9, protocole très simple
HTTP 1.0 (rfc1945)
ajout du n◦ de version, du statut
apparition des entêtes (user-agent)
les cookies (simulation de session)
HTTP 1.1 (rfc2616 2 ), version actuelle
persistance des connexions
méthodes PUT, DELETE, . . .
HTTP NG, en standby
gestion des sessions
2. http://www.w3.org/Protocols/rfc2616/rfc2616.html
INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 16/40
HTTP/1.1 200 OK
Date: Wed, 15 Jul 2009 13:08:49 GMT
Server: Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch
Last-Modified: Tue, 14 Jul 2009 18:24:33 GMT
ETag: "31c06d-1c-46eae8cd55a40"
Accept-Ranges: bytes
Content-Length: 28
Content-Type: text/plain
HTTP/1.1 200 OK
Date: Tue, 14 Jul 2009 18:28:30 GMT
Server: Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch
Last-Modified: Tue, 14 Jul 2009 18:24:33 GMT
ETag: "31c06d-1c-46eae8cd55a40"
Accept-Ranges: bytes
Content-Length: 28
Content-Type: text/plain
netcat localhost 80
GET /index.html HTTP/1.1
Host: localhost
HTTP/1.1 200 OK
Date: Wed, 15 Jul 2009 13:17:53 GMT
Server: Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch
Last-Modified: Tue, 14 Jul 2009 18:27:21 GMT
ETag: "31c072-2d-46eae96d8d440"
Accept-Ranges: bytes
Content-Length: 45
Content-Type: text/html
<html><body><h1>It works!</h1></body></html>
INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 20/40
Requête Réponse
Request line Status line
General header General header
Request header Response header
Entity header Entity header
CRLF CRLF
Message body Message body
INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 21/40
Request-Line
METHODE URI [HTTP-Version]
Les méthodes
OPTIONS : demande les méthodes utilisables sur l’URI
GET : demande les informations et les données de l’URI
POST : envoie de données (ex : formulaire) traitées par l’URI
HEAD : demande uniquement les informations sur l’URI
PUT : enregistre le corps de la requête à l’URI
DELETE : supprime les données pointées par l’URI
TRACE : retourne ce qui a été envoyé par le client (' echo)
Status-Line
HTTP-Version Status-Code Reason-Phrase
HTTP/1.1 200 OK
Date: Wed, 15 Jul 2009 13:50:02 GMT
Server: Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch
Content-Location: info.txt.fr
Vary: negotiate,accept-language
TCN: choice
Last-Modified: Tue, 14 Jul 2009 18:24:33 GMT
ETag: "31c070-15-46eae8cd55a40;46ebeabae2180"
Accept-Ranges: bytes
Content-Length: 21
Content-Type: text/plain
Content-Language: fr
HTTP/1.1 200 OK
Date: Wed, 15 Jul 2009 13:50:34 GMT
Server: Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.1 with Suhosin-Patch
Content-Location: info.txt.en
Vary: negotiate,accept-language
TCN: choice
Last-Modified: Tue, 14 Jul 2009 18:24:33 GMT
ETag: "31c06f-19-46eae8cd55a40;46ebeabae2180"
Accept-Ranges: bytes
Content-Length: 25
Content-Type: text/plain
Content-Language: en
HTTP/1.1 200 OK
Date: Thu, 06 Sep 2012 13:48:44 GMT
Server: Apache/2.2.22 (Ubuntu)
Content-Location: info.txt.en
Vary: negotiate,accept-language,Accept-Encoding
TCN: choice
Last-Modified: Thu, 06 Sep 2012 13:30:33 GMT
ETag: "4000b7-19-4c9087ee99040;4c90880b353c0"
Accept-Ranges: bytes
Content-Length: 25
Content-Type: text/plain
Content-Language: en
HTTP/1.1 200 OK
Date: Thu, 06 Sep 2012 14:04:04 GMT
Server: Apache/2.2.22 (Ubuntu)
Content-Location: info.html.fr
Vary: negotiate,accept,accept-language,Accept-Encoding
TCN: choice
Last-Modified: Thu, 06 Sep 2012 14:01:12 GMT
ETag: "400176-1d-4c908ec867a00;4c908ec867a00"
Accept-Ranges: bytes
Content-Length: 29
Content-Type: text/html
Content-Language: fr
HTTP/1.1 200 OK
Date: Thu, 06 Sep 2012 14:22:20 GMT
Server: Apache/2.2.22 (Ubuntu)
Content-Location: text.html.en
Vary: negotiate,accept,accept-language,Accept-Encoding
TCN: choice
Last-Modified: Thu, 06 Sep 2012 14:01:06 GMT
ETag: "40017a-20-4c908ec2aec80;4c909190ccac0"
Accept-Ranges: bytes
Content-Length: 32
Content-Type: text/html
Content-Language: en
Le proxy “classique”
Il s’agit d’un relais pouvant servir de “filtre” ou de “firewall”
Le proxy cache
Il archive les pages, lors d’une requête.
S’il possède déjà la page, il la renvoie, sinon il va la chercher.
INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 36/40
Limites (1/3)
Déclaration d’un formulaire (rappel)
Les attributs :
action : URL spécifiant le traitement des données (script, etc.)
method : spécifie la méthode d’acheminement des données (GET par
défaut ou POST)
Pour un envoi en POST, enctype spécifie la méthode d’encodage
application/x-www-form-urlencoded : (valeur par défaut). Tous
les caractères sont encodés avant d’être envoyés
multipart/form-data : aucun caractère n’est encodé.
text/plain : seuls les espaces sont remplacés par des ‘+’.
INSA - ASI TechnoWeb : Serveur Web et protocole HTTP 38/40
Limites (2/3)
Gestion des sessions : les cookies
Limites (3/3)
Http sécurisé : Https
Sources
http://www.netcraft.com
http://www.w3.org/
http://apache.org/
http://stielec.ac-aix-marseille.fr/cours/caleca/http/
index.html