M2 SIMI - Diffusion d'information multimedia - HTTP
Auteur(s):
Sébastien CHOPLIN
dans ce qui suit, les URL suivantes sont équivalentes:
Exercice 1: HTTP - observation
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".
- Chargez le proxy "Jproxy"
à l'une des URL suivantes:
- Décompressez l'archive
- Allez dans le répertoire jproxy
- Exécutez le script jproxy.bat (sous Windows) ou
jproxy.sh (sous Linux) qui va lancer JProxy
- Configurez votre navigateur 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).
- Quels port et protocoles de la couche transport sont
utilisés par le protocole 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 2: 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 avec la méthode GET au site de votre
choix en précisant bien le protocole que vous utilisez (HTTP/1.0 ou HTTP/1.1).
Quelles sont les informations situées dans l'entête HTTP de la réponse
?
Attention: beaucoup de serveurs exigent une version de HTTP supérieure ou
égale à 1.0, si la version n'est pas précisée, c'est par défaut 0.9
- Quelles sont les méthodes acceptées par le serveur web situé
sur le serveur iupmiage.sc.u-picardie.fr ? (méthode OPTIONS)
- Comparez les requêtes suivantes:
HEAD / HTTP/1.1
Host: iupmiage.sc.u-picardie.fr
et
HEAD / HTTP/1.1
Host: iupmiage.sc.u-picardie.fr
Connection: close
Que ce passe-t-il ?
-
Construisez une requête HTTP qui
- récupère la page
/~choplin/enseignement/m2simi/diffusion/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 utilisant la méthode POST qui envoie les
labels/valeurs suivants (comme le ferait votre navigateur en envoyant
un formulaire HTML):
- NOM/votre_nom
- PRENOM/votre_prenom
- GROUPE/votre_groupe
à l'URL
http://www.laria.u-picardie.fr/~choplin/enseignement/m2simi/diffusion/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 &.