M1 MIAGE - Réseaux et Protocoles - Proxy et HTTP

Auteur(s):
Sébastien CHOPLIN

Exercice 1: Proxy

Un proxy est une application sur une machine jouant le rôle d'intermédiaire entre deux applications distante communiquant avec un même protocole.
On leur donne aussi le nom de serveur mandataire. Au lieu d'envoyer directement une requête vers la machine XXX.YYY.ZZZ.TTT sur le port P, vous mandatez un proxy en le contactant sur un port spécifique, ce proxy contacte la machine XXX.YYY.ZZZ.TTT sur le port P et vous renvoie la réponse.

proxy

La principale utilisation des proxy est pour le protocole HTTP (web).
L'utilisation d'un proxy web (protocole HTTP) peut être utile dans les cas suivants:

  1. Placez correctement les adresses IP et numéros de port sur le schéma sachant que l'adresse IP du proxy est 134.23.43.32, l'adresse IP de la station client est 10.12.13.12, l'adresse IP du serveur que la station veut contacter est 192.168.10.23. L'application proxy "écoute" les clients sur le port 2222, l'application distante (sur le serveur) écoute sur le port 80.
  2. Vous allez utiliser un proxy (JProxy) pour voir les échanges HTTP entre le client et les serveurs web. Par défaut, ce proxy écoute sur le port 2008, il faudra donc configurer votre navigateur pour qu'il effectue ses requêtes HTTP en passant par ce proxy (la machine sur laquelle il a été lancé et le port). Sous Mozilla, le paramètrage se fait dans la partie "avancé" du menu "préférences".
    1. Démarrez ethereal pour analyser le trafic
    2. Chargez le proxy "Jproxy" en utilisant la commande suivante:
      wget http://www.laria.u-picardie.fr/~choplin/enseignement/m1miage/reseaux/td-http/jproxy.tar.gz
      
    3. Décompressez l'archive avec la commande
      tar xzvf jproxy.tar.gz
      
      Allez dans le répertoire jproxy avec la commande
      cd jproxy
      
      Exécutez le script jproxy.sh qui va lancer JProxy avec la commande
      sh jproxy.sh
      
    4. Quelle est l'IP de la machine sur laquelle vous avez démarré l'application proxy ?
    5. Configurez Mozilla pour utiliser votre proxy.
    6. Consultez une page web quelconque et regardez les requêtes effectuées, ainsi que les réponses du serveur (dans la fenêtre de jproxy, il y a des petits boutons pour afficher le contenu du trafic HTTP).
    7. Observez le trafic HTTP dans ethereal.
  3. Sous Knoppix, configurez votre station pour qu'elle soit dans le réseau 192.168.14.0/24 (indiquez au tableau votre IP)
  4. L'une des stations va se placer en plus dans le réseau de l'Université (avec son IP et masque d'origine) et jouer le rôle de proxy web pour les autres qui n'ont plus accès à Internet.
    Lancez Mozilla (navigateur web, icône dans la barre du bas) et configurez (dans les préférences avancées) le pour qu'il utilise le proxy web mis en place. Parvenez-vous à naviguer sur le web ?

Exercice 2: HTTP

Utilisez JProxy ou ethereal pour répondre aux questions suivantes.

NB: Une URL (Uniform Resource Locator) est un indentifiant qui permet de repérer de manière unique un objet sur un serveur du réseau. L'URL contient:

Le format standard est : :
Exemple :
 http://messetud.unice.fr/mail/index.html 
Ici la méthode est http, le serveur est messetud.unice.fr, le chemin est /mail et l'objet index.html.
Méthode les plus courantes: http (Hypertext Transfer Protocol), ftp (File Transfert Protocol), mailto (Adresse électronique), file (Fichier local), telnet, wais, news, gopher.

  1. Quels port et protocoles de la couche transport sont utilisés par le protocole HTTP ?
  2. Quelles informations trouve-t-on dans un échange HTTP ?
  3. Si vous consultez les 2 URL suivantes:
    • http://www.google.fr/
    • http://www.u-picardie.fr/index.php
    Pour chacune de ces URL, précisez:
    Les requêtes:
    1. Quelle est la version de HTTP utilisée ?
    2. Quelle est la méthode HTTP est utilisée ?
    3. Sous quel nom s'est identifié votre navigateur ?
    Les réponses:
    1. Quel est le code de réponse du serveur ?
    2. A quoi correspond ce code de réponse ?
    3. Quel est le serveur et sa version ?
    4. Quelle est la date de dernière modification du document requis ?

Exercice 3: Découverte de HTTP avec telnet

La commande telnet permet d'effectuer des requêtes sur une machine sur un port donné. Si une machine fait tourner un serveur web sur le port 80 (port par défaut pour les serveurs web), il suffit d'exécuter la commande

telnet serveur.web.fr 80
pour ouvrir une socket avec ce serveur sur le port 80.
Pour parvenir à communiquer avec l'application distante, il faut connaître le protocole de communication.

Pour quelques précisions sur les requêtes HTTP: http://www.laria.u-picardie.fr/~choplin/enseignement/unsa/minfo-2002/node26.html

  1. Envoyez une requête HTTP GET au site de votre choix en précisant bien le protocole que vous utilisez. Quelles sont les informations situées dans l'entête HTTP de la réponse ?
  2. Construisez une requête HTTP qui
    • récupère la page /~choplin/enseignement/m1miage/reseaux/td-http/requete.php du serveur www.laria.u-picardie.fr
    • identifiez votre navigateur comme étant le client "INCONNU"
    Vérifiez que la requête a bien été acceptée et que votre navigateur est bien identifié comme "INCONNU" (le script php interprète ce paramètre pour le renvoyer dans la réponse).
  3. Construisez une requête HTTP qui envoie un formulaire contenant les labels/valeurs
    • NOM/votre_nom
    • PRENOM/votre_prenom
    • GROUPE/votre_groupe
    à l'URL http://www.laria.u-picardie.fr/~choplin/enseignement/m1miage/reseaux/td-http/register.php.

    Indices : Pour spécifier au serveur que vous postez des données, l'entête doit contenir les lignes
    Content-type: application/x-www-form-urlencoded 
    Content-Length: nombres de caractères envoyés dans les données 
    
    Les champs à envoyer doivent être placés après les entêtes HTTP (en ayant passer une ligne), sous la forme label=valeur et séparés par &.