Pourquoi le «Client/Serveur»



Documents pareils
Les services usuels de l Internet

Internet. DNS World Wide Web. Divers. Mécanismes de base Exécution d'applications sur le web. Proxy, fire-wall

Introduction. Adresses

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

Programmation Internet Cours 4

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Serveurs de noms Protocoles HTTP et FTP

Réseaux IUP2 / 2005 DNS Système de Noms de Domaine

Introduction aux Technologies de l Internet

Module BD et sites WEB

1 Résolution de nom Introduction à la résolution de noms Le système DNS Les types de requêtes DNS...

L3 informatique Réseaux : Configuration d une interface réseau

Programmation Web. Introduction

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

Couche application. La couche application est la plus élevée du modèle de référence.

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Cours CCNA 1. Exercices

18 TCP Les protocoles de domaines d applications

TP1 - Prise en main de l environnement Unix.

Services Réseaux - Couche Application. TODARO Cédric

webmestre : conception de sites et administration de serveurs web 42 crédits Certificat professionnel CP09

FORMATION / CREATION DE SITE WEB / 4 JOURNEES Sessions Octobre 2006

Architectures web/bases de données

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

TP JAVASCRIPT OMI4 TP5 SRC

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

M Architecture des réseaux

Réseaux et protocoles Damien Nouvel

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

Environnements informatiques

Présentation du modèle OSI(Open Systems Interconnection)

Protocoles DHCP et DNS

Atelier Le gestionnaire de fichier

Domain Name Service (DNS)

Chapitre : Les Protocoles

Domain Name System. F. Nolot

DNS ( DOMAIN NAME SYSTEM)

Plan Général Prévisionnel (1/2) Internet et Outils L1/IO François Armand. Plan Général Prévisionnel (2/2) Unix, Réseau: Plan

Étude de l application DNS (Domain Name System)

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

Cours admin 200x serveur : DNS et Netbios

Création de formulaires interactifs

Internet et Programmation!

Glossaire. ( themanualpage.org) soumises à la licence GNU FDL.

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

CREATION d UN SITE WEB (INTRODUCTION)

Assistance à distance sous Windows

Préparation à l installation d Active Directory

Manuel d'utilisation d'apimail V3

Cisco Certified Network Associate

Service de noms des domaines (Domain Name System) Cours administration des services réseaux M.BOUABID,

TP : Introduction à TCP/IP sous UNIX

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

Windows Internet Name Service (WINS)

Programmation Réseau. ! UFR Informatique ! Jean-Baptiste.Yunes@univ-paris-diderot.fr

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

Présentation Internet

Chapitre VII : Principes des réseaux. Structure des réseaux Types de réseaux La communication Les protocoles de communication

Le réseau Internet.

Hébergement de site web Damien Nouvel

Présentation du système DNS

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

Algorithmique et langages du Web

Travaux Pratiques Introduction aux réseaux IP

II/ Le modèle OSI II.1/ Présentation du modèle OSI(Open Systems Interconnection)

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

FreeNAS Shere. Par THOREZ Nicolas

Réseaux. DNS (Domaine Name System) Master Miage 1 Université de Nice - Sophia Antipolis. (second semestre )

LE RESEAU GLOBAL INTERNET

GENERALITES. COURS TCP/IP Niveau 1

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

Computer Networking: A Top Down Approach Featuring the Internet, 2 nd edition. Jim Kurose, Keith Ross Addison-Wesley, July ENPC.

WINDOWS NT 2000: Travaux Pratiques. -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 ver 1.0

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

Bind, le serveur de noms sous Linux

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

Mr. B. Benaissa. Centre universitaire Nâama LOGO

Unix/Linux I. 1 ere année DUT. Université marne la vallée

1. La plate-forme LAMP

Documentation Honolulu 14 (1)

Réseaux Locaux. Objectif du module. Plan du Cours #3. Réseaux Informatiques. Acquérir un... Réseaux Informatiques. Savoir.

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

NetCrunch 6. Superviser

NAMEBAY PRO. votre site de revente de noms de domaine en marque blanche. Documentation technique

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

L annuaire et le Service DNS

B1-4 Administration de réseaux

SOMMAIRE 1 INTRODUCTION 4 2 GUIDE D UTILISATION ET TUTORIAUX VIDEOS EN LIGNE 4 3 CONTACTER VOTRE SUPPORT 4 4 RACCOURCIS CLAVIER 5

CREER UN PETIT SITE WEB EN COMPOSANT DES PAGES HTML

CONFIGURER VOTRE HEBERGEMENT WINDOWS

Manuel d'installation

Groupe Eyrolles, 2003, ISBN : X

Introduction au protocole FTP. Guy Labasse

TAGREROUT Seyf Allah TMRIM

E-TRANSACTIONS. Guide du programmeur API Plug-in. Version 1.1

Ch2 La modélisation théorique du réseau : OSI Dernière maj : jeudi 12 juillet 2007

Guide d'utilisation du Serveur USB

But de cette présentation

Transcription:

Chapitre XI le modèle clientserveur Le modèle de base du fonctionnement d'internet 101 Pourquoi le «Client/Serveur»!Approche «centralisée» versus «répartie» "Centralisé = une seule machine très puissante #Tout s'exécute de manière centralisée, panne => on arrête tout. "Réparti = plusieurs machines moins puissantes #Exécution sur plusieurs machines, panne => mode dégradé!programmation «séquentielle» versus «parallèle» "Séquentielle = ordre d'exécution des instructions immuable #Un seul flot d'instructions "Parallèle = ordre d'exécution des instructions variable #Plusieurs flots d'instructions!la programmation parallèle est extrêmement complexe "Il existe des "gabarits" de conceptions "Aide aux développeurs!modèle Client/Serveur = gabarit de conception " un parmi d autres " simple et modèle de base d Internet LI-232 - Programmation Système & Internet - 102

Le modèle «client-serveur» Processus client LI-232 - Programmation Système & Internet - 103 Processus serveur Emballage Traitement c Demande de service Traitement s Délai d'attente déballage déballage Traitement c ' Réponse de service Service demandé Emballage Temps Traitement s ' Utilisation...!Extrêmement classique "Partage de disques "Serveurs WWW "Serveurs de mail "Serveurs d'impression "Etc!Variantes "Sur le nombre de clients "Sur le nombre de serveurs!sur Internet "1 serveur <=> N clients LI-232 - Programmation Système & Internet - 104 Démons (ou services) (processus fonctionnant en permanence)

Chapitre XII Internet, Protocoles & architecture Première approche d'internet 105 «L invention» d Internet!Somme «d'inventions» qui s'accumulent "Mécanismes réseaux de base (TCP/IP) "Gestion de «noms» et d'adresses "Des outils et des protocoles spécialisés (mail, ftp etc) "La notion d'hyper-texte et le langage HTML (CERN) #Version simplifiée de SGML #Insertion d'images, transparence des accès #Formulaires LI-232 - Programmation Système & Internet - 106 "L'idée d'un outil «multi-protocole»: le navigateur (urbana-champaign UIUC) #Connaît différent types de services #Évolution vers une association d'outils (intégration dans l'os)!architecture de logiciels et de protocoles extrêmement complexe

Nécessité de définir des protocoles LI-232 - Programmation Système & Internet - 107!Protocole : ensemble des conventions nécessaires pour faire coopérer des entités généralement distantes, en particulier pour établir et entretenir des échanges d informations entre ces entités. Les entités peuvent être des éléments réels ou virtuels, matériels ou logiciels, d'un réseau de télécommunication ou d'un ensemble de traitement de l'information.!protocoles différents suivant la nature des données à échanger "Mail "Transfert de fichiers "Contenu de pages web " Les services d Internet LI-232 - Programmation Système & Internet - 108 Différents mécanismes Client { E-mail telnet ftp http... comment repérer les différents protocoles? Serveur (httpd, ftpd, telnetd, etc.) Types de services différents URL P://S[:p][/[Accès]F[indic]] Un protocole par service

Chapitre XIII Le langage HTML Principe & syntaxe Le minimum pour faire les TME 109 Principes de HTML LI-232 - Programmation Système & Internet - 110 Structuration d'un texte à l'aide de balises Page bla bla bla bla bla bla bla bla bla bla bla bla bla ref bla bla bla bla bla bla ref bla bla bla bla ref bla bla... image fichier local serveur de news aux USA serveur HTTP au Japon serveur ftp en Australie

HTML - les bases!balise = Directive qui «s'ouvre» et se «ferme» "Attention aux exceptions (balises qui ne se ferment pas)!les balises sont comprises entre < et >!Les balises dénotent des "constructions" documentaires "Styles de paragraphe (normal, énumérations, titres ) "Table "Styles de caractères (gras, italique, souligné ) "Référence à des images "Références hyper-texte "Etc!Les balises s'imbriquent LI-232 - Programmation Système & Internet - 111 Structure «minimale» d un document LI-232 - Programmation Système & Internet - 112 <html><head> <title>titre-fenetre</title> </head><body> corps du document </body></html>

Balise «P» LI-232 - Programmation Système & Internet - 113 <html><head> <title>titre-fenetre</title> </head><body> <p>ceci est un paragraphe.</p> <p>ceci en est un autre, le texte sur plusieur lignes est reformaté.</p> </body></html> Balises «UL» et «LI» LI-232 - Programmation Système & Internet - 114 <html><head> <title>titre-fenetre</title> </head><body> <p>avant une liste :</p> <ul><li>élément 1</li> <li>élément 2</li> <ul><li>élément 3.1</li> <li>élément 3.2</li> </ul></ul> </body></html>

Balises de formatage de texte LI-232 - Programmation Système & Internet - 115 <html><head> <title>titre-fenetre</title> </head><body> <p>avant une <b>liste</b> :</p> <ul><li><i>élément 1</i></li> <li>élément 2 <ul><li>élément 3.1</li> <li>élément 3.2</li> </ul></li></ul> </body></html> Balises de titres LI-232 - Programmation Système & Internet - 116 <html><head> <title>titre-fenetre</title> </head><body> <h1>titre "H1"</h1> <p>texte sous le titre.</p> <h2>titre "H2"</h2> <p>texte sous le titre.</p> <h3>titre "H3"</h3> <p>texte sous le titre.</p> </body></html>

Balises pour l insertion d images LI-232 - Programmation Système & Internet - 117 <html><head> <title>titre-fenetre</title> </head><body> <p>texte sur l'image.</p> <p><img SRC="logo.jpg"></p> <p>texte sous l'image.</p> </body></html> Balises pour les liens hyper-texte LI-232 - Programmation Système & Internet - 118 <html><head> <title>titre-fenetre</title> </head><body> <p>texte avec un<a href="cible.html"> lien hyper-texte</a>.</p> </body></html>

Balises pour les tableaux!un tableau <table border=p> {def_ligne}* </table> "p: épaisseur des trais du tableau!une ligne <tr>{def_cellules}*</tr>!une cellule <td>contenu</td> "Cas particulier, th (pour des en-têtes de tableau) LI-232 - Programmation Système & Internet - 119 <html><head> <title>titre-fenetre</title> </head> <body> <p>voici un tableau</p> <table border=1> <tr><th>nom</th><th> Numero</th></tr> <tr><td>moi</td><td>001</td></tr> <tr><td>lui</td><td>002</td></tr> </table></body></html> Autres mécanismes intégrables dans une page!autres technologies intégrables dans une page web "Frames "Javascript "Applets "JSP/PhP "Flash "Styles CSS (Cascade Style Sheet) "!Attention au «poids» d'un site LI-232 - Programmation Système & Internet - 120 "Acceptable: prendre «un peu de temps» pour charger la première page et quasiment rien pour les suivantes "Inacceptable: prendre «du temps» pour tout chargement

Chapitre XIV Mécanique CGI Principe & fonctionnement 121 Formulaires HTML LI-232 - Programmation Système & Internet - 122!Objectif, permettre une interactivité entre l'usager et le serveur Internet "Saisie d'informations "Traitement par un «script CGI»!CGI = Common Gateway Interface "Un mode d'encodage des informations pour transmission sur le réseau "C'est une forme d'emballage au sens du modèle "client/serveur"!script CGI = un programme qui interprète les données reçues "Il doit décoder le format CGI "Il doit rendre un résultat dans un format "Internet" #HTML, texte, gif, jpeg, mpeg etc...

Pages HTML «statiques»... LI-232 - Programmation Système & Internet - 123... versus pages HTML «dynamiques» LI-232 - Programmation Système & Internet - 124 moi Processus Décoder les paramètres Exécutant le CGI Algorithme (retour via "stdout") Renvoyer une réponse

Remarque importante, le client est passif LI-232 - Programmation Système & Internet - 125 Poste client Site serveur Navigateur client 1 demande du formulaire Serveur Web Démon HTTP 2 recherche de la page HTML sur le disque DD Affichage du formulaire 3 envoi du formulaire 4 l'utilisateur remplit le formulaire Formulaire rempli 5 envoi des données du formulaire (soumission) Serveur Web Démon HTTP 6 transmission des données au CGI / lancement de son exécution Programme CGI 7 exécution du CGI SGBD Affichage de la réponse 10 envoi de la page HTML résultat Serveur Web Démon HTTP 9 8 réponse en HTML du CGI renvoyée au démon HTTP requête à la SGBD (mysql) Remarque importante LI-232 - Programmation Système & Internet - 126!Apparition de ce message pour vous signaler que les données ne sont pas cryptées (lorsqu'elles ne le sont pas)!attention aux informations que vous véhiculez de la sorte car elles sont transmises «en clair»

Chapitre XV Structure et contenu d'un formulaire HTML Formulaire & programme CGI, méthodes (GET, POST), éléments d'un formulaire 127 Association d un script CGI à un formulaire LI-232 - Programmation Système & Internet - 128!Structure générale Référence au serveur et au programme <form [action='url'] [method='type_transmission']> Contenu du formulaire </form> GET : champ de requête ajouté à l URL, POST : message distinct Remarque: on peut avoir plusieurs formulaires sur une même page Intérêt: une même page est «frontale» de plusieurs programmes CGI

«rubriques» d un formulaire (1) LI-232 - Programmation Système & Internet - 129!Saisies de type input text, password, checkbox, radio, submit, reset, hidden nom interne coché (boîte ou bouton radio) <input type=type_input name='nom' [checked] [value='valeur'] size='entier' [maxlength='entier']> valeur par défaut ou valeur envoyée largeur (20) (text, password) nb max de caractères «rubriques» d un formulaire (2) LI-232 - Programmation Système & Internet - 130 texte <input type='text' name='nom' size='20'> soumission <input type='submit' name='nom2' value='allez-y'> <hr> cases à cocher <br> case1 <input type='checkbox' name='nom1' value='c1'> case2 <input type='checkbox' name='nom1' value='c2'checked> <hr> mot de passe <input type='password' name='nom3' size='20'> rubrique cachée <input type='hidden' name='nom5' value='h1'> <hr> boutons radio <br> bouton1 <input type='radio' name='nom4' value='r1'> bouton2 <input type='radio' name='nom4' value='r2' checked>

«Menus de sélection» dans un formulaire LI-232 - Programmation Système & Internet - 131!Saisies de type select nom interne Nombre d options affichés (1) Indique la saisie multiple <select name= chaîne [size= entier] [multiple]> {item}</select>!entités sélectionnables <option [selected=selected]>nom de l entité</option> Sélectionné «GET» LI-232 - Programmation Système & Internet - 132 Les informations du formulaire sont ajoutées à lurl Avantages: c'est une URL (signets) Inconvénients: Taille d une URL limitée par le serveur (256 caractères en général) Limites : ne devrait pas modifier les données du côté du serveur (juste un accès en lecture)

GET : Récupération des données LI-232 - Programmation Système & Internet - 133!Variable QUERY_STRING!Utilisable par le script cgi de traitement du formulaire (script decodeprepost.cgi)!exemple "Valeur de QUERY_STRING # NOM=Mounier&PASS=123456&CHOIX=Dire+Bonjour&VALID=Soumettre "Rubriques du formulaire # NOM : la valeur saisie est Mounier (zone de saisie de texte) # PASS : la valeur saisie est 123456 (zone de saisie de mot de passe) # CHOIX : la valeur saisie est «!Dire Bonjour!» (menu déroulant) # VALID : la valeur saisie est Soumettre (bouton de soumission) "Pas d identification du type de la rubrique dans la variable QUERY_STRING "En CGI # Espace remplacé par «!+!» # Informations séparées par «!&!» GET : script CGI LI-232 - Programmation Système & Internet - 134 #! /bin/sh # L'interpréteur shell à utiliser doit absolument se # trouver en première ligne # Les deux lignes suivantes sont indispensables. # Elles indiquent que le résultat est du HTML. echo 'Content-type: text/html' echo '' # Affichage des donneés echo la valeur de la variable QUERY_STRING est echo "<br/>" echo $QUERY_STRING

«POST» LI-232 - Programmation Système & Internet - 135 Rien n!est ajouté à lurl Avantages: Pas de limitation de taille de données Inconvénients: Plus de raccourcis POST : Récupération des données!données récupérées sur l entrée standard LI-232 - Programmation Système & Internet - 136 "read nom_variable!exemple " valeur de la variable nom_variable identique à celui de la variable QUERY_STRING de la méthode GET # NOM=Mounier&PASS=123456&CHOIX=Dire+Bonjour&VALID=Soumettre!Les données récupérées sont identiques (GET et POST), seule la façon de les récupérer diffère.

POST : script CGI LI-232 - Programmation Système & Internet - 137 # L'interpréteur shell à utiliser doit absolument se # trouver en première ligne # Les deux lignes suivantes sont indispensables. # Elles indiquent que le résultat est du HTML. echo 'Content-type: text/html' echo '' # lecture des données read VARIABLE_DONNEES echo la valeur des donnees lues est echo "<br/>" echo $VARIABLE_DONNEES script de traitement général!request_method : variable d identification de la méthode de transmission des données! script général #! /bin/sh echo 'Content-type: text/html' echo '' LI-232 - Programmation Système & Internet - 138 if [ "$REQUEST_METHOD" = "POST" ] ; then read QUERY_STRING fi # On peut ensuite faire le traitement des données # indépendamment de la méthode de transmission des # données. echo "la valeur de la variable QUERY_STRING est <br/>" echo $QUERY_STRING

Chapitre XVI Choix faits pour les TME Séparation du décodage et du traitement des données Un exemple d'utilisation 139 Séparation décodage et traitement LI-232 - Programmation Système & Internet - 140 Associer le même script à tous les formulaires (même balise form) moi Script de décodage Déballe le CGI, génère les variables Identifie et appelle le script de traitement Script de traitement Exécute l algorithme de traitement Génère le formulaire résultat

Scripts de décodage et de traitement!script de décodage "<form action="http://mon_site/cgibin/script_decodage.cgi" method=!"get"> LI-232 - Programmation Système & Internet - 141 "Extension.cgi obligatoire pour certains serveurs (pour des raisons de sécurité) "Crée les variables d environnement et les exporte "Met à jour la variable PATH pour pouvoir exécuter les scripts de traitement "Appelle le script de traitement associé!au bouton de soumission du formulaire traité!script de traitement "Appelé par le script de décodage "Dispose des variables d environnement créées par le script de décodage "Génère un formulaire HTML résultat (visualisé sur le navigateur client) Exemple : formulaire LI-232 - Programmation Système & Internet - 142 <html> <head> <title> exemple </title> </head> <body> <form action="http://mon_site/cgi-bin/script_decodage.cgi" method=!"get"> <h2><center> <hr size="10"> Saisissez votre nom et titre </center></h2> <p><center><select name="titre"> <option>madame</option> <option selected=selected>mademoiselle</option> <option>monsieur</option> </select> - <input type="text" name="nom" value="" size=15 maxlength=15> - <input type="submit" name="envoi" value="soumettre"> <hr size="10"></center></p></form></body></html>

Exemple : scripts!script de traitement # /home/chez_moi/programmes/mon_script.sh LI-232 - Programmation Système & Internet - 143 echo "<html> <title> Réponse </title> <body>!» echo "<h3> Bonjour $TITRE $NOM </h3>!» echo "</body></html>"!script de décodage # script_decodage.cgi REP_SCRIPTS=/home/chez_moi/programmes PATH=$REP_SCRIPT:$PATH export PATH # Instructions de décodage et de créations de variables # dont TITRE et NOM (détaillées en TME) mon_script.sh Exemple d'exécution LI-232 - Programmation Système & Internet - 144 CLIENT SERVEUR Identifiés par le champ ACTION de la balise FORM httpd script_decodage.cgi mon_script.sh Identifié grâce à la variable PATH

Note sur la programmation CGI!Programmation CGI ~! programmation événementielle "Invocation sur "événement" (bouton submit) LI-232 - Programmation Système & Internet - 145 "Mais pas de mécanisme de masquage (un processus par événement)!programmation CGI = programmation parallèle "N individus peuvent parfaitement utiliser le formulaire en même temps Programmation CGI = programmation délicate Attention aux ressources critiques Attention aux sections critiques Chapitre XVII Présentation du projet Informations sur le projet qui vous occupera en fin de semestre 146

Cahier des charges: le «mot le plus long» LI-232 - Programmation Système & Internet - 147!Un site permettant à des internautes de se mesurer à l'ordinateur "Création de nouvelles parties "Gestion du contexte propre à ces parties "Suivi du jeu #Stratégie de l'ordinateur: recherche dans un dictionnaire "Mémoire du meilleur score "Enrichissement d'un dictionnaire #Pour que l'ordinateur apprenne de nouveaux mots!programmation: "Formulaires web (statiques et générés) "Décodage du CGI "Création de variables d! environnement associées aux rubriques des formulaires "Scripts shell La page statique LI-232 - Programmation Système & Internet - 148

La page d accueil LI-232 - Programmation Système & Internet - 149 Premier coup LI-232 - Programmation Système & Internet - 150 sonnette

Réponse du serveur LI-232 - Programmation Système & Internet - 151 Deuxième coup (1) LI-232 - Programmation Système & Internet - 152 voiture

Deuxième coup (2) LI-232 - Programmation Système & Internet - 153 e Réponse de l ordinateur LI-232 - Programmation Système & Internet - 154

«chemin d exécution» associé LI-232 - Programmation Système & Internet - 155 B:RetourAccueil B:NouvellePartie joueur perd Page-coup-joueur passer au coup suivant Accueil B:Entree amorce (statique) mot pas dans le dictionnaire B:Jouer mot dans le dictionnaire + l'ordinateur trouve un mot plus long La question des «enchaînements» LI-232 - Programmation Système & Internet - 156 B:Jouer B:NouvellePartie Page-coup-joueur Accueil passer au coup suivant mot dans le dictionnaire + l'ordinateur trouve un mot plus long aiguilleur.cgi Transmission des valeurs et des constantes affich_page_jeu.sh aiguilleur.cgi? Transmission des valeurs et des constantes jouer.sh

Propagation d information pour gérer les enchaînements LI-232 - Programmation Système & Internet - 157 aiguilleur.cgi Transmission des valeurs et des constantes (export) affich_page_jeu.sh Calcul d'un mot initial Création d'un fichier-partie Propagation du nom du fichier via une rubrique cachée aiguilleur.cgi Transmission des valeurs et des constantes jouer.sh (export) Vérifications Extension du mot Mise à jour du fichier-partie Propagation du nom du fichier via une rubrique cachée aiguilleur.cgi Etc... «automate complet» LI-232 - Programmation Système & Internet - 158 amorce (statique) B:RetourAccueil B:NouvellePartie B:Entree B:RetourAccueil B:EnrichirDictionnaire Joueur gagne Joueur perd B:MeRendre mot pas dans le dictionnaire fichier de partie absent Erreur: retour arriere Il existe un meilleur score B:Jouer Page-coup-joueur mot vide OU mot identique OU mot pas inclus passer au coup suivant reafficher la même page mot dans le dictionnaire + l'ordinateur trouve un mot plus long mot dans le dictionnaire + l'ordinateur ne trouve pas de mot plus long Il nexiste pas de meilleur score Accueil B:SignerLivre Score conserve mot nouveau à ajouter Formulaire ajout B:AjouterMot mot vide OU mot existe déjà Erreur dictionnaire

Choix pour la mise en œuvre!pages HTML "Seule la page d amorçage du système est statique LI-232 - Programmation Système & Internet - 159 "Les autres pages sont produites par les scripts CGI!Boutons de soumission: utilisation pour faire un mécanisme d'aiguillage "Un seul nom interne (ACTION) "Différentes valeurs (correspondant à des actions différentes)!structuration des programmes en langage shell "C'est toujours le même programme qui est invoqué (aiguilleur.cgi) "Selon la valeur du bouton "ACTION", il invoque un script dédié Organisation des programmes LI-232 - Programmation Système & Internet - 160 Données du formulaire aiguilleur.cgi Texte généré par le script affich_actions.sh nouvelle_partie.sh

Ce que fait aiguilleur.cgi!construction d'un certain nombre de standards LI-232 - Programmation Système & Internet - 161 "Construire des constantes caractérisant les traitements (étiquettes attribuées à ACTION) #Centralisation des choix #Cela facilite leur modification au cas où "Position de certains fichiers #À partir d'une valeur spécifiée (sur votre compte) #Permet de structurer les données!décode le CGI, produit et exporte les variables associées!met à jour la variable PATH!Analyse de la valeur du bouton de soumission ACTION #Chaque valeur (définie dans un formulaire) détermine une action précise #Appel le script de traitement adéquat!c'est un "système d'aiguillage" pour le serveur Exemple type de programmation souhaitée pour aiguilleur.cgi #! /bin/sh # declaration des variables qui serviront de constantes LI-232 - Programmation Système & Internet - 162 REP_DONNEES=HomeDirectory/MotLong/Donnees REP_SCRIPTS= HomeDirectory/MotLong/Scripts... # Exporter ces constantes "Constantes" pour l'aiguilleur comme pour les scripts invoqués export REP_DONNEES REP_SCRIPT... # Décode le CGI et crée et exporte les variables associées Propagation des "constantes" source $REP_SCRIPTS/decode-cgi.sh # Modification de la variable PATH Exécution des instructions de décodage PATH=$PATH:$REP_SCRIPTS # Test sur ACTION if [ -z "$ACTION" ] ; then Localisation des scripts de traitement echo "Vous avez tapé Return au lieu de cliquer sur le bouton" fi # Aiguillage en fonction des actions case "$ACTION" in NouvellePartie) nouvelle_partie.sh RetourAccueil) affich_actions.sh esac Identification et exécution du script de traitement adapté

Installation du serveur sur votre compte LI-232 - Programmation Système & Internet - 163 «HOME_DIR»/ public_html cgi-bin aiguilleur.cgi «HOME_DIR»/li232-2008fev MotLong Scripts Ce chemin =Valeur à ajouter au PATH Ce chemin = constante de base pour construire les chemins des données (dictionnaires et parties) PageHTML Donnees Une seule page (amorçage) Dico_Deb Dictionnaire Meilleur_Score No_Partie Partie.<numéro> Fichiers du répertoire «Donnees»!Dico_Deb LI-232 - Programmation Système & Internet - 164 "Mots d une syllabe utilisés par l ordinateur pour débuter une partie!dictionnaire "Mots pouvant être utilisés lors du jeu!meilleur_score "Contient les informations sur la partie perdue par l ordinateur avec le plus grand nombre de coups joués (nom du joueur, score et date)!no_partie "Contient l entier à attribuer à la prochaine nouvelle partie!partie.<numéro> "Un fichier par partie en cours (suffixé par le numéro associé à la partie) "Contient le nombre de coups déjà joués et le dernier mot choisi par l ordinateur

Droits Unix LI-232 - Programmation Système & Internet - 165!Processus exécutés par le serveur Apache "Groupe «!autres!»!scripts CGI "rwx pour le propriétaire, r_x pour les autres (raisons de sécurité) "chmod 755 nom_script.cgi!autres scripts (droits en exécution pour le serveur) "chmod o+x nom_script.sh!fichiers de données (droits en lecture et/ou écriture) "chmod o+rw nom_fichier!répertoires traversés (droits en exécution pour le serveur) "chmod o+x nom_repertoire!répertoires dans lesquels des fichiers sont crées ou lus (droits en lecture et écriture pour le serveur) "chmod o+rw nom_repertoire Pourquoi respecter ces choix LI-232 - Programmation Système & Internet - 166!Parce qu on vous le demande (facilite le travail des chargés de TD et TP)!Pour apprendre à respecter des contraintes de programmation!certains choix sont imposées par le serveur Web (sécurité)!bonnes habitudes "L'écriture de programme est une chose difficile #Surtout ce type de programmes!!! "Il faut que les programmes puissent (assez facilement): #Évoluer #Etre maintenus

Chapitre XVIII «Mot le plus long»: les processus Création, liens et échange d information 167 Processus créés initialement LI-232 - Programmation Système & Internet - 168! Serveur : processus httpd " Processus démon (existe en permanence, en un seul exemplaire) " Chargé du traitement des requêtes! Client : processus associé au navigateur " Seul processus exécuté par le client " Affiche les formulaires (statiques ou dynamiques) " Envoie les requêtes au serveur (soumission des formulaires) " Reçoit les réponses et les traite (affichage d un nouveau formulaire)

Processus httpd!attend une requête!a chaque réception de requête "Crée un processus fils dédié au traitement de la requête LI-232 - Programmation Système & Internet - 169 "Assure le lien entre le navigateur client et le processus de traitement => Traitement en parallèle de plusieurs requêtes "Les requêtes peuvent provenir de clients différents "Pas de lien entre les différents processus de traitement #Ils ne peuvent donc pas partager directement de l information httpd Processus de traitement requête 1 Processus de traitement requête 2 Processus de traitement requête n Processus de traitement!découpé!en deux processus "Processus de décodage, de création de «!constantes!» et d aiguillage # Exécute le code du script mentionné dans la balise form du formulaire "Processus de traitement!processus de décodage-aiguillage (aiguilleur.cgi) # Décode le CGI (instructions de decode.sh) # Produit des variables d environnement # Lance l exécution du processus qui fait le traitement (déterminé par la valeur du bouton de soumission)!processus de traitement (nom_proc.sh) # Traite les données # Produit le résultat (code HTML d un nouveau formulaire) # Peut faire appel à d autres scripts LI-232 - Programmation Système & Internet - 170 httpd aiguilleur.cgi (source decode.sh) nom_proc.sh Script qui réalise le traitement

Traitement d une requête : enchaînement de plusieurs processus LI-232 - Programmation Système & Internet - 171 httpd aiguilleur.cgi nouvelle_partie.sh affich_page_jeu.sh Une seule arborescence de processus Une seule arborescence de processus: partage de l information LI-232 - Programmation Système & Internet - 172!Un fichier (ou des fichiers) "Même système de gestion de fichier accessible par l ensemble des processus!variable(s) exportée(s) "Création d une variable pour toute la descendance #Fonctionnement du script aiguilleur.cgi "Valeur initiale de la variable définie au moment de la création du fils "Chaque processus fils travaille sur sa copie locale de la variable (contexte d exécution)

Traitement de deux requêtes Requête 1 LI-232 - Programmation Système & Internet - 173 Requête 2 httpd aiguilleur.cgi aiguilleur.cgi affich_actions.sh affich_ajout_page.sh Arborescences de processus INDEPENDANTES Arborescences de processus indépendantes: partage d information LI-232 - Programmation Système & Internet - 174!Un fichier (ou des fichiers) "Même système de gestion de fichier accessible par l ensemble des processus!une rubrique d un formulaire (ou des rubriques) "Uniquement si les deux arborescences de processus sont liées par un formulaire "La page d accueil produite par la requête 1 est celle qui engendre la requête 2 "Les informations transmises dans le formulaire sont récupérées sous forme de rubriques (boutons cachés habituellement)

Chapitre XIX Retour sur les processus Identification et interruption 175 Identification des processus (1)!Association, par le système, d un entier à chaque processus créé : PID!L utilisateur connecté qui lance le processus en est le propriétaire!commande ps Liste des processus (de l utilisateur connecté) rattachés à un terminal Prompt> ps PID TTY TIME CMD 1637 pts/13 0:00 sh 28171 pts/13 0:00 ps PID : numéro d identification du processus par le système TTY : terminal depuis lequel a été lancé le processus? si pas de terminal TIME : temps CPU écoulé (temps d occupation du processeur) 0:00 : temps trop faible pour être représenté CMD : commande exécutée LI-232 - Programmation Système & Internet - 176

Identification des processus (2) Liste des processus (de l utilisateur connecté) Prompt> commande_longue & [1] 28094 Prompt> ps x PID TTY STAT TIME COMMAND 1320? S 0:00 sshd:vernier@pts/11 1637 pts/13 S 0:00 sh 28275 pts/13 S 0:00 commande_longue 29345 pts/13 R 0:00 ps x LI-232 - Programmation Système & Internet - 177 STAT :état du processus dont R : actif S : en sommeil (en attente) T : suspendu COMMAND = CMD!Variable shell égale au PID du processus: $$ Processus en arrière plan!faire passer un processus en arrière plan LI-232 - Programmation Système & Internet - 178 "fonctionne avec de interruptions, événements, signaux "Utile dans le cas d un processus long, ne nécessitant aucune saisie clavier Prompt> commande_longue Ctrl Z Pas lancée en arrière plan Ne rend pas la main [1]+ Stopped./commande_longue Suspension du processus courant Prompt> ps x (signal SIGTSTP) PID TTY STAT TIME CMD 1547 pts/13 S 0:00 sh 1845 pts/13 T 0:10 commande_longue 1978 pts/13 R 0:00 ps x Prompt> bg Mise du dernier processus Prompt> ps x suspendu en arrière plan PID TTY STAT TIME CMD 1547 pts/13 S 0:00 sh 1845 pts/13 S 0:10 commande_longue 1978 pts/13 R 0:00 ps x

Commandes bg et fg LI-232 - Programmation Système & Internet - 179!bg [PID] "met en arrière plan le processus dont le pid est passé en paramètre "si pas de paramètre, met en arrière plan le dernier processus suspendu "erreur si pas de processus suspendu!fg [PID] "ramène au premier plan le processus dont le pid est passé en paramètre (il prend alors la main) "si pas de paramètre, met au premier plan le dernier processus suspendu "si pas de processus suspendu met au premier plan le processus en arrière plan le plus récent "erreur si pas de processus suspendu ou en arrière plan Processus en arrière plan et saisie clavier Prompt> cat script.sh #script.sh echo Saisie de la valeur de i read i echo Valeur saisie : $i Prompt> script.sh & [1] 29933 Prompt> Saisie de la valeur de i 3 sh: 3: command not found PID attribué au processus Non lié à l entrée standard [1]+ Stopped./script.sh Prompt> ps x PID TT STAT TIME COMMAND 27943 pts/13 S 0:00 sh 29933 pts/13 T 0:00 script.sh 29966 pts/13 R 0:00 ps x Lu par le shell LI-232 - Programmation Système & Internet - 180 Processus [1] : 29933 suspendu Pas d accès à l entrée standard Interruption lors de la lecture (read) signal SIGTTIN

Processus en arrière plan et affichage écran!ecran : ressource partagée entre tous les processus!soit le script # script.sh i=0 while [ $i -le 20 ] do echo $i sleep 2 i=`expr $i + 1` done! et les commandes Prompt> script.sh & vi LI-232 - Programmation Système & Internet - 181 vi - éditeur de texte dont l interface est la fenêtre terminal - le quitter en saisissant les caractères <esc>:q! Terminal de rattachement LI-232 - Programmation Système & Internet - 182! Terminal = interface d un interpréteur shell (représentée par une fenêtre)! Représente la sortie standard et l entrée standard par défaut des processus qui lui sont rattachés Comportement : "Attend une commande saisie par l utilisateur (prompt affiché) "Attend la fin de l exécution d une commande (pas de prompt affiché)

Processus rattachés à un terminal LI-232 - Programmation Système & Internet - 183!Le processus shell dont c est l interface (shell courant)!les processus créés depuis l interface du shell (même lancés en arrière plan) "Prompt> mozilla & (processus mozilla rattaché à un terminal)!processus fils d un processus rattaché à un terminal (hérite du terminal de rattachement) Processus non rattachés à un terminal LI-232 - Programmation Système & Internet - 184!Processus créés en double cliquant sur l icône associée à l application "double clic sur l icône de mozilla (processus mozilla sans terminal de rattachement)!processus créés par le système (démons par exemple)!ne peuvent être «!contrôlés!» que par leur PID.

Arrêt d un terminal LI-232 - Programmation Système & Internet - 185!Fin du shell associé!envoi d un signal (SIGHUP) à tous les processus rattachés à ce terminal!réception du signal SIGHUP par un processus "Terminaison du processus ou "Comportement particulier associé au signal (identique à ce qui se passe dans le traitement des interruptions) #Ignorer le signal #Faire une action particulière!comportement par défaut (dépend du shell) "Processus en premier plan : se termine "Processus en arrière plan : peut continuer son exécution (avec un terminal de rattachement qui n existe plus) #ATTENTION : des processus peuvent donc encore tourner!! Interruption d un processus!ctrl C "Saisie associée à un terminal (la fenêtre doit être active) "Ne concerne que les processus rattachés au terminal LI-232 - Programmation Système & Internet - 186 "Envoi du signal SIGINT aux processus au premier plan (processus qui a la main et processus suspendus non mis en arrière plan) "Arrêt du processus (en standard) "Un processus peut ignorer le signal ou modifier le traitement associé!kill [-num] pid "num = numéro d identification du signal (si omis signal SIGTERM envoyé) "Pas obligatoirement depuis le terminal de rattachement du processus "Signal SIGKILL (numéro 9) provoque TOUJOURS l arrêt du processus #Pas de possibilité de modifier le comportement du processus "Autres signaux intéressants: STOP (numéro 19) et CONT (numéro 18) "Interruption uniquement des processus dont l utilisateur est propriétaire

Valeur de retour d un processus (1) LI-232 - Programmation Système & Internet - 187 $? : valeur de retour de la dernière commande exécutée Prompt> ls t* toto Prompt> echo $? 0 Prompt> rm titi rm: cannot remove `titi': Aucun fichier ou répertoire de ce type Prompt> echo $? 1 Prompt> Valeur de retour d un processus (2) LI-232 - Programmation Système & Internet - 188!Utilisation dans un script!l appel authentification.sh identifiant mot_de_passe retourne "0 si le couple (identifiant, mot_de_passe) existe "Valeur différente de 0 sinon #! /bin/sh # acces.sh # test des paramètres, $1:identifiant et $2:mot de passe authentification.sh "$1" "$2" if [ $? -ne 0 ] then echo "Pb d authentification"! exit 1 else # poursuite du script fi

Valeur de retour d un processus (3) LI-232 - Programmation Système & Internet - 189! Utilisation directe de la valeur de retour de la commande if commande then instructions 1 } instructions 1 : exécutées si commande retourne 0 else instructions 2 instructions 2 : exécutées si commande retourne une fi valeur différente de 0 #! /bin/sh # acces.sh # test des paramètres, $1:identifiant et $2:mot de passe if! authentification.sh "$1" "$2" then echo "Pb d authentification"! exit 1 else # poursuite du script fi Chapitre XX Une idée de l'organisation structurelle d'internet Structure physique et mise en œuvre 190

Première vision du transport des messages LI-232 - Programmation Système & Internet - 191 M=P 1 +P 2 «Couches» d un réseau (norme ISO) LI-232 - Programmation Système & Internet - 192 7 Applicatifs 6 Présentation 5 Session 4 Transport 3 Réseau 2 Liaison 1 Physique Niveau application Emballage/déballage Modèle client/serveur Constitution des "trames" Routage de "trames" Entre les machines Câblage

Empilement des protocoles!différents niveaux de service LI-232 - Programmation Système & Internet - 193 http ftp telnet etc... tftp Mécanismes de haut niveau TCP (Transfert Control Protocol) UDP (User Datagram Protocol) Ports d'accès IP Adresses IP Architecture TCP/IP et Architecture ISO Architecture ISO 7-APPLICATION 6-PRESENTATION 5-SESSION Architecture TCP/IP FTP, Telnet, SMTP, HTTP,... NFS XDR RPC LI-232 - Programmation Système & Internet - 194 Messages 4-TRANSPORT 3-RESEAU 2-LIAISON 1-PHYSIQUE Protocoles de routage TCP ou UDP IP 802.X, HDLC, PPP, SLIP,... PHYSIQUE ICMP ARP/RARP Segments TCP Datagrammes UDP Datagrammes Trames!ICMP : Internet Control Message protocol "Gestion des données relatives aux machines connectées "Emballages successifs!arp/rarp ([Reverse] Adress Resolution Protocol) "Association d'une adresse physique d'une carte réseau à une adresse IP

Services/Ports d accès!on contacte une machine via son numéro IP!Mais une machine peut offrir plusieurs services, comment faire pour les différentier? "Notion de ports => «multiplexage» "Ports pré-affectés #0 -> 1024 "Ports réservés #1025->5000 "Ports libres #À partir de 5000 LI-232 - Programmation Système & Internet - 195 ftp:21 http:80 ssh:22 POP3:110 SMTP:25 Parcours des données (schématique)!emballage/déballages successifs LI-232 - Programmation Système & Internet - 196 Émetteur données Destinataire données TCP données TCP données IP TCP données IP TCP données Ethernet IP TCP données It logicielle Réseau (routeur) Ethernet IP TCP données It matérielle

Liaison avec la programmation événementielle LI-232 - Programmation Système & Internet - 197!Le pilote de la carte ethernet dialogue avec le système au moyen d'interruptions "Pour que le système ne soit pas bloqué en attente d'un «paquet»!reconstitution du message "Réception d'un paquet à chaque itération "Construction du message par réassemblage des paquets (au fur et à mesure) #L'ordre d'arrivée n'est pas forcément l'ordre d'envoi!notion de «boucle événementielle» "Le corps de la boucle (sur les paquets composant un message) est réalisé à chaque interruption "Les itérations sont contrôlées par les événements issus du réseau Boucle événementielle, exemple!routine de traitement de l'interruption reçoit_paquet Retrouver le message associé Retrouver dans le message l'ordre du paquet Ajouter le paquet Accuser réception du paquet Si le message est complet Alors réveiller l'application qui l'attend LI-232 - Programmation Système & Internet - 198 1) Réception M1-P2 2) Réception M2-P1 3) Réception M3-P3 C'est de la programmation événementielle 4) Réception M3-P1 M1 M2 M3 «Buffer» des messages en attente Réveil application Réveil application Réveil application 5) Réception M1-P1 6) Réception M3-P2

Chapitre XX DNS (le système de nommage d'internet) Domain Name Services 199 Principe de l'adressage!une adresse IP permet de repérer de manière unique une machine sur le réseau!adresse IP = une machine = «un immeuble "Les ports permettent «d'activer une fenêtre» dans l'immeuble et d'y associer un logiciel (démon http par exemple) LI-232 - Programmation Système & Internet - 200

Structure d'une adresse IP LI-232 - Programmation Système & Internet - 201!Système d'identification des machines xxx.xxx.xxx.xxx "xxx est un chiffre compris entre 1 et 254 (0 et 255 sont réservés)!classes d'adressage "A => 10.xxx.xxx.xxx premier octet inférieur à 127 #2 7 possibilités = 127 (16 777 214 machine par réseau) "B => 172.223.xxx.xxx de 128.0.0.0 à 191.255.0.0 #2 14 possibilités = 16384 (65 534 machines par réseau) "C => 192.168.200.xxx de 192.0.0.0 à 253.255.255.0 #2 21 possibilités = 16384 (254 machines par réseau)!adresses spéciales (réservées par Internic) "10.0.0.1 à 10.255.255.254 Nécessaire pour construire "172.16.0.1 à 172.31.255.254 des réseaux locaux ou privés "192.168.0.1 à 192.168.255.254 "127.0.0.1 Localhost Nom logique et nom physique!objectif "Associer un nom mnémonique à une adresse IP "Avantages: # Plus simple à retenir # Indépendant de l'adresse IP (changement possible)!nommage symbolique "Structure d'un nom symbolique objet.sous-domaine.domaine "Taille max d'un nom logique = 255 caractères "Taille max d'un "nœud" = 63 caractères!assurer la liaison cohérente entre les deux "Un mécanisme de nommage logique # Standardisé # Structuré # Non ambigu "Des services d'annuaire # Domain Name Services (DNS) LI-232 - Programmation Système & Internet - 202 On parle aussi d'adresse FQDN (Fully Qualified Domain Name)

Le mécanisme de nommage universel!caractéristiques "Aucun rapport avec la topologie réelle du réseau (graphe) "Structuration hiérarchisée "Nœud terminal = machine "Nœud non terminal = domaine "Unicité au niveau du «nom développé» "Profondeur: 3 ou quatre niveaux!ajout d'un domaine "Descendre d'un niveau "Inutile de prévenir les autorités (seul le domaine «maître» gère les informations) org LI-232 - Programmation Système & Internet - 203 edu it fr com jussieu inria lip6 hephaistos nyx zeus Les domaines de haut niveau (1)!Les domaines «historiques» LI-232 - Programmation Système & Internet - 204 Nom.arpa.com.edu.gov.int.mil.net.org À vocation commerciale Raison Machines du réseau originel puis infrastructures de gestion du réseau Système éducatif (américain) Gouvernement (américain) Organisations internationales Organismes militaires (américains) Gestion du réseau puis... Fourre-tout Organismes à but non lucratif

Les domaines de haut niveau (2)!Les domaines «nouveaux» (introduits en 2000) LI-232 - Programmation Système & Internet - 205 Nom.aero.biz.museum.name.info.coop.pro Raison Industrie aéronautique Entreprises commerciales (doublon de.com) Pour les musées Pour les individus Organismes gérant des informations Organismes coopératifs Professions libérales Les domaines de haut niveau (3)!Domaines nationaux (s'appuie sur la norme ISO 2166) LI-232 - Programmation Système & Internet - 206 "Etc... Nom.ac.fr.de.es.uk.it.us.tv Raison Ile de l'ascencion (premier par ordre alpha) France Allemagne Espagne Royaume Unis Italie États-Unis (peu usité) Tuvalu (très prisé par les chaînes de TV)

Gestion des noms logiques!avant 1984 "Fichier texte /etc/hosts "Principe: associer sur une ligne un nom physique et un nom logique "Avantage # Simple "Inconvénient # Modifications locales et lourdes (une par machine)!après 1984 "DNS => Domain Name Services "Principe: obtenir les adresses IP via des services dédiés "Avantage # Modification automatiques (gestion des équivalence répartie) "Inconvénient # Répercution des modifications non instantanées LI-232 - Programmation Système & Internet - 207 DNS: l organisation des désignations!zone : partie contiguë de l'arborescence LI-232 - Programmation Système & Internet - 208 "Un serveur primaire et 1/des serveurs secondaires auront autorité sur cette zone La recherche démarre à partir du «sommet» On descend de proche en proche en suivant la hiérarchie pour résoudre l'adresse d'une machine donnée org edu it jussieu fr inria com lip6 Serveur: inria.inria.fr Serveur: osiris.lip6.fr On peut toujours désigner une machine par son nom physique hephaistos nyx zeus

Informations gérées par les DNS LI-232 - Programmation Système & Internet - 209!Élément d'une table (protocole, type, clef, valeur) IN = internet etc... "Exemples: (IN, A, hephaistos.lip6.fr, aaa.bbb.ccc.ddd) (IN, NS, lip6.fr, osiris.lip6.fr) "Autres informations A = adresse variable NS = name server MX = relais mail etc... (IN, MX, lip6.fr, mail.lip6.fr) #Durée de vie (secondes) de l'enregistrement dans les caches #Autres directives (origine de l'info etc.) variable Résolution de noms!processus basé sur un modèle client/serveur!un serveur peut lui-même demander des informations à d'autres serveurs!le client agit via un "résolveur" (sous-programme système offert par l'os)!implémentation de référence: BIND (Berkeley Internet Name Domain) LI-232 - Programmation Système & Internet - 210 Client Résolveur (OS) Serveur Z Serveur S 1 Serveur S n Domain Name Services

Résolution itérative LI-232 - Programmation Système & Internet - 211 Serveur racine Serveur INRIA inria.inria.fr Serveur LIP6 osiris.lip6.fr Serveur MIT dns.mit.edu Client hephaistos.lip6.fr Serveur dept informatique cs.mit.edu Résolution récursive LI-232 - Programmation Système & Internet - 212 Serveur racine Serveur INRIA inria.inria.fr Serveur LIP6 osiris.lip6.fr Serveur MIT dns.mit.edu Client hephaistos.lip6.fr Serveur dept informatique cs.mit.edu

!Lors d'une requête Éléments pour le fonctionnement d un DNS "Soit le serveur a la réponse dans le cache "S'il connaît le DNS correspondant, il fait directement sa requête à ce DNS "Sinon il demande au serveur racine concerné l'adresse du DNS puis fait une requête à ce DNS "Une machine peut faire appel à une liste de DNS!Lors d'une réponse LI-232 - Programmation Système & Internet - 213 "Si celle-ci provient du cache d'un serveur, elle est considérée comme "non fiable" "Si la réponse vient d'un "serveur autorisé", alors elle est considérée comme fiable "Le temps de résidence dans le cache est un paramètre important Ajouter la gestion des caches Un DNS peut parfaitement gérer plusieurs domaines Une machine peut-être enregistrée sous plusieurs noms logiques dans plusieurs domaines Suivre un cheminement: traceroute (1) LI-232 - Programmation Système & Internet - 214 > traceroute www.euroscience.org traceroute to mailhost.euroscience.org (137.138.24.120), 30 hops max, 40 byte packets 1 benelos-160.enst.fr (137.194.160.121) 12 ms 59 ms 158 ms 2 asn-2.enst.fr (137.194.2.254) 152 ms 153 ms 148 ms 3 jolitorax.enst.fr (137.194.24.2) 62 ms 160 ms 166 ms 4 195.83.239.178 (195.83.239.178) 129 ms 9 ms 7 ms 5 danton2.rerif.ft.net (193.48.58.117) 128 ms 42 ms 133 ms 6 stlambert2.rerif.ft.net (193.48.75.5) 36 ms 124 ms 131 ms 7 stamand2.renater.ft.net (193.48.53.14) 71 ms 76 ms 134 ms 8 stamand1.renater.ft.net (195.220.180.41) 11 ms 131 ms 15 ms 9 nio-i.cssi.renater.fr (193.51.206.145) 10 ms 124 ms 154 ms 10 nio-n3.cssi.renater.fr (193.51.206.206) 139 ms 112 ms 33 ms 11 cern.cssi.renater.fr (193.51.206.178) 22 ms 145 ms 146 ms 12 cgate2.cern.ch (192.65.185.1) 32 ms 135 ms 100 ms 13 cgate1-dmz.cern.ch (192.65.184.65) 71 ms 150 ms 157 ms 14 r513-c-rci47-9-gb0.cern.ch (128.141.211.23) 161 ms 141 ms 140 ms 15 euroscience.cern.ch (137.138.24.120) 155 ms 28 ms 176 ms

Suivre un cheminement: traceroute (2) LI-232 - Programmation Système & Internet - 215 >traceroute www.euroscience.org traceroute to mailhost.euroscience.org (137.138.24.120), 30 hops max, 40 byte packets 1 castor (132.227.64.15) 2 ms 2 ms 2 ms 2 r-jusren.reseau.jussieu.fr (134.157.254.126) 2 ms 2 ms 2 ms 3 194.214.109.21 (194.214.109.21) 2 ms 2 ms 2 ms 4 194.214.109.5 (194.214.109.5) 3 ms 3 ms 5 ms 5 193.51.206.170 (193.51.206.170) 5 ms 5 ms 5 ms 6 193.51.206.178 (193.51.206.178) 37 ms 14 ms 15 ms 7 cgate2.cern.ch (192.65.185.1) 14 ms 14 ms 15 ms 8 cgate1-dmz.cern.ch (192.65.184.65) 16 ms 14 ms 15 ms 9 r513-c-rci47-9-gb0.cern.ch (128.141.211.23) 15 ms 15 ms 15 ms 10 euroscience.cern.ch (137.138.24.120) 362 ms 15 ms 15 ms Requêtes inverses!effectuée à partir d'une valeur "Obtenir le nom correspondant (utilisé dans traceroute) "Pour faciliter la compréhension des humains!quelle est l'utilité de telles requêtes "Pour des raisons de sécurité LI-232 - Programmation Système & Internet - 216 "Vérifier que des sites sont bien référencés (et donc «respectables»)!plus délicate que nom -> IP car le DNS est organisé pour la résolution de nom ==> recherche exhaustive "Plusieurs nom logiques peuvent pointer sur la même adresse physique "Un nom physique ne peut aboutir qu'à un seul nom logique "reversedns (DNS (nom logique)) peut être différent de nom logique!!!