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.
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:
- Seule une machine du réseau local est connectée à Internet, elle
jouera
le rôle de proxy pour permettre aux autres machines du réseau
local d'accéder au web.
- Pour jouer le rôle de cache: éviter d'aller chercher des pages web
à la source si quelqu'un d'autre du réseau y est déjà allé.
- Filtrer les pages web (par exemple bloquer les pop-up, contrôle
parental, ...).
-
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.
-
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".
- Démarrez ethereal pour analyser le trafic
- 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
-
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
- Quelle est l'IP de la machine sur laquelle vous avez démarré
l'application proxy ?
- Configurez Mozilla pour utiliser votre proxy.
- 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).
- Observez le trafic HTTP dans ethereal.
-
Sous Knoppix, configurez votre station pour qu'elle soit dans le
réseau 192.168.14.0/24 (indiquez au tableau votre IP)
-
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 type de connexion appelé aussi méthode
- le nom du serveur
- le chemin du l'objet
- le nom de l'objet
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.
- Quels port et protocoles de la couche transport sont
utilisés par le protocole HTTP ?
- Quelles informations trouve-t-on dans un échange HTTP ?
-
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:
- Quelle est la version de HTTP utilisée ?
- Quelle est la méthode HTTP est utilisée ?
- Sous quel nom s'est identifié votre navigateur ?
Les réponses:
- Quel est le code de réponse du serveur ?
- A quoi correspond ce code de réponse ?
- Quel est le serveur et sa version ?
- 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
- 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
?
-
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).
-
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 &.