[LOGO]

Internet et World Wide Web


Le but de ce TP est de comprendre ce qu'est Internet, le Web et comment on peut interagir avec une machine distante à l'aide du plusieurs outils (clients) comme netcat (la commande nc) ou un navigateur Web (browser).
Cette version du TP est spécialement adaptée aux élèves dont le système d'exploitation est Windows. Une autre version est disponible si votre ordinateur utilise le système d'exploitation Linux ou Mac OS.

Exercice 1 : Uniform Resource Locator

On cherche à savoir où est hébergée la page du cours.
  1. Ouvrez un navigateur Web et allez à l'URL suivante:
    http://www.w3.org/standards/
    Quel est le nom de la machine à laquelle vous accédez ?
    Quel est le nom de domaine auquel vous accédez ?
  2. Si l'on exécute
    nslookup w3.org
    À quoi correspond la première ligne de la réponse ?
    À quoi correspond la deuxième ligne de la réponse ?
    Et la troisième ?
  3. Dans le navigateur Web, dans la barre contenant l'URL, remplacez le nom de la machine par son adresse IP pour vérifier que cela fonctionne toujours.
    Si ça ne marche pas, que se passe-t-il ? Essayez avec google.fr.
    À votre avis, pourquoi utilise-t-on des noms pour les machines plutôt que des adresses IP ?
  4. Exécutez la commande tracert sur une de ces adresses IP.
    Qu'affiche cette commande ?
    Comment s'appelle le réseau sur lequel est connectée l'université (ou votre domicile) ?
    Quels sont les autres réseaux qui sont traversés ?
  5. Tendance du jour : le cours de programmation web a l'air trop bien ! Pour en savoir plus, on souhaite consulter la page http://vincentjuge1987.github.io/.
    Utiliser la commande nslookup pour récupérer l'adresse IP correspondant à cette machine.
  6. On cherche maintenant à voir l'ancienne version du cours, que donnait Rémi Forax. Pour ce faire, on souhaite consulter la page https://forax.github.io/course/progweb/.
    Lancer la commande nslookup pour récupérer l'adresse IP correspondant à cette machine. Qu'observe-t-on ?
    Que se passe-t-il si on essaye d'accéder à cette page dans le navigateur en remplaçant le nom de la machine par l'adresse IP trouvée précédemment ?
    Et si on remplaçait forax.github.io par vincentjuge1987.github.io au début de l'URL ? Expliquer pourquoi.

Exercice 2 : Service HTTP

On a vu en cours comment utiliser netcat (commande nc suivie de l'option -C pour éviter les problèmes d'encodage) pour appeler un service sur une machine distante. Nous allons pouvoir utiliser la même technique pour interroger un serveur Web.

  1. Téléchargez le script python netcat.py pour Windows et enregistrez-le dans votre répertoire progweb.
  2. Vérifiez que vous disposez bien d'un utilitaire python utilisable en ligne de commande. Pour cela, il suffit de taper python.exe. Normalement, soit Windows vous proposera de télécharger python (et alors il faut le faire), soit vous verrez quelque chose comme :



    Dans second ce cas, écrivez simplement exit() puis revenez à la ligne.
  3. On souhaite utiliser netcat pour se connecter au serveur Web de la machine monge.univ-mlv.fr. Sous Windows, la commande à utiliser est python.exe netcat.py -C NOM-DE-MACHINE PORT, où NOM-DE-MACHINE est le nom de la machine à laquelle on souhaite se connecter, et PORT est le port correspondant au protocole HTTP.
    Une fois netcat lancé, il faudra taper la requête suivante et appuyer deux fois sur "Entrée" :
    GET /ens/ HTTP/1.0
    Quel est le port TCP correspondant au protocole HTTP ?
    Quel est le header (l'en-tête, en français) de la réponse ?
    Note : le serveur envoie une réponse composée de deux parties, séparées par une ligne vide :
    1. le header, qui est ce qui nous intéresse pour le moment,
    2. une page HTML, à laquelle nous nous intéresserons plus tard.
  4. À quoi correspondent les 3 valeurs sur la première ligne de l'en-tête ?
  5. Quel est le nom du serveur Web ?
  6. À quoi correspond la valeur de Content-Type ?
  7. À quoi correspond la valeur de Content-Length ?
  8. Faites la même analyse mais avec la requête
    GET /ens/toto.txt HTTP/1.0
  9. Enfin, faites la même analyse avec la requête
    GET /index.html HTTP/1.0
    À quoi correspond la valeur de Location ?
  10. Que se passe-t-il lorsque je lance la commande wget monge.univ-mlv.fr/index.html ?
    Expliquer la signification des lignes qui apparaissent sur la ligne de commande.