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