• Aucun résultat trouvé

(1)Structures, techniques et normes du Web (CSI 3540

N/A
N/A
Protected

Academic year: 2022

Partager "(1)Structures, techniques et normes du Web (CSI 3540"

Copied!
4
0
0

Texte intégral

(1)

Structures, techniques et normes du Web (CSI 3540) :: Laboratoire 1

CSI 3540 - Laboratoire 1 solution

solution

* Objectifs

- Se familiariser avec les concepts sous-jacents du Web - Savoir créer des messages requête HTTP

- Savoir lire les messages réponse HTTP

- Se familiariser avec les codes réponse HTTP

Une connaissance détaillée du protocole HTTP vous permettra de comprendre la nature des échanges d'information entre le client (navigateur) et le serveur (httpd). Ces concepts seront essentiels lors des discussions sur les témoins de session.

* Contenu du laboratoire - Concevoir un client HTTP

Pour cette partie du laboratoire, vous devez concevoir un outil de débogage. Cet outil devra:

-- Établir une connection TCP avec un serveur

-- Transmettre un message requête formulé par l'utilisateur -- Afficher le message réponse du serveur

Vous pouvez consultez ce tutoriel afin vous familiariser avec les connections de bas niveau : All About Sockets.

Une version minimaliste de cet outil obtiendrait le nom logique de l'hôte sur la ligne de commande. Ferait la lecture du message HTTP requête sur l'entrée standard. Transmettrait le message au

serveur. Finalement, afficherait sur la sortie standard le message HTTP réponse.

Étant donné la simplicité du protocole et sa structure en deux étapes, envoi du message requête, réception du message réponse, vous n'aurez à créer des filins concurrents et à vous préoccuper de la synchronisation.

> java Client www.site.uottawa.ca GET / HTTP/1.1

HOST: www.site.uottawa.ca Server: HTTP/1.1 200 OK

Date: Wed, 20 Jan 2010 18:15:04 GMT

Server: Apache/2.0.59 (FreeBSD) PHP/5.1.6 with Suhosin-Patch mod_ssl/2.0.59 OpenSSL/0.9.7e-p1 Last-Modified: Mon, 07 Dec 2009 14:17:10 GMT

ETag: "114d1b-1a1-1cf3e580"

Accept-Ranges: bytes Content-Length: 417 Connection: close

Content-Type: text/html

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">

<html>

...

Si vous préférez les applications graphiques, voici ma proposition.

http://www.site.uottawa.ca/~turcotte/teaching/csi-3540/lectures/lab-01/index.html (1 sur 4)20/01/2018 14:02:04

(2)

Structures, techniques et normes du Web (CSI 3540) :: Laboratoire 1

Si vous le souhaitez, vous pouver utiliser cette coquille comme point de départ. Vous n'aurez qu'à implémenter la méthode submit.

(demandez la clé à votre démonstrateur) JClient.java

Voci une version complète du client (demandez la clé à votre démonstrateur) :

JClient.java manifest.mf

JClient.jar (une application double-clique)

Ajoutez un entête 'Connection: close' à vos messages afin que le serveur ferme la connexion immédiatement et que l'outil affiche le message rapidement.

Voici un tutoriel plus avancé, où l'on utilise plusieurs filins d'exécution: Socket Communications.

- Un peu d'exploration

http://www.site.uottawa.ca/~turcotte/teaching/csi-3540/lectures/lab-01/index.html (2 sur 4)20/01/2018 14:02:04

(3)

Structures, techniques et normes du Web (CSI 3540) :: Laboratoire 1

Pour cette partie, utilisé l'outil de débogage développé ci-dessus (ma version ou la vôtre), ou encore l'application telnet afin d'établir une connexion brute TCP avec des serveurs Web.

L'étudiant joue le rôle du client, il doit formater lui-même les messages requêtes en suivant le protocole de la couche application HTTP.

Revoir la forme générale d'un message requête Ligne de commande

En-tête(s) [ Ligne vide ]

Corps du message (possiblement vide)

La ligne de commande est formée de trois éléments séparés par des blancs: commande, URI, version

Revoir la forme générale d'un message réponse Ligne de statut

En-tête(s) [ Ligne vide ]

Corps du message (possiblement vide) Exercices:

-- Un exemple GET à l'aide d'une URL valide et d'un message bien formé.

-- Explorez deux variantes de cet exemple: avec l'entête 'Connection: close', puis 'Connection: keep-alive'.

-- Un exemple où le nom de l'hôte utilisé pour la connexion diffère du nom de l'hôte de l'entête 'Host:'.

-- Un exemple où la ressource n'existe pas. Quel est le code de la réponse?

-- Un exemple où la réponse du serveur comprend une redirection Le but de ces deux exemples est d'observer les différents codes de statut émis par le serveur.

Gmail fait un re-direct telnet www.gmail.com 80 GET / HTTP/1.1

HOST: www.gmail.com

Voici les différents codes, essaye de trouver quelques exemples qui génèreront d'autres codes (e.g. accès à la ressource refusé).

Status Code Definitions -- Connexion:

Le site de SITE est parfait pour ces expériences puisque 1) par défaut la connexion est 'keep-alive' et 2) le 'time out' est long.

Avec Keep-Alive, on peut faire plusieurs sur une même connexion (pipelining):

telnet www.site.uottawa.ca 80 GET / HTTP/1.1

Connection: Keep-Alive HOST: www.site.uottawa.ca

http://www.site.uottawa.ca/~turcotte/teaching/csi-3540/lectures/lab-01/index.html (3 sur 4)20/01/2018 14:02:04

(4)

Structures, techniques et normes du Web (CSI 3540) :: Laboratoire 1

GET /eng/about.html HTTP/1.1 HOST: www.site.uottawa.ca

Sinon, il y a rupture de connexion, suite à l'envoi du message réponse:

telnet www.site.uottawa.ca 80 GET / HTTP/1.1

Connection: close

HOST: www.site.uottawa.ca GET /eng/about.html HTTP/1.1 HOST: www.site.uottawa.ca

-- Vous devez maintenant concevoir des requêtes autres que GET (HEAD et OPTION, par exemple) - NSLOOKUP

- Quelques tests avec nslook up, par exemple afin de découvrir les alias ce certains serveurs, wwww.google.com.

- Utiliser traceroute (tracert sous Windows) afin de découvrir les passerelles utilisées pour la transmission des paquets.

- Mécanismes d'exclusion

Si le temps le permet, votre démonstrateur fera une présentation des mécanismes d'exclusions de webbots.

* Quelques idées

- Si vous le souhaitez, à partir des informations que vous trouverez dans les tutoriels ci-dessous, vous pourriez concevoir votre

propre serveur http. Dans un premier temps, concevoir un serveur qui ne traite qu'un seul client à la fois. Ensuite, à l'aide de filins d'exécution, concevez un serveur qui traite plus requêtes simultanément.

> java Serveur répertoire port All About Sockets

Socket Communications

http://www.site.uottawa.ca/~turcotte/teaching/csi-3540/lectures/lab-01/index.html (4 sur 4)20/01/2018 14:02:04

Références

Documents relatifs

• Pour chaque requête HTTP, le conteneur fait un appel à la méthode service (). • La méthode service () appel la méthode doGet () ou doPost () selon le cas (type

• Un témoin est créé et sa valeur mise à jour dans une en-tête Set-Cookie d’un message réponse HTTP (donc par le serveur). • L’agent utilisateur sauvegarde les

toujours le même objet pour un même nom de fichier et les Servlets utilisent les méthodes de cet

• Dans l’exemple de la page précédente, l’objet ne possède que des propriétés dont les valeurs sont des fonctions. • Les variables locales de la fonction makePair ont

• document est la racine de l’arbre des objets de type Node (alors que la racine du document est l’élement html). • Possède aussi une

Vous devez concevoir un programme JavaScript qui génère des expressions arithmétiques aléatoires composées des opérations suivantes: -, +, *, /3. Si le temps le permet,

• Le menu disparaît lorsque le curseur ne survole ni l’entête, ni le menu déroulant (la gestion repose sur l’arborescence du document et non pas sur le

utilisés dans des documents XML, en associant ceux-ci avec des espaces de nommage désignés par des références d'URI”. [ Recommandation XML-Namespace du W3C en version