Вы находитесь на странице: 1из 3

Travaux Dirigs de rseau no9 e e

Cours dArchitecture des rseaux e ere Master dInformatique 1 anne e

Protocole HTTP
Lobjectif de ce TD est de comprendre le protocole HTTP et les spcicits e e de son implantation du cot serveur e

Exercice 1. Messages HTTP Pour observer les messages de rponses HTTP produits par un serveur Web clase sique, il est possible dmettre des requtes simples en mode texte par lintermdiare e e e dune connexion TCP ouverte sur le port dcoute de ce serveur. e Par exemple, le serveur etudiant.univ-mlv.fr est accessible de lintrieur e du domaine tudiant sur le port 80, et la machine qui hberge ce serveur a pour nom e e canonique kapouer.univ-mlv.fr. Ainsi, en ouvrant une connexion TCP sur le port 80 de cette machine par un utilitaire comme telnet ou nc (netcat) vous obtenez un terminal interactif connect e au serveur Web. Par dfaut, vous pouvez demander a rcuprer (mthode GET) la e ` e e e ressource correspondant a la page daccueil (/) et, pour savoir quelles sont les ressources ` accessibles, vous pouvez utiliser votre navigateur prfr. eee Exprimentez quelques requtes simples sur cette connexion, en respectant le format e e des messages de requtes HTTP. En particulier, vriez que : e e en version HTTP/1.0, le serveur rpond sans champ Content-Length et ferme la e connexion apr`s avoir envoy la rponse (pourquoi ?) ; e e e en version HTTP/1.1, le champ den-tte Host est obligatoire (pourquoi ?) ; e en version HTTP/1.1, la connexion nest pas ferme par le serveur apr`s une e e rponse de succ`s. Dans ce cas, comment pouvez vous tre certain que la rponse e e e e a t reue en entier ? ee c une requte HEAD produit le mme rsultat quune requte GET, mais sans le corps e e e e de message (` quoi cela peut-il servir ?) ; a en HTTP/1.1, il est possible de demander explicitement au serveur de fermer la connexion apr`s lenvoi de la rponse (comment ?). e e Demandez a rcuprer la ressource correspondant a un formulaire (par exemple, ` e e ` le service avec authentication pour activer une page Web). Quelle serait le message

HTTP de requte a taper pour se loger avec le nom de login toto et le mot de passe e ` mot2pass2toto. Tester votre rponse. e Pour savoir si votre proposition est juste, il sut dobserver la requte envoye e e un navigateur lorsque vous validez un tel formulaire. Pour cela, rutilisez la classe e Proxy du TD8, en le modiant lg`rement de sorte quil ache a lcran tout ce qui e e ` e est transfr (dans un sens ou den lautre). Il sut alors de linstaller sur le port local ee 8080, par exemple, et de lui demander de relayer les requtes vers le port 80 de la e machine kapouer, puis dindiquer au navigateur (konqueror) dutiliser votre proxy. Quelle est alors lURL a taper dans votre navigateur favori pour accder a la page ` e ` daccueil du serveur etudiant.univ-mlv.fr ? En utilisant le formulaire dactivation de page Web vu plus haut avec le login toto, vriez votre rponse prcdente. e e e e Exercice 2. Un simple serveur de chier HTTP Ecrire un petit programme Java qui permet dmuler un serveur HTTP tr`s simple. e e Voici les fonctionnalits qui doivent tre implantes par ce petit serveur : e e e rpondre aux requtes GET des clients sur des noms de chiers rguliers (pas les e e e rpertoires) ; e attribuer le type MIME application/octet-stream aux ressources retournes. e On pourra galement faire des essais, plus visuels, avec les types text/plain ou e text/html. Ensuite, on pourra tenter de dterminer le Content-Type a partir e ` de lextension du chier a renvoyer ; ` pour simplier la gestion de la connexion avec le client, on pourra fermer la connexion apr`s lenvoi de la ressource. En revanche, il est ncessaire de lire e e lintgralit de la requte du client avant de fermer la connexion (on supposera e e e pour linstant que le requte ne contient pas de corps). e Exercice 3. Les messages derreur Ajouter au serveur prcdent la fonctionalit suivante : lorsquune ressource recherche e e e e par un client nest pas un chier rgulier, et que le serveur nest pas en mesure de e la retourner, renvoyer un message derreur 404 Not Found accompagn dune page e HTML expliquant poliment que la ressource nest pas accessible. Exercice 4. Echange dinformation grce aux formulaires a En plus des services prcdents, on veut maintenant que le serveur permette daccder e e e a des ressources qui ne sont pas statiques, mais cres dynamiquement a partir des ` ee ` informations des clients. Pour mettre en uvre ces fonctionnalits, on pourra crire un chier e e suscribe.html, accessible par les clients et leur orant un formulaire comme celui-ci (adaptez le a votre go t si vous le souhaitez, le but tant dutiliser quelques balises ` u e comme form, input, select, etc.) :

Les donnes recueillies par ce formulaire seront, dans un premier temps, envoyes e e avec la mthode GET a une URL choisie, par exemple /suscribe, relative au serveur. e ` Lorsque ces donnes sont reues par le serveur, elles doivent tre stockes. e c e e Les mani`res de stocker ces informations peuvent tres diverses et varies, mais on e e e pourra par exemple crer une instance dune classe Membre, dnie de sorte a pouvoir e e ` stocker les informations relatives a une inscription, et stocker cette instance dans une ` liste. En revanche, il est important de rendre la gestion de ce service le plus modulaire possible (viter de le coder en dur if then else dans le serveur), an de pouvoir e fournir dautre services dirents en utilisant le mme serveur. e e Exercice 5. Extensions de services ` A partir de ce serveur et des informations relatives a ce formulaire, on peut imaginer ` direntes extensions telles que : e Renvoyer une conrmation dinscription. Proposer la gnration dynamique de lensemble des inscrits. e e Rendre la conguration du serveur et/ou les informations recueillies persistantes. Aecter un mot de passe aux clients, et lexiger pour la consultation de certaines informations.

Вам также может понравиться