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".

  1. Chargez le proxy "Jproxy" à l'une des URL suivantes:
  2. Décompressez l'archive
  3. Allez dans le répertoire jproxy
  4. Exécutez le script jproxy.bat (sous Windows) ou jproxy.sh (sous Linux) qui va lancer JProxy
  5. Configurez votre navigateur 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).

  1. Quels port et protocoles de la couche transport sont utilisés par le protocole HTTP ?
  2. Si vous consultez les 2 URL suivantes:
    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 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

  1. 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
  2. Quelles sont les méthodes acceptées par le serveur web situé sur le serveur iupmiage.sc.u-picardie.fr ? (méthode OPTIONS)
  3. 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 ?
  4. Construisez une requête HTTP qui 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).
  5. 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): à 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 &.