Seance 01 - Fonctionnement d`un serveur web - Protocole Http

Transcription

Seance 01 - Fonctionnement d`un serveur web - Protocole Http
WEBMESTRE : CONCEPTION DE SITES ET
ADMINISTRATION DE SERVEURS WEB
Installation et administration d’un serveur web
Module 25793 TP A5 (1/2 valeur)
Chapitre 1
Fonctionnalités d’un serveur web, le protocole HTTP
Le plus grand soin a été apporté à la réalisation de ce support pédagogique afin de vous fournir une information
complète et fiable. Cependant, le Cnam Champagne-Ardenne n'assume de responsabilités, ni pour son
utilisation, ni pour les contrefaçons de brevets ou atteintes aux droits de tierces personnes qui pourraient résulter
de cette utilisation.
Les exemples ou programmes présents dans cet ouvrage sont fournis pour illustrer les descriptions théoriques.
Ils ne sont en aucun cas destinés à une utilisation commerciale ou professionnelle.
Le Cnam ne pourra en aucun cas être tenu pour responsable des préjudices ou dommages de quelque nature
que ce soit pouvant résulter de l'utilisation de ces exemples ou programmes.
Tous les noms de produits ou autres marques cités dans ce support sont des marques déposées par leurs
propriétaires respectifs.
Ce support pédagogique a été rédigé par Michel Melcior, enseignant vacataire au Cnam Champagne-Ardenne.
Copyright  2001-2003 Centre d'Enseignement A Distance du Cnam Champagne-Ardenne.
Tous droits réservés.
Toute reproduction, même partielle, par quelque procédé que ce soit, est interdite sans autorisation préalable du
Cnam Champagne-Ardenne. Une copie par xérographie, photographie, film, support magnétique ou autre,
constitue une contrefaçon passible des peines prévues par la loi, du 11 mars 1957 et du 3 juillet 1995, sur la
protection des droits d'auteur.
CONSERVATOIRE NATIONAL DES ARTS ET METIERS
FONCTIONNALITES D’UN SERVEUR WEB,
LE PROTOCOLE HTTP.
1. WEB ET TCP/IP.
Nous allons tout d'abord expliquer le principe de fonctionnement d'un serveur web dans un cadre
classique de client et serveur situés sur des machines séparées.
C'est par exemple le cas lorsque vous accédez à un serveur web sur l'internet depuis votre machine située à
votre domicile. Le schéma ci-dessous résume ce cas de figure.
Client
Serveur
Réseau
192.168.1.10
194.51.207.49
Si l'on détaille les échanges entre le client et le serveur du schéma ci-dessus, on peut résumer les
échanges par le schéma ci-dessous :
Application
(internet explorer)
Application
(serveur Apache)
Protocole TCP/IP
192.168.1.10:1031
Protocole TCP/IP
194.51.207.49:80
Carte réseau
ou
Modem
Machine Cliente
Réseau
Carte réseau
ou
Modem
Machine Serveur
L'application cliente (Internet Explorer) située sur votre machine passe votre requête
(http://www.google.com) au protocole TCP/IP qui se chargera de la faire parvenir au serveur.
Si vous regardez attentivement le deuxième schéma, vous verrez un numéro précisé à la suite de l'adresse IP
(séparé par le caractère ":"). Ce numéro existe aussi bien du côté client que du côté serveur. Il s'appelle numéro
de port.
Ce numéro de port est tout aussi indispensable que l'adresse IP de la machine. Il sert à aiguiller les
informations échangées vers les bonnes applications.
Imaginez le cas suivant, vous ouvrez 2 fenêtres d'Internet Explorer et vous explorez simultanément 2
sites. Seul le numéro de port permet à TCP/IP d'envoyer les informations provenant d'Internet vers la bonne
fenêtre d'Internet Explorer de votre machine.
Installation et administration d’un serveur web 1
CONSERVATOIRE NATIONAL DES ARTS ET METIERS
Application 1
(fenêtre 1
I.explorer)
Application 2
(fenêtre 2
I.explorer)
Protocole
TCP/IP
Protocole
TCP/IP
192.168.1.10:1031
192.168.1.10:1047
Serveur1
Carte réseau
ou
Modem
Réseau
Serveur2
Machine Cliente
Dans l'exemple ci-dessus, les numéros de port 1031 et 1047 permettent d'aiguiller le retour des
informations.
Les applications serveurs de l'Internet comme le web ont des numéros de port réservés. Lorsque vous
consultez un serveur web sans préciser de numéro de port, vous aboutissez sur le port n° 80.
Vous allez travailler avec un serveur web installé localement sur votre propre machine. Comment les échanges
entre vos applications clientes (Internet Explorer, Netscape…) et votre serveur Apache vont être gérée par
TCP/IP ?
Le schéma ci-dessous vous donne une idée de ce qui ce passe.
Application 1
(Internet
Explorer)
Application 2
(serveur
Apache)
Protocole TCP/IP
127.0.0.1:1031
Protocole TCP/IP
127.0.0.1:80
Carte réseau
ou
Modem
Votre machine, cliente et serveur
Fonctionnalités d’un serveur web, le protocole HTTP 2
CONSERVATOIRE NATIONAL DES ARTS ET METIERS
Rappel, l'adresse 127.0.0.1 s'appelle adresse de boucle locale. Si vous utilisez cette adresse, TCP/IP
ne passe plus les informations aux périphériques réseau mais reste au niveau local.
C'est ce mode de fonctionnement qui va vous permettre de réaliser vos tests sur votre machine. Dans le
schéma ci-dessus, une fenêtre d'Internet Explorer est cliente du serveur web Apache. La connexion est définie
par la socket 127.0.01:1031 – 127.0.0.1:80.
Nous allons mettre en pratique ces connaissances (sous Windows).
•
Démarrez EasyPHP.
•
Ouvrez l'application Internet Explorer et entrez l'adresse http://127.0.0.1. La fenêtre d'accueil de
votre serveur web doit s'afficher.
•
Dans le menu démarrer, exécuter, entrez :
command
cmd
•
( windows 98 ).
( windows NT, 2000 , XP ).
Une console s'ouvre. La commande netstat –n permet de voir les connexions en cours. Entrez
cette commande. Vous devriez avoir le résultat suivant :
C:\WINDOWS\Bureau>netstat -n
Connexions actives
Proto Adresse locale
TCP
bouzy:1030
TCP
bouzy:1031
TCP
bouzy:80
TCP
bouzy:80
Adresse distante
127.0.0.1:80
127.0.0.1:80
127.0.0.1:1030
127.0.0.1:1031
État
ESTABLISHED
ESTABLISHED
ESTABLISHED
ESTABLISHED
L'état des connexions sera "ESTABLISHED" (encours) si vous êtes très rapide. Sinon vous obtiendrez
des états comme "CLOSE_WAIT" ou "FIN_WAIT". Si vous tardez vraiment à entrer la commande netstat -n,
vous ne verrez aucune connexion. Remarquez qu'une fenêtre d'Internet Explorer déclenche deux connexions.
Ouvrez une seconde fenêtre d'Internet Explorer, entrez l'adresse de boucle locale (127.0.0.1), repassez
sur la première fenêtre d'Internet Explorer faites actualiser, passez ensuite dans la console MS-DOS et entrez à
nouveau netstat –n . Vous devriez avoir 2x2 = 4 connexions.
Nous allons maintenant vérifier que la notation http://127.0.0.1 et http://127.0.0.1:80 sont bien
équivalentes. (80 est le port par défaut pour les serveurs web).
•
Testez l'adresse http://127.0.0.1:80 dans Internet Explorer. Obtenez vous bien le même résultat ?
Essayons un port serveur qui n'existe pas sur notre machine comme le port 600. Testez l'adresse
http://127.0.0.1:600. Vous devriez avoir le message: "Impossible d'afficher la page".
Allons plus loin avec la commande netstat. Si vous utilisez l'option -an , vous obtiendrez la liste de tous
les processus à l'écoute d'une requête TCP (UDP) sur votre système.
Si EasyPHP est installé et fonctionne, vous devriez avoir une ligne comme suit :
TCP
0.0.0.0:80
0.0.0.0:0
LISTENING
Votre serveur web Apache est à l'écoute (LISTENING) sur le port 80, le serveur MySQL écoute sur le
port 3306.
Installation et administration d’un serveur web 3
CONSERVATOIRE NATIONAL DES ARTS ET METIERS
Un exemple sur une machine Windows 2000 (Avec EasyPHP ou IIS installé) :
Proto
TCP
TCP
TCP
TCP
TCP
TCP
TCP
UDP
UDP
UDP
UDP
UDP
UDP
UDP
UDP
Adresse locale
0.0.0.0:80
0.0.0.0:135
0.0.0.0:445
0.0.0.0:1025
0.0.0.0:1027
0.0.0.0:3306
169.254.159.64:139
0.0.0.0:68
0.0.0.0:135
0.0.0.0:445
0.0.0.0:1026
127.0.0.1:1542
169.254.159.64:137
169.254.159.64:138
169.254.159.64:500
Adresse distante
0.0.0.0:0
0.0.0.0:0
0.0.0.0:0
0.0.0.0:0
0.0.0.0:0
0.0.0.0:0
0.0.0.0:0
*:*
*:*
*:*
*:*
*:*
*:*
*:*
*:*
Etat
LISTENING
LISTENING
LISTENING
LISTENING
LISTENING
LISTENING
LISTENING
Si vous souhaitez avoir plus d'informations sur les processus à l'origine de l'ouverture des ports, vous
pouvez télécharger l'utilitaire (gratuit) Active Ports (pour NT,2000,XP) disponible à l'adresse :
http://www.ntutility.com/freeware.html
La liste complète des correspondances entre numéros de ports et services est disponible à l'adresse :
http://www.iana.org/assignments/port-numbers
2. INTRODUCTION AU PROTOCOLE HTTP.
Il est temps de dire quelques mots sur le protocole (règles de conversation) qui régit les échanges entre
clients web (Internet Explorer, Netscape, Opera…) et serveurs web (Apache, IIS …).
L'application cliente envoie des requêtes en mode texte au serveur web. Les requêtes sont au format
suivant :
[type de requête] [désignation de la page sur le serveur] [type de protocole]
[options]
Un exemple :
GET / HTTP/1.0
Signifie que l'on veut télécharger (GET) la page d'accueil du serveur (/) et que cette requête utilise la
version 1.0 du protocole http (HTTP/1.0).
Le serveur web est alors censé renvoyer le contenu, au format HTML, de la page d'accueil des
documents.
Le schéma suivant illustre les échanges entre le logiciel client (Internet Explorer) et le logiciel serveur
(Apache).
Fonctionnalités d’un serveur web, le protocole HTTP 4
CONSERVATOIRE NATIONAL DES ARTS ET METIERS
Vous entrez l'url:
http://127.0.0.1
Internet Explorer :
GET / HTTP/1.0
Serveur Apache
Fichiers sur le
disque dur
Protocole TCP/IP
127.0.0.1:1031
Protocole TCP/IP
127.0.0.1:80
Votre machine, cliente et serveur
Pour mieux comprendre ce qui se passe, nous allons détourner de son usage traditionnel un outil fourni
avec Windows ou UNIX. Il sert normalement à régler à distance des matériels réseau. Il s'agit de la console de
commande "Telnet".
La console Telnet permet d'envoyer des requêtes en mode texte sur un port désigné (normalement celui
réservé au protocole Telnet).
•
Observez tout d'abord le résultat de la requête http://127.0.0.1 (ici avec EasyPHP) dans Internet
Explorer.
Nous allons nous servir de la console Telnet pour observer comment Internet Explorer demande à
Apache le contenu de cette page et ce qu'Apache renvoie à Internet Explorer.
•
Ouvrez une console de commande et entrez la ligne :
telnet 127.0.0.1 80
Vous venez d'ouvrir une console de commande Telnet @IP cible 127.0.0.1, port cible 80.
Installation et administration d’un serveur web 5
CONSERVATOIRE NATIONAL DES ARTS ET METIERS
Le protocole http n'a pas été conçu pour être utilisé en mode interactif, vous allez donc devoir
entrer une ligne de commande en aveugle (vous pouvez activer un écho local mais l'affichage est
parfois curieux, je vous conseille de travailler en aveugle).
•
Entrez la requête suivante (Attention aux majuscules/minuscules et aux espaces. Ne vous
trompez pas pendant la saisie ou bien recommencez à partir du début) :
GET / HTTP/1.0
suivie de deux fois Enter.
Vous devriez obtenir une réponse du serveur web. Exemple (IIS) :
C'est ce que reçoivent Internet Explorer, Mozilla ou d'autres navigateurs.
L'un des rôles d'un navigateur web est d'afficher correctement ce code HTML.
•
Branchez vous sur l'Internet et déterminez le type de quelques serveurs (www.france3.fr,
ne.pleiad.net, www.education.gouv.fr …).
Vous avez la possibilité d'entrer un nom de serveur à la place d'une adresse IP dans la commande
telnet (n'oubliez pas le port 80).
Une astuce, pour ne pas voir défiler trop de code HTML, entrez une URL fantaisiste qui n'existe
pas sur le serveur que vous testez. Par exemple :
GET /zzz HTTP/1.0
Sur le serveur web www.france3.fr, est équivalent à la requête http://www.france3.fr/zzz .
Fonctionnalités d’un serveur web, le protocole HTTP 6

Documents pareils