Vous êtes sur la page 1sur 126

Sujets des exercices dirigs Technologie pour les applications client-serveur UE RSX 102

Anne 2007-2008

G. Florin, S. Natkin, E. Gressier, L. Duchien, J.M. Farinone

CNAM- Anne 2007/2008

-1-

Exercices Technologie client-serveur

Table des matires


PREMIER CHAPITRE..........................................................................................................................................4 EXERCICES CONTROLE REPARTI.................................................................................................................4 SRIE D'EXERCICES MODE MESSAGE..............................................................................................................................4 Exercice 1: Automate de connexion TCP........................................................................................................4 SRIE D'EXERCICES : APPEL DE PROCDURE DISTANTE.....................................................................................................6 Exercice 2 : Traitement des pertes de messages.............................................................................................6 Exercice 3 : Excutions trs longues...............................................................................................................6 Exercice 4 : Appels en parallle (redondance massive).................................................................................6 Exercice 5 : Serveurs multiples (redondance slective)..................................................................................6 Exercice 6 : Paralllisme et performance des communications en RPC........................................................7 SRIE D'EXERCICES : ETUDES DE CAS...........................................................................................................................9 Exercice 7 : Conception d'une application de niveau session........................................................................9 Exercice 8 : Comparaison de la programmation d'applications rparties avec TCP et avec CORBA.......10 Exercice 9 : Objets rpartis en CORBA........................................................................................................15 SECOND CHAPITRE..........................................................................................................................................17 EXERCICES PRSENTATION DES DONNEES............................................................................................17 SRIE D'EXERCICES CONVERSIONS...............................................................................................................................17 Exercice 1 : Optimisation des conversions...................................................................................................17 Exercice 2 : Problme des formats de mmoire (petit boutiste, grand boutiste)..........................................17 Exercice 3 : Dfinition de syntaxe ASN1......................................................................................................18 Exercice 4 : Dfinition de format de transfert ASN1....................................................................................19 Exercice 5 : Dfinition de donnes en ASN1 et de leur format de transfert.................................................19 Exercice 6 : Problme gnral ASN1............................................................................................................20 Exercice 7 : Dfinition d'une traduction du langage IDL de CORBA vers le langage Pascal....................21 Exercice 8 : CORBA......................................................................................................................................23 SRIE D'EXERCICES SCURIT....................................................................................................................................28 Exercice 9 : Cryptogramme 1.......................................................................................................................28 Exercice 10 : Cryptogramme n 2.................................................................................................................28 Exercice 11 : Cryptogramme n 3.................................................................................................................28 Exercice 12 : Etude du systme de chiffrement cl publique RSA.............................................................29 Exercice 13 : Kerberos..................................................................................................................................30 Exercice 14 : Partage d'un secret.................................................................................................................34 Exercice 15 : Problme de notarisation.......................................................................................................34 Exercice 16 : Gestion d'une connexion scurise.........................................................................................36 Exercice 17 : Changement priodique de cls en cryptographie cls publiques.......................................38 Exercice 18 : Commerce lectronique sur Internet: SET ("Secure Electronic Transactions")....................41 Exercice 19 : Authentification des usagers et autorisation des requtes dans le WEB................................45 Exercice 21 : Scurisation des communications en Internet avec SSL-TLS................................................49 Exercice 22 : Protocole de micro-paiement sur Internet.............................................................................52 Exercice 23 : Scurisation du DNS : les normes DNSSEC-1......................................................................55 TROISIEME CHAPITRE....................................................................................................................................58 EXERCICES APPLICATIONS REPARTIES...................................................................................................58 Exercice 1 : Systme de fichiers rpartis NFS et rplication........................................................................58 Exercice 2 :Dsignation des fichiers dans le systme de fichiers rpartis NFS...........................................59 Exercice 3 : Messagerie X400.......................................................................................................................61 Exercice 4 : Transactionnel rparti OSI-TP.................................................................................................63 Exercice 5 : Transactionnel rparti..............................................................................................................64 Exercice 6 : Systme transactionnel rparti.................................................................................................65 Exercice 7 : CORBA et le transactionnel......................................................................................................67 Exercice 8 : Administration de rseaux avec SNMP.....................................................................................69 Exercice 9 : change de donnes informatises EDI...................................................................................74 Exercice 10 : XML.........................................................................................................................................76 Exercice 11 : tude du protocole HTTP.......................................................................................................78

CNAM- Anne 2007/2008

-2-

Exercices Technologie client-serveur

Exercice 12 : DNS "Domain Name System" sujet 1......................................................................................81 Exercice 13 : DNS "Domain Name System" Sujet 2.....................................................................................83 Exercice 14 : Services et protocoles d'annuaires rpartis............................................................................84 Exercice 15 : Messagerie Internet SMTP.....................................................................................................90 Exercice 16 : DNS et messagerie Internet/l'approche SPF..........................................................................95 Exercice 17 : Messagerie Internet: Analyse du contenu d'un courrier........................................................97 Exercice 18 : Utilisation d'un rsolveur DNS.............................................................................................100 Exercice 19 : IMAP Internet Message Access Protocol...........................................................................103 Exercice 20 : WAP ('Wireless Application Protocol').................................................................................105 Exercice 21 : Services sur la toile ('Web Services')....................................................................................110 Exercice 22 : Protocole SIP ('Session Initiation Protocol')........................................................................114 Exercice 23 : Protocole UPnP ('Universal Plug and Play)........................................................................119

CNAM- Anne 2007/2008

-3-

Exercices Technologie client-serveur

PREMIER CHAPITRE EXERCICES CONTROLE REPARTI Srie d'exercices mode message


Exercice 1: Automate de connexion TCP
1) Citez diffrentes raisons qui justifient l'introduction de la couche transport dans la pile des protocoles de communication OSI. 2) Rappelez les principaux choix de conception du protocole de transport TCP.(quelles sont les fonctions ralises par TCP?). 3) Une vision partielle de l'automate de l'ouverture de connexion et de la fermeture de connexion en TCP est donne par la figure page suivante. Dterminez les lments de service et les lments de protocole utiliss dans cet automate? 4) Examinez lautomate en suivant les transitions portes en traits gras. Il sagit dune ouverture de connexion suivie dune fermeture. Analysez les principales options de conception de cette squence de connexion dconnexion en TCP. 5) Compltez la lecture de lautomate en examinant dautres tats et dautres transitions (ouverture passive, ).

CNAM- Anne 2007/2008

-4-

Exercices Technologie client-serveur

FERME "CLOSED" ?LISTEN ?CONNECT

!Envoyer SYN ATTENT ?Recevoir SYN "LISTEN" E !Envoyer ?SEND SYN,ACK ?Recevoir RST !Envoyer SYN Demi-passif "SYN_RCVD" ?CLOSE !Envoyer FIN ?Recevoir SYN !Envoyer SYN, ?Recevoir ACK ACK Demi-actif ?CLOSE SYN_SENT ?Timeout ?Recevoir SYN,ACK !Envoyer ACK

OUVERT "ESTABLIHED" ?Recevoir FIN ?CLOSE !Envoyer FIN ! Envoyer ACK "CLOSE_WAIT" ?Recevoir FIN !Envoyer ACK ?CLOSE !Envoyer FIN "FIN_WAIT_1" "CLOSING" ?Recevoir FIN,ACK ?Recevoir "LAST_ACK" ?Recevoir ACK ACK !Envoyer ACK ?Recevoir ACK "TIME_WAIT" "FIN_WAIT_2" ?Recevoir FIN !Envoyer ACK

CNAM- Anne 2007/2008

-5-

Exercices Technologie client-serveur

Srie d'exercices : Appel de procdure distante


Exercice 2 : Traitement des pertes de messages
On souhaite raliser trs efficacement des appels de procdure distants en se plaant non pas au dessus d'une couche transport fiable mais au dessus d'une couche rseau sans contrle d'erreur. Proposez des solutions efficaces au problme des pertes de messages d'appel et de rponse.

Exercice 3 : Excutions trs longues.


On souhaite excuter en mode appel de procdure distante des traitements de dure non prvisible (par exemple des interrogations distantes de bases de donnes dont les rponses peuvent prendre des dures trs variables et trs longues). Proposez une solution pour le contrle de l'excution distante, en particulier pour pouvoir distinguer une panne de serveur d'une excution longue.

Exercice 4 : Appels en parallle (redondance massive)


L'appel distant active une seule procdure distance chaque fois. Un utilisateur peut souhaiter faire raliser n excutions distance simultanment en lanant en diffusion une requte. Explicitez le schma du fonctionnement ainsi dfini. Utilisez le dans le cas de donnes rpliques. On suppose que l'on a n serveurs de donnes en copies multiples (pour la scurit) qui peuvent raliser les mmes oprations lire et crire. Comment sont ralises les lectures, les critures. Quelle proprit minimum doivent satisfaire les requtes pour maintenir la cohrence des donnes si l'on considre qu'il n'y a pas de partage de donnes entre plusieurs activits?

Exercice 5 : Serveurs multiples (redondance slective)


Dans certains types de service on souhaite disposer de plusieurs instances du mme service sur plusieurs machines diffrentes (par exemple pour un service de compilation). L'appel distant active une seule excution distante chaque fois. Dans quel but utiliserait-on de tels services instances multiples? Proposez une organisation pour rendre efficacement un tel service.

CNAM- Anne 2007/2008

-6-

Exercices Technologie client-serveur

Exercice 6 : Paralllisme et performance des communications en RPC


Un appel de procdure distante prsente les caractristiques temporelles suivantes (valeurs donnes titre d'exemple): Traitements client de prparation d'appel: 5 ms - Traitements RPC mission de la requte cot client Traitements de la souche client: 0,5 ms Traitements logiciels rseaux cot client: 0,3 ms - Rseau Acheminement dun message entre le client et le serveur 3 ms - Traitements RPC rception de la requte cot serveur Traitements logiciels rseaux cot serveur: 0,3 ms. Traitements de la souche serveur: 0,5 ms Traitements serveur de lappel (excution de la procdure): 10 ms - Traitements RPC mission de la rponse cot serveur Traitements de la souche serveur: 0,5 ms Traitements logiciels rseaux cot serveur: 0,3 ms - Rseau Acheminement dun message entre le serveur et le client 3 ms - Traitements RPC rception de la rponse cot client Traitements logiciels rseaux cot client: 0,3 ms. Traitements de la souche client: 0,5 ms Un client souhaite excuter sur un mme serveur deux appels de procdures distantes indpendantes (non relies) ayant les caractristiques temporelles prcdentes. 1) On fait l'hypothse que les RPC sont synchrones. Rappelez la dfinition dun RPC synchrone. 2) On fait l'hypothse que client et serveur travaillent squentiellement. Le client excute les deux appels au moyen dun seul processus squentiel. La procdure distante est excute pour les deux fois par le mme processus. Quelle est la dure totale ncessaire la ralisation des deux appels? 3) On cherche maintenant une excution parallle efficace en utilisant le paralllisme chez le client et chez le serveur . La procdure distante est toujours en mode synchrone. Le client et le serveur utilisent des processus sur la machine client et la machine serveur ("multi processing"). Les appels sont donc raliss sur le client au moyen de deux processus parallles associs aux deux appels indpendants. Les traitements sont raliss sur le serveur au moyen de deux processus lancs en parallle associs chaque appel de procdure distante. On nglige les temps de commutation de contexte entre les processus. On se place dans le cas de machines mono processeur cest dire que les excutions lances en parallles sont excutes par un seul processeur (pseudo paralllisme). Dessinez le diagramme dordonnancement des oprations dans le cas de lordonnancement parallle le plus efficace des oprations client et serveur. Reprsentez par CNAM- Anne 2007/2008 -7Exercices Technologie client-serveur

des segments verticaux sur un dessin les diffrentes oprations selon les quatre fils dexcution associs aux quatre processus Reprsentez galement les messages de requte et de rponse? Quelle est la dure totale du traitement des deux appels? 4) On suppose maintenant que l'on dispose d'un RPC asynchrone. Rappelez la dfinition dun RPC asynchrone ? 5) Le RPC asynchrone ne suppose pas lexistence de paralllisme sur le site client pour amliorer les performances. On considre dans cette question, que les clients et serveurs sont purement squentiels. Le processus client ralise deux appels en RPC asynchrone et le processus serveur ralise les deux traitements des appels asynchrones. Dessinez lordonnancement le plus efficace des oprations pour les deux processus associs au client et au serveur. Reprsentez les messages changs entre les deux processus. Quelle est la dure totale du traitement des deux appels ?

CNAM- Anne 2007/2008

-8-

Exercices Technologie client-serveur

Srie d'exercices : Etudes de cas


Exercice 7 : Conception d'une application de niveau session
Une application de longue dure (de type traitement par lots ou transfert de fichier) est ralise distance partir d'un calculateur metteur E sur un calculateur rcepteur R. Le site E met des suites de messages correspondant des donnes transmettre (par exemple des articles d'un fichier). La conception de l'application doit prendre en compte des objectifs de reprise et amne donc transmettre les donnes par groupe de 100 messages et valider la transmission des messages d'un groupe avant de passer au suivant. 1 Le concepteur utilise la notion de point de synchronisation dfinie dans la couche session OSI et utilisable par les applications au moyen des protocoles RTS et prsentation OSI. Rappelez la dfinition et l'usage des diffrentes notions de synchronisation mineure, majeure, dialogue de session, activit de session. Le service de synchronisation majeure comporte quatre units de service qui sont: S-SYNC-MAJOR.request S-SYNC-MAJOR.indication S-SYNC-MAJOR.response S-SYNC-MAJOR.confirmation Donnez l'automate du service de demande de pose de point de synchronisation majeur (c'est l'automate de service du cot metteur qui demande la pose). Cet automate ne comporte donc que des missions d'units de service et des arrives d'units de service. On suppose que l'metteur possde le jeton de synchronisation majeure et d'activit et qu'il peut donc poser un point de synchronisation majeur. Pour cet automate on ne s'intresse qu'au mode de fonctionnement normal dans lequel aucune panne n'intervient (ni panne de site, d'entit distante, ...). Pour chaque tat on dfinira clairement en une phrase la situation laquelle correspond cet tat. Pour chaque transition on donnera la condition et l'action associe en les justifiant. 2 On souhaite ajouter au mcanisme prcdent l'acquisition du jeton de synchronisation majeure et d'activit lorsque le site n'en dispose pas (par exemple au dbut de l'change). Les units de service pour la demande du jeton sont: S-TOKEN-PLEASE.request S-TOKEN-PLEASE.indication Les units de service pour la cession du jeton sont: S-TOKEN-GIVE.request S-TOKEN-GIVE.indication On suppose l'existence d'une variable boolenne "jeton_majeur" indiquant la prsence du jeton majeur. Donnez l'automate du service de demande de cession et d'obtention du jeton majeur. L encore on ne s'intresse qu'au fonctionnement sans pannes. 3 On souhaite enfin dfinir le comportement de l'metteur qui transmet entre deux synchronisations majeures 100 messages de donnes normales au moyen de: S-DATA.request S-DATA.indication Donnez l'automate de ce dernier comportement (dans les mmes conditions que prcdemment). 4 En dduire l'automate complet comprenant vos rponses aux questions 2, 3, 4. CNAM- Anne 2007/2008 -9- Exercices Technologie client-serveur

Exercice 8 : Comparaison de la programmation d'applications rparties avec TCP et avec CORBA


Pour comparer les deux modes de communication on tudie une application de commerce lectronique, qui consiste obtenir dun site serveur distant une cotation pour une valeur boursire. La solution en mode message utilise le niveau transport TCP avec linterface socket et la solution en mode RPC utilise lapproche objets rpartis CORBA. Ce problme ne traite que des comportements dun client. Il nest pas ncessaire de comprendre trs en dtail les codes prsents en C ou en C++ pour rpondre aux questions dordre gnral concernant les aspects rseaux des deux solutions. A) Utilisation du niveau transport TCP avec linterface Socket Lapplication considre est celle dun mode client serveur basique avec un message requte de demande de cotation et un message rponse contenant le cours de bourse. On identifie donc comme premier lment du protocole (message et donne changer dans le message) une requte qui comporte un nom de valeur boursire coter. Cest une chane de caractres de longueur variable. La longueur est code sur un entier long (valeur maximum 100 octets). La rponse comporte la cotation demande (code pour simplifier sous la forme dun entier long). Elle comporte aussi un code rponse entier au cas ou des erreurs auraient rendu lopration impossible. Les structures de donnes changes dans les messages en langage C sont donc dcrites comme suit : #define MAXSTOCKNAMELEN 100 struct Quote_Request { long len; /* Longueur de la requte */ char name[MAXSTOCKNAMELEN]; /* Nom de la valeur coter */ }; struct Quote_Response { long value; /* Cours de la valeur */ long errno; /* 0 si succs, code derreur sinon */ }; On rassemble, dans une procdure utilise par le client (connect_quote_server), les instructions ncessaires pour la mise en connexion du client avec le serveur, selon les primitives de linterface socket.

- En entre de la procdure, server est une chane de caractres qui dfinit le nom du
service de cotation.

- En entre de la procdure, port contient le numro de port du service de cotation. - En rsultat HANDLE est un entier qui contient la rfrence du descriptif de la socket.
CNAM- Anne 2007/2008 -10Exercices Technologie client-serveur

typedef int HANDLE; HANDLE connect_quote_server (const char server[], u_short port) { struct sockaddr_in addr; struct hostent *hp; HANDLE sd; /* Cration de la terminaison locale */ sd = socket (AF_INET, SOCK_STREAM, 0); /* Dtermination adresse du serveur */ hp = gethostbyname(server); /* Remise zro de la zone adresse et initialisation adresse du serveur */ memset ((void *) &addr, 0, sizeof addr); addr.sin_family = AF_INET; addr.sin_port = htons (port); memcpy (&addr.sin_addr, hp->h_addr, hp->h_length); /* Ouverture de la connexion avec le serveur */ connect (sd,(struct sockaddr *)&addr, sizeof addr); return sd; } 1) A quoi sert la primitive socket ? Pourquoi utiliser le paramtre AF-INET ? Pourquoi utiliser le paramtre SOCK-STREAM ? 2) A quoi sert la primitive gethostbyname. Quel est le nom de lapplication Internet qui est utilise par la primitive gesthostbyname. Quel doit donc tre le format dun nom de service ? 3) Quel est le rle de la primitive connect ? Une seconde procdure utilise par le client send_request rassemble toutes les instructions ncessaires pour la transmission de la requte. - En paramtre entre de la procdure, sd est le descriptif de la socket. - En paramtre entre stock_name contient le nom de la valeur boursire coter. - Il ny a pas de rsultat (void). void send_request (HANDLE sd ,const char stock_name[]) { struct Quote_Request req; size_t w_bytes; size_t packet_len; int n; /* Dtermination longueur du nom de valeur boursire et */ /* recopie du nom de valeur boursire dans la requte */ packet_len = strlen (stock_name); CNAM- Anne 2007/2008 -11Exercices Technologie client-serveur

if (packet_len > MAXSTOCKNAMELEN) packet_len = MAXSTOCKNAMELEN; strncpy (req.name, stock_name, packet_len); /* Calcul longueur totale de la requte et conversion vers lordre des octets rseau */ packet_len = packet_len + sizeof req.len; req.len = htonl (packet_len); /* Envoyer le message au serveur */ n = send (sd, ((const char *) &req),packet_len , 0); } 4) Dans la procdure prcdente send_request la primitive htonl est applique la longueur du paquet packet_len pour fabriquer la zone req.len (longueur de la requte). Htonl (littralement host to network long integer) convertit lordre des octets de la machine client dans lordre rseau. Pourquoi effectuer une telle conversion. Sous quel nom est connu le problme rsolu par htonl? On rassemble dans la procdure client recv_response la collecte dun message de rponse une requte de cotation. La structure de donne dun message de rponse Quote_Response a t dfinie plus haut. int recv_response (HANDLE sd, long *value) { struct Quote_Response res; recv (sd, (char*) &res, sizeof res, 0); errno = ntohl (res.errno); if (errno > 0) /* Erreur */ return -1; else { /* Succs */ *value = ntohl (res.value); return 0; } } 5) A quoi servent les primitives ntohl utilises dans le code recv_response ? 6) On souhaite valuer la solution propose de programmation client-serveur en mode message avec les sockets relativement lassemblage des donnes dans les messages. Quel est le point de vue adopt relativement aux conversions dans ce programme (quel est le niveau dinteroprabilit de la solution) ?

B) Utilisation de lapproche objets rpartis avec Corba On se propose dtudier la solution au problme de cotation prcdent en utilisant lapproche objet rparti CORBA. 7) Rappelez les principes gnraux de lapproche CORBA ? Comment est ralise linvocation distance en CORBA ? CNAM- Anne 2007/2008 -12Exercices Technologie client-serveur

Le code IDL suivant dcrit laccs au serveur de cotation : module Stock { exception Invalid_Stock {}; interface Quoter { long get_quote (in string stock_name) raises (Invalid_Stock); }; }; 8) A quoi sert la dclaration interface Quoter. A quoi sert la dclaration long get_quote (in string stock_name) ( quoi correspond elle dans le programme socket) ? A quoi sert lexception exception Invalid_Stock {}; (quest ce quelle remplace dans le programme socket) ? Un programme client CORBA pour linvocation du service de cotation est le suivant: int main (int argc, char *argv[]) { // Nom du service de cotation invoqu. const char *name = "Quoter"; Name service_name; service_name.length(1); service_name[0].id = name; // Obtention objet obj invoqu localement (tous les traitements // ncessaires sont rsums par une procdure bind_service) Object_var obj = bind_service (argc, argv, service_name); int result = 1; try { // Obtention dune rfrence q sur obj (avec vrification de type) Quoter_var q = Quoter::_narrow (obj); // Invocation sur obj du service de cotation distante pour la valeur IBM const char *stock_name = "IBM"; long value = q->get_quote (stock_name); // Edition du rsultat et traitement des erreurs cout << "value of " << stock_name <<"=$" << value << endl; result = 0; // Success! } // Exception BAD PARAM si erreur de type dinterface catch (CORBA::BAD_PARAM) { cerr << "_narrow() failed: " CNAM- Anne 2007/2008 -13Exercices Technologie client-serveur

<< service_name << " is not a Quoter!"; } catch (Invalid_Stock &) { cerr << stock_name << " is not a valid stock name!\n"; } return result; } 9) La requte Object_var obj = bind_service (argc, argv, service_name); permet la cration dun objet local au client obj sur lequel est ralis linvocation distante. Que est le rle de obj (quel traitement ralise lobjet obj), quel est le point de vue adopt relativement aux conversions dans ce programme (quel est le niveau dinteroprabilit de la solution) ?

CNAM- Anne 2007/2008

-14-

Exercices Technologie client-serveur

Exercice 9 : Objets rpartis en CORBA Gnralits CORBA


1) Les protocoles de communication en mode client-serveur raliss en mode message utilisent au moins deux messages principaux. Quels sont ces messages ? Donnez leur nom dans le contexte de CORBA ? 2) Dans les approches RPC comme celle utilise dans CORBA on utilise des souches ou talons (ou encore en anglais stubs, skeletons,). Quels sont les rles assigns aux souches ? 3) Dans ses objectifs, il est indiqu que CORBA permet l'interoprabilit entre diffrentes plates-formes matrielles/logicielles. Indiquez ce qui dans CORBA assure cette interoprabilit. Indication: comment un client en C++ avec un ORB Corba (par exemple le produit Orbacus de la socit IONA) sur en Windows peut-il dialoguer avec un serveur en Java avec un ORB Borland Visibroker en Unix.

Langage IDL
4) Le langage IDL CORBA est un langage qui ne possde pas d'instructions de traitement. Pourquoi ? 5) Un compilateur C++ gnre du code chargeable et excutable. Qu'est ce que gnre un compilateur IDL ? Le code IDL suivant dfinit quelques lments pour une interface d'accs des fonctions de comptabilit. module CORBACompta { struct Compte { attribute string IdentCompte ; attribute string TypeCompte ; attribute Client client ; }; struct Client { attribute string NomClient ; }; typedef sequence<Compte> SeqCompte ; typedef sequence<Client> SeqClient ; interface GestionFamilledeCompte { Compte obtenirCompte (in string IdentCompte) ; SeqClient recherchepartypeCompte (in string TypeCompte); SeqCompte rechercheparnomclient (in string NomClient); }; };

CNAM- Anne 2007/2008

-15-

Exercices Technologie client-serveur

6) Commentez cette dfinition. Quels sont les variables, les types et les oprations prvues ce niveau d'implantation ? 7) Le code IDL prcdent offre des avantages de performances par rapport une conception dans laquelle les types construits (comme Compte ou Client) seraient dfinis comme des interfaces. Pourquoi ?

Architecture CORBA
8) CORBA dfinit dans son architecture l'existence d'un annuaire d'interfaces ('interface repository'). A quoi sert cet annuaire ? 9) CORBA dfinit dans son architecture un annuaire d'implantations ('implementation repository'). A quoi sert cet annuaire ? Qui lutilise principalement ? 10) CORBA ralise pour un utilisateur des fonctions habituelles dans un protocole rseau de multiplexage l'mission et de dmultiplexage la rception. Expliquez en quoi. Comment est assure cette fonction de multiplexage dmultiplexage par CORBA?

Corba et l'approche objet


11) CORBA se place dans le cadre des approches objets. L'une des caractristiques majeure de l'approche objet est l'encapsulation (en anglais 'information hiding'). En quoi CORBA assure t'il le respect du principe d'encapsulation ? 12) L'un des lments considrs comme trs important dans le dveloppement de l'approche objet a t la possibilit de rutilisation de code par hritage. Comment l'hritage est il trait dans CORBA ?

CNAM- Anne 2007/2008

-16-

Exercices Technologie client-serveur

SECOND CHAPITRE EXERCICES PRSENTATION DES DONNEES Srie d'exercices conversions


Exercice 1 : Optimisation des conversions
Lorsque l'on ralise des changes sur des systmes informatiques qui utilisent des formats internes diffrents, on utilise (par exemple en ASN1) un format de prsentation des donnes commun toutes les machines du rseau. On doit donc convertir l'mission les donnes en ce format rseau et restituer la rception le format de la machine cible. Dans le cas ou les sites metteurs ou rcepteurs sont de mme type ce travail est inutile. Que peut-on faire pour optimiser les traitements?

Exercice 2 : Problme des formats de mmoire (petit boutiste, grand boutiste)


On considre dans un calculateur 16 bits le rangement d'un enregistrement de type chane de caractres en mmoire centrale. Une chane est constitue par la donne : - de sa longueur sous forme d'un entier sur 16 bits - de la suite des caractres octet par octet. Par exemple : pour la chane de caractres dans laquelle b matrialise un espace " treboubnebpasbtreb" On mmorise : . un mot qui reprsente l'entier "0014" en hexadcimal pour dire que la chane fait 20 caractres . la chane elle-mme " treboubnebpasbtreb". Question 1 Le problme rside dans la faon de stocker la reprsentation d'une donne, et en particulier d'un entier, dans le mmoire d'une machine. Il existe deux solutions : * petit boutiste ("little endian") * grand boutiste ("big endian"). Rappelez le principe de stockage de ces deux solutions. Question 2 On considre deux machines A et B mots de 16 bits. La machine A utilise la convention petit boutiste et la machine B la convention grand boutiste pour le rangement des octets en mmoire. On suppose, pour A et B, que les bits d'un mot mmoire sont toujours
F E D C BA98 7 65 43 21 0

numrots de gauche droite Donnez l'image de la mmoire dans les deux cas octet par octet de l'enregistrement donn plus haut. Les caractres successifs d'une chane sont rangs en mmoire dans l'ordre croissant des adresses d'octets pour les deux solutions : premier caractre dans la premire case mmoire, deuxime caractre dans la case suivante. On numrote les octets et les mots mmoire partir de 0. CNAM- Anne 2007/2008 -17Exercices Technologie client-serveur

Question 3 Dans une premire exprience de communication rseau de la machine A vers la machine B on extrait l'information de la machine A octet par octet dans l'ordre o ils sont rangs. On les stocke sur la machine B dans l'ordre d'arrive. Quel est le rsultat obtenu ? Pourquoi est-il faux? Question 4 Dans une seconde exprience de communication on inverse l'arrive chaque couple d'octet : le premier octet du couple est permut avec le deuxime. Quel est le rsultat obtenu ? Pourquoi est-il faux ? Quel serait le texte affich ? Question 5 Quel est le remde aux deux problmes prcdents adopt dans ASN1 ?

Exercice 3 : Dfinition de syntaxe ASN1


On donne la spcification gnrale en ASN1 de la zone de donne utilisateur d'une PPDU (Presentation Protocol Data Unit, unit de protocole de prsentation). Dans cette spcification PDV est l'abbrviation de Presentation Data Value. L'exercice consiste commenter cette spcification pour comprendre les choix effectus et par suite prparer correctement des messages. User-data ::= CHOICE { [APPLICATION 0] IMPLICIT Simply-encoded-data. [APPLICATION 1] IMPLICIT Fully-encoded-data. } Simply-encoded-data ::= OCTET STRING Fully-encoded-data ::= SEQUENCE OF PDV-list PDV-list ::= SEQUENCE { Transfer-syntax-name OPTIONAL, Presentation-context-identifier, presentation-data-values CHOICE { single-ASN1-type[0] ANY, octet-aligned[1] IMPLICIT OCTET STRING, arbitrary[2] IMPLICIT BIT STRING } } CNAM- Anne 2007/2008 -18Exercices Technologie client-serveur

Presentation-context-identifier ::= INTEGER Transfer-syntax-name ::= OBJECT IDENTIFIER 1 Le concepteur a dfini deux formats principaux de donnes utilisateurs. Quels sont-ils? En fonction de leurs dfinitions a quels besoins correspondent t'ils selon vous? 2 La dfinition de la syntaxe de transfert utilise est optionnelle. Pourquoi ce choix est-il effectu? 3 La dfinition du contexte de prsentation vient ensuite. A quoi correspond cette notion? Pourquoi est-elle obligatoire? 4 Dans les diffrentes possibilits de PDV on trouve trois formats. Quels sont-ils? A quels besoins correspondent-ils selon vous?

Exercice 4 : Dfinition de format de transfert ASN1


On souhaite pour une application graphique 2D changer des objets dont l'un des types est le point coordonnes entires. Un point va donc tre dfini comme un type squence comportant deux entiers, d'tiquette application et pour gagner un peu de place on va viter de renvoyer le type squence en le dclarant implicite. Question 1 - Donnez la dclaration en syntaxe abstraite du point? Rappelez la signification prcise dans cette dclaration les mots cls APPLICATION, IMPLICIT, SEQUENCE? Question 2 - On rappelle que la syntaxe de transfert ASN1 repose sur la structure suivante. Le numro associ au type universel entier est 2. On suppose que tous les objets sont dfinis par leur longueur explicitement donne dans les champs longueur (pas par un dlimiteur de fin).
2 bits 1 bit Classe C 5 bits Numro 1 n octets Longueur Longueur octets Donnes

0 : Type primitif 1 : Type construit 00 : UNIVERSEL 01 : APPLICATION 10 : SPECIFIQUE AU CONTEXTE 11: PRIVE

Donnez en hexadcimal le codage de transfert d'un point de coordonnes (5,4)

Exercice 5 : Dfinition de donnes en ASN1 et de leur format de transfert.


On souhaite pour une application de gestion accder distance diffrents items de donnes dont la cl est le numro national d'identit. On donne la dfinition suivante du numro national d'identit qui est compos de six champs (dfinition simplifie) : - le champ sexe est un entier qui vaut 1 ou 2, - l'anne de naissance est un entier sur deux chiffres dcimaux compris entre 00 et 99, - le mois de naissance est un entier sur deux chiffres dcimaux compris entre 01 et 12, - le numro de dpartement de naissance est un entier sur deux chiffres dcimaux , CNAM- Anne 2007/2008 -19Exercices Technologie client-serveur

- le numro de la commune de naissance dans le dpartement de naissance est un entier sur trois chiffres dcimaux, - le numro de la personne sur le registre de l'tat civil est galement un entier sur trois chiffres dcimaux. Question 1 - Dfinissez en syntaxe abstraite ASN1 le numro national d'identit. Diffrentes solutions sont possibles. On pourra s'aider des exemples donns en cours ou en exercices en expliquant la nature des choix effectus. . Question 2 Le numro associ au type universel construit SEQUENCE ou SEQUENCE OF est 16, et celui du type universel primitif ENTIER est 2, le type NumericString est cod 18 . On suppose que tous les objets sont dfinis par leur longueur explicite (pas par un dlimiteur de fin). Donnez le codage de transfert d'une personne de numro 2510641008009 soit en syntaxe ASN1 l'instance suivante du type dfini la question prcdente: { 2, 51, 06, 41, 008 , 009 } (en hexadcimal).

Exercice 6 : Problme gnral ASN1


On souhaite construire un serveur d'annuaire tlphonique simple. Ce serveur d'annuaire peut tre consult et mis a jour par des utilisateurs. Nous avons donc un modle client serveur. Question 1 - Donner une structure de donnes en C pour un enregistrement du fichier correspondant l'annuaire. Question 2 - Donner la structure ASN1 et donner une ide du codage. Question 3 - Dfinir les oprations possibles sur ce fichier. Question 4 - Dfinir le protocole d'accs au serveur (format des requtes, des rponses et des erreurs) Question 5 - Coder ce protocole en ASN1.

CNAM- Anne 2007/2008

-20-

Exercices Technologie client-serveur

Exercice 7 : Dfinition d'une traduction du langage IDL de CORBA vers le langage Pascal
Vous disposez d'une application comprenant plusieurs dizaines de milliers de lignes crites en Pascal (Cf. en fin de sujet la note sur le langage Pascal). Vous avez t charg d'intgrer cette application dans un environnement CORBA. On vous demande donc de raliser une tude pour interfacer cette application avec des programmes CORBA existants : on souhaite que ces programmes puissent invoquer l'application crite en Pascal et puisse lui soumettre des requtes. Cette tude comprend deux parties : - la dfinition d'une traduction du langage IDL de CORBA vers le langage Pascal - un certain nombre de modifications des sources Pascal de l'application Nous ne nous intressons ici qu' la premire partie de l'tude (i.e. la traduction du langage IDL vers le langage Pascal). 1/ Langage IDL 1.1/ Barrer la mauvaise rponse. Le langage IDL de CORBA permet de dfinir : - les interfaces des objets serveur dune application : oui - non - les implantations des objets serveur dune application : oui - non 1.2/ Commenter le code IDL suivant en prcisant le rle de chaque mot-cl. module Garage { typedef long typeChevFisc; interface Voiture { attribute long NbPlaces; long Vignette( in typeChevFisc cf ); }; };

2/ Traduction IDL vers Pascal 2.1/ En vous inspirant des traductions IDL vers respectivement C, C++ et Java du polycopi, proposer une traduction du code IDL de la question 1.2/ vers le langage Pascal. 2.2/ Expliquer en quelques mots, pour chaque mot-cl traduit, vos choix. 3/ Passage de paramtres 3.1/ Rappeler le rle des mots-cls in, inout et out dans la dclaration IDL dune mthode.

3.2/ Proposer une traduction en Pascal du code IDL suivant :

CNAM- Anne 2007/2008

-21-

Exercices Technologie client-serveur

long maMethode( in long arg1 , inout long arg2 , out long arg3 ); 4/ Traduction des types de donnes du langage IDL 4.1/ En plus du type IDL long vu aux questions 1/ et 3.2/, citer les autres types du langage IDL pour lesquels il est ncessaire de dfinir une traduction vers les langages Pascal. En proposer une traduction. Note propos du langage Pascal Pour les besoins de ce problme, on considre que le langage Pascal retenu est identique au langage Pascal habituel, mais qu'il comporte un type spcifique OBJECT permettant de dfinir des classes d'objets. Par exemple, le code suivant : TYPE tHeure = RECORD (* ... *) END; TYPE tHorloge = OBJECT FuseauHoraire : Integer; METHOD RetourneHeure : tHeure; METHOD PositionneFuseau( fh : Integer ); END; dfinit en plus du type tHeure, l'interface d'une classe tHorloge qui comporte : une variable entire FuseauHoraire et deux mthodes RetourneHeure et PositionneFuseau. La dfinition du code de ces mthodes est identique celle des procdures Pascal traditionnelles.

CNAM- Anne 2007/2008

-22-

Exercices Technologie client-serveur

Exercice 8 : CORBA

Pour permettre l'interoprabilit dans des systmes d'objets rpartis de constructeurs diffrents, le standard CORBA (version 2.0) dcrit deux lments essentiels qui sont le langage de dfinition des interfaces (IDL "Interface Definition Language") et les protocoles GIOP (General Inter-ORB Protocol) et IIOP (Internet Inter-ORB Protocol).

1 Questions IDL CORBA


L'IDL CORBA permet de dcrire pour des objets clients, les interfaces d'accs des objets serveurs (c'est--dire les services fournis par les objets serveurs). Nous donnons en annexe la grammaire fort simplifie du langage IDL que vous pouvez consulter si ncessaire. Pour rpondre aux questions qui suivent la comprhension de la totalit de la grammaire IDL CORBA n'est pas ncessaire. Soit le fichier IDL contenant la dfinition suivante pour des services fournis par un objet Calcul. Celui-ci opre sur un nombre rel stock en mmoire : module Math { interface Calcul { exception DivByZero { String commentaire;} ; oneway void Init ( in Double valeur) ; Double Add ( in Double valeur ) ; Double Sub ( in Double valeur ) ; Double Mult ( in Double valeur ) ; Double Div ( in Double valeur ) raises ( DivByZero ) ; }; }; 1.1 Quel est l'ensemble des services ou oprations offerts par le serveur ou l'objet Calcul? 1.2 Que signifie la suite de caractres : '( in Double valeur )' dans l'exemple prcdent ? 1.3 En IDL CORBA le mot cl "oneway" dfinit une invocation de procdure distante asynchrone sans rponse Quel est le mode de fonctionnement d'un tel appel? 1.4 Par dfaut, lorsque le mot "oneway" n'est pas prcis, les oprations dcrites en IDL sont des appels de procdure distante synchrone avec la smantique "au plus une fois" vers l'objet ou le serveur distant. Rappelez le fonctionnement d'un appel de procdure synchrone avec une smantique au plus une fois. Qu'est-ce que cela signifie pour le dveloppeur d'applications rparties? 1.5 Par rapport au langage de syntaxe abstraite ASN.1 tudi en cours et en travaux dirigs, quel est l'apport du langage IDL CORBA prcdent?

2 Questions GIOP et IIOP


CNAM- Anne 2007/2008 -23Exercices Technologie client-serveur

Le bus logiciel CORBA, appel ORB pour Object Request Broker, sert de support de communication entre les clients et les serveurs. Il vhicule les requtes et les rsultats ou les erreurs associes. Pour permettre l'interoprabilit entre des bus de diffrents constructeurs, un protocole gnral GIOP a t dfini ("Gnral Inter-Orb Protocol"). Le protocole d'interoprabilit inter-bus sur l'Internet ou Internet Inter-ORB Protocol (IIOP) est la mise en uvre du protocole GIOP pour l'architecture TCP/IP. On peut driver du protocole GIOP d'autres protocoles inter-orb associs d'autres architectures de rseau. Entre autres fonctionnalits le protocole GIOP dfinit une syntaxe de transfert. La reprsentation des donnes au format CDR ("Common Data Representation") utilise par le protocole GIOP spcifie un format de donnes pour reprsenter tous les types IDL sous la forme d'une suite d'octets. CDR dcrit prcisment le codage et l'alignement de chacun des types dans un message. 2.1 Quelle est la solution adopte par ASN1/BER relativement au problme de l'ordre d'mission des octets (petit boutiste, grand boutiste)? 2.2 L'un des premiers octets du message GIOP contient la valeur d'un boolen indiquant l'ordre des octets des donnes encapsules. Si le boolen est faux, les octets sont aligns dans l'ordre grand boutiste ("big endian'); si la valeur est vrai, les donnes sont encodes dans l'ordre petit boutiste ("little endian"). Donner les raisons du codage de ce premier boolen dans un message. Pour pouvoir accder aux services offerts par un serveur ou un objet, il faut tre capable de l'identifier et de le localiser et de raliser des RPC. C'est l'une des fonctions du bus logiciel que de grer des rfrences d'objets cette fin. Une rfrence d'objet est baptise (IOR Interoperable Object Reference). Il n'y a pas un format unique de rfrence car les dveloppeurs sont libres de cette dfinition.. Par exemple ces rfrences contiennent des informations spcifiques la couche de transport utilise pour accder l'objet. Cependant tout rfrence doit au moins contenir les informations suivantes: - le numro de version de la spcification de la couche transport accepte par le serveur d'objet. - l'adresse transport permettant d'atteindre le serveur destinataire de la requte (dans le format du protocole de transport utilis). - une cl d'accs reprsente par une squence d'octets permettant d'identifier et de localiser l'objet sur le serveur. Un exemple de rfrence d'objet IOR qui est fourni par l'ORB industriel ILU est donn par: 1.0:sunrpc_2_0x61a79_153029598/rm=tcp_163.173.128.208_3503:IDL%3AMath %3A/Math/Calcul 2.3 Pour cet exemple donner la signification des diffrents champs. 2.4 Dans l'exemple de l'IOR prcdent, quels sont les protocoles de transport et de RPC utiliss par l'ORB pour raliser les invocations distantes? 2.5 Le protocole IIOP ne fonctionne pas en mode connect. Par contre il utilise pour envoyer ses messages une voie de communication TCP qui elle est en mode connect. Citez au moins CNAM- Anne 2007/2008 -24Exercices Technologie client-serveur

deux protocoles tudis en cours fonctionnant galement en mode non connect au dessus de TCP? Le protocole GIOP dfinit 7 types de messages diffrents qui sont mis soit par le client, soit par le serveur, soit par les deux. Request : mis par le client pour invoquer des oprations sur les objets ou serveurs CORBA. L'entte du message contient entre autres un identificateur de requte. Le corps d'un message request contient les valeurs des paramtres en entre (mode in et inout du langage IDL). Reply : mis par le serveur en rponse un message Request. L'entte du message contient l'identificateur de la requte. Le corps du message contient le rsultat de l'opration ainsi que les paramtres en sortie de celle-ci (mode inout et out). Si un problme survient lors du transport ou de l'excution de la requte, le message contient alors la valeur de l'exception indiquant ce problme. CancelRequest : permet un client d'informer un serveur qu'il ne dsire plus attendre la rponse une requte qu'il a mis. LocateRequest : ce message permet de savoir si une rfrence IOR est valide, si le serveur est capable de recevoir directement des requtes pour un objet donn, et dans le cas contraire, de dterminer la nouvelle adresse IOR permettant d'accder l'objet. Cela permet de grer la migration des objets. LocateReply : c'est la rponse associe un message de type LocateRequest. Il contient un boolen indiquant si la rfrence IOR dsigne un objet local. Si ce boolen est faux, alors le message contient en plus une rfrence IOR indiquant la nouvelle localisation de l'objet. CloseConnection : ce message informe le client que le serveur interrompt son service. Les clients savent alors que toutes les requtes pour lesquelles ils attendaient des rponses ne seront jamais traites. Les clients peuvent retransmettre leurs requtes vers d'autres serveurs. MessageError : ce message est envoy en rponse tout message GIOP qui ne peut pas tre trait car il est erron. Par exemple, le numro de version est inconnu, un type de message est inconnu, ou un en-tte est erron. L'en-tte d'une requte (Request) se dfinit principalement en IDL de la faon suivante: struct RequestHeader { Unsigned long boolean sequence<octet> string }; request_id; reponse_expected; object_key; operation;

2.6 Donner la signification de chaque champ et leur fonction. 2.7 Dans le cas d'une opration dfinie en IDL de la faon suivante : Double exemple (in Short m, out String str, inout Double p); CNAM- Anne 2007/2008 -25Exercices Technologie client-serveur

Quels sont les lments qui vont faire partie du corps de la requte ? 2.8 On s'intresse dans cette question la ralisation du protocole IIOP au dessus de la couche transport TCP (interface socket). En supposant qu'il n'y ait encore eu aucune requte entre le client et le serveur, un client dcide de demander la ralisation d'une requte un serveur. Une connexion TCP doit tre tablie puis le message de requte doit tre achemin. On utilise l' interface socket pour TCP. Donner l'enchanement des primitives socket qui sont ncessaires la ralisation d'une requte sur un objet distant. Vous commenterez votre solution en donnant la signification des diffrentes tapes successives proposes aussi bien pour la souche ct client que pour la souche ct serveur

Annexe : Grammaire de l'IDL CORBA Nous rappelons quelques conventions d'criture d'une grammaire d'un langage: les mots en gras sont des noms terminaux ou mots-cls, les mots entre <> sont des mots qui sont ensuite redfinis, les mots entre [ ] sont des mots optionnels. Lorsqu'une dclaration ou un mot est suivi d'une *, cela signifie que on peut trouver de 0 n fois cette dclaration ou ce mot. Le texte entre /* et */ est un commentaire. Un module est un espace de nommage permettant de dcrire les interfaces de service offerts par un serveur ou objet distant. Dans une interface on trouve la dclaration de types, de constantes, d'attributs, d'exceptions et d'oprations. module <identificateur> /* un contexte */ { interface <identificateur>/*interface d'un service ou d'un objet*/ { <declaration de type>*; <declaration de constante>*; <declaration d'exception>*; <declaration d'attribut>*; <declaration d'operation>*; }; }; <declaration de type> ::= typedef <type> <ident_type> <declaration de constante> ::= const <identificateur> '=' <expression> <declaration d'exception> ::= exception <ident_except> '{'<parametres>*'}' <declaration d'attribut> ::= <mode att> attribute <type> <identificateur> <mode att> ::= [readonly] CNAM- Anne 2007/2008 -26Exercices Technologie client-serveur

<declaration d'operation> ::= <mode d'invocation> <type retour> <identificateur> '(' <parametres>*')' <clause d'exception> <mode invocation> ::= [oneway] <type retour> ::= void | <type_IDL> /*Le mot cl void dfinit l'absence de paramtre rsultat*/ <parametres> ::= <mode param> <type> <identificateur> <mode param> ::= in | out | inout <clause exception> ::= [ raises '(' <liste_d_exception>')'] <type> ::= Short |Long |LongLong |Float |Double |Char |String |Boolean | ident_type <liste_d_exception> ::= <ident_except>* <ident_except>::= <identificateur> <ident_type> ::= <identificateur> <identificateur> ::= <lettre>{<caractere>}* <caractere>::=<lettre>|<chiffre>|'_' <lettre>::= 'a'|...|'z'|'A'|...|'Z' <chiffre> ::= '0'|...|'9'

Les mots-cls Short, Long, LongLong, Float, Double, Char, String, Boolean, correspondent des dfinitions de types primitifs et signifient respectivement entier court sur 16 bits, entiers long sur 32 bits, entier long sur 64 bits, nombre rel sur 32 bits, nombre rel sur 64 bits, caractre 8 bits ISO latin-1, chane de caractres et boolean.

CNAM- Anne 2007/2008

-27-

Exercices Technologie client-serveur

Srie d'exercices scurit


Exercice 9 : Cryptogramme 1
1) Cassez le cryptogramme suivant qui utilise une substitution monoalphabtique. Le texte en clair ne contient que des lettres. Cest un extrait dune trs clbre fable de La Fontaine. gcxobwryv ib ogx tb syiib ypsyxg ib ogx tbv qmgzev t cpb wgqrp wrox qysyib g tbv obiybwv t roxrigpv vco cp xgeyv tb xcojcyb ib qrcsbox vb xorcsg zyv ab igyvvb g ebpvbo ig syb jcb wyobpx qbv tbcd gzyv ib obfgi wcx wrox mrppbxb oybp pb zgpjjcgyx gc wbvxyp 2) En supposant que vous disposiez dun histogramme de la rpartition des lettres et des digrammes dans la langue franaise ainsi quune fonction Nombre_fautes(texte) qui donne (selon un correcteur orthographique) le pourcentage de mots dans un texte qui ont au moins une faute dorthographe, imaginez un algorithme de cryptanalyse de ce type de cryptosystmes

Exercice 10 : Cryptogramme n 2
Casser le cryptogramme suivant qui utilise une transposition par colonnes. Le texte en clair est issu d'un ouvrage classique sur l'informatique; on peut donc supposer que le mot "ordinateur" y figure. Le texte ne contient que des lettres (sans espace). Il est dcoup en blocs de 5 caractres pour plus de lisibilit. ntsus ueire eibps etsio ootuu rpmrn eaicq iunps cnlog euern lndur raose xnntu dnaeo eseue clton nretd trels

Exercice 11 : Cryptogramme n 3
1 Chiffrer avec le chiffre de Vigenre le texte suivant "textesecretadecoder" en utilisant comme clef le mot crypto 2 Pour le mme texte en clair on obtient le texte chiffr suivant "brqksmzcspxiqxtcxzr" .Quel est la clef ? 3 Supposons que vous disposiez dun texte en clair et une partie du mme texte chiffr, mais que ce texte soit plus court que la clef (par exemple vous ne connaissez que brq dans lexemple prcdent). Quelle information cela vous apporte til ? Imaginez des stratgies de cryptanalyse dans le cas ou la clef est un mot franais et dans le cas ou cest une suite alatoire de lettres. Comment distinguer priori ces deux cas ? CNAM- Anne 2007/2008 -28Exercices Technologie client-serveur

Exercice 12 : Etude du systme de chiffrement cl publique RSA


On rappelle l'algorithme du MIT ( Rivest, Shamir, Adleman, 1978). 1- Choisir deux nombres p et q premiers et grands (p, q > 10100) 2 - Calculer n: = p * q z: = (p - 1) * (q - 1)

3 - Soit d un nombre premier avec z (z et d sont premiers entre eux). 4 - Dterminer un entier e tel que e * d = 1 mod z . Soit A un message binaire. Dcouper A en blocs de k bits tel que k soit le plus grand entier tel que 2k < n. Soit P un bloc de k bits, le codage de P est donn par : C = E(P) = Pe (mod n) Le dchiffage d'un message crypt C est donn par: P= D(C) = Cd (mod n) 1)- On donne les valeurs numriques suivantes : p = 3, q = 11 (trop petites en pratique, mais traitable en exercice). Calculer les valeurs des nombres d et e vrifiant les conditions de l'algorithme du MlT. Pour avoir un couple unique on prend la plus petite valeur possible de d et pour cette valeur la plus petite valeur possible de e. Quelle est la cl publique et quelle est la cl secrte? 2) - Soit le message de 3 chiffres 1, 6, 15 soit par blocs de 5 bits la configuration de bits suivante: 00001 00110 01111 Coder ce message en utilisant les paramtres de chiffrement RSA prcdents. 3) - On reoit le message suivant par blocs de 6bits (4 , 14 , 24): 000100 001110 011000 Donner la valeur initiale du message (texte en clair), en prenant les mmes valeurs pour d, e et k qu' la question 2. Question 4 - Pourquoi ne peut-on prendre p et q petits ? Que se passe-t-il lorsque p et q sont de l'ordre de l0l0 ?

CNAM- Anne 2007/2008

-29-

Exercices Technologie client-serveur

Exercice 13 : Kerberos
Le projet Athena du MIT (Massachusetts Institutes of Technology) tait, dans le milieu des annes 80, un projet de recherche portant sur les systmes rpartis. Il avait pour objectif la dfinition d'un environnement homogne d'accs pour des PC sous MS/DOS, des stations de travail ou des calculateurs sous UNIX en grand nombre et relis par plusieurs rseaux locaux. L'un des points forts de cet environnement est le protocole qui gre la fois l'authentification des utilisateurs et certains mcanismes de protection. Ce protocole est dnomm Kerberos (Cerbre, le chien trois ttes, gardien de l'enfer). Depuis ces origines Kerberos a connu de nombreuses variantes et a t implants dans diffrents produits (En particulier chez Digital Equipment et plus rcemment chez Microsoft). Il constitue le standard des systmes de distribution des clefs symtriques (gardiens des clefs) et est trs utilis dans lInternet, en particulier par les organismes de recherche et denseignement. La plus part des protocoles de lInternet (PPP, HTTP, SMTP, FTP) supportent une authentification des entits communicantes bases sur Kerberos. Ses principes ont t repris dans des architecture de protection comme DCE et Windows NT (c. f. le chapitre sur la protection de cette seconde partie). La version en cours de normalisation lIETF est la v5 qui nutilise que la cryptographie symtrique (DES et triple DES) et les fonctions de hachage sens unique (MD5 et SHA-1), la v4 faisant lobjet de la RFC1501. Questions 1 Quelle sont les fonctions que doit raliser un gardien de clefs ? Expliquer les principes du triple DES et ses avantages par rapport au DES ? A quoi peut servir la combinaison dune fonction de hachage et dun crypto systme symtrique ?

Description du protocole
Kerberos met en communication trois entits : - lentit client : un programme ou un utilisateur sur une machine donne. Pour simplifier nous considrons que lentit client figure uniquement un utilisateur humain. Pour nous ce sera Alice. - lentit serveur: un programme requis par lentit client (par exemple le serveur de fichier). Ce sera dans la suite le serveur de Bob. - le centre de distribution des clefs, appel KDC (pour Key Distribution Center), il connat les clefs prives de toutes les entits clients ou serveurs quil conserve dans une base de donnes, il gnre aussi des clefs de session (temporaires). Pour fonctionner Kerberos ncessite une synchronisation des horloges de toutes les machines du rseau. Ce protocole doit raliser entre tout couple d'horloge du rseau un cart infrieur 5 mn pour des dates lues au mme instant (ce qui est assez facile raliser). Pour pouvoir utiliser un serveur, Kerberos ralise un protocole de distribution de cls de session qui respecte les tapes suivantes : 1. Alice sauthentifie auprs du KDC 2. Alice demande un ticket d'utilisation du serveur Bob au KDC. Un ticket au sens de Kerberos comporte essentiellement une cl de session et diffrentes informations annexes dtailles plus loin. KDC lui renvoie un ticket valable pour le serveur demand.

CNAM- Anne 2007/2008

-30-

Exercices Technologie client-serveur

3. Quand Alice sollicite le serveur Bob, elle utilise le ticket que lui a remis le KDC quil met dans sa requte. Nous allons dtailler les trois tapes prcdentes. Pour cela, nous dfinissons prcisment les notations des diffrents objets manipuls par le protocole : Alice A,a Le nom du client. Une clef utilise par Alice pour sauthentifier qui en gnral est drive dun mot de passe A est connue dAlice et de Kerberos (en majuscule quand elle est utilise pour le dchiffrement, en minuscule pour le chiffrement) La clef de session dAlice SA est connue dAlice et de Kerberos Le nom du serveur invoqu. La clef prive du serveur Bob. (en majuscule quand elle est utilise pour le dchiffrement, en minuscule pour le chiffrement) Le nom du serveur de distribution des clefs La clef de Kerberos connue de lui seul(en majuscule quand elle est utilise pour le dchiffrement, en minuscule pour le chiffrement) La clef de session dtermine entre client et serveur. (en majuscule quand elle est utilise pour le dchiffrement, en minuscule pour le chiffrement) Le ticket donn un client Alice pour utiliser un serveur Bob. La date de fabrication de l'objet X Date donne par lhorloge locale de la machine

SA,sa Bob B,b Kerberos KDC,kdc KAB,kab Ticket date_fab_X date_courante

Comme dans tout systme d'accs a mots de passe, le client a convenu pralablement avec ladministrateur systme dun nom (Alice), et dun mot de passe qui devient la clef prive A dAlice. Pareillement, il a t convenu, pour le programme serveur, dun nom (Bob), et dune clef prive B. Les clefs ne sont connues que de leur propritaire (qui doivent donc les garder secrtes), et du serveur d'authentification Kerberos. Ce systme doit donc tre particulirement bien protg. Etape 1 : Authentification du client Alice commence par envoyer une requte dauthentification KSB_AS_REQ contenant son Nom de login (Alice) Kerberos. Kerberos lui renvoie un message KSB_AS_REP contenant une clef de session SA personnelle Alice et un ticket de contrle daccs TGT (Ticket Granting Ticket).

CNAM- Anne 2007/2008

-31-

Exercices Technologie client-serveur

Alice KSB_AS_REQ, Alice, Kerberos

Kerberos

Gnre la clef SA; date_per_SA:= date_courante+ dure_validit;

TGT= REP:= SA,TGT:= KSB_AS_REP, Kerberos, Alice, REP

Questions 2 Expliquez lusage des deux chiffrements raliss dans cette tape. Contre quel type dattaque est destine la variable date_per_SA ? Expliquez son usage Etape 2 : Obtention du ticket daccs au serveur Lorsque Alice dsire (durant la priode de validit de son ticket dauthentification) utiliser le service du serveur Bob, elle adresse Kerberos une requte daccs ce serveur. Cette requte contient outre le nom du serveur, TGT et la date courante chiffre avec SA. A rception de cette demande Kerberos dchiffre TGT, rcupre la clef SA, dchiffre la date avec SA et vrifie que cette date est voisine de son heure courante. Questions 3 Que prouve ce contrle ? Quelle technique de protection peut utilser Kerberos pour le contrle des droits dAlice? Quel est lusage du chiffrement ralis par Kerberos? Etape 3 : Accs au serveur applicatif Dans un dlai compatible avec la dure de validit du Ticket, Alice va demander au serveur Bob dexcuter la transaction pour laquelle elle a obtenu le ticket. Elle envoi donc ce serveur une requte avec le ticket. Questions 4 A quoi sert la variable d1 et pourquoi est elle chiffre ? Expliquez le principe du contrle ralis par Bob Quel est lusage de la variable REP2 ? A quoi pourra servir KAB dans la suite des change de la transaction courante entre Alice et Bob ? Comment appelle ton une telle variable?

Extension de Kerberos
Une extension de Kerberos est en cours de normalisation. Elle consiste utiliser un crypto systme asymtrique pour toutes les oprations utilisant des clefs rmanente (A,B, KDC). Dans ce cas Kerberos na plus besoins de stocker les clefs symtriques de chaque

CNAM- Anne 2007/2008

-32-

Exercices Technologie client-serveur

participant. Il ne stocke que des clefs symtriques de session et sa clef (KDC) et des certificats pour chaque utilisateur. Ceci rduit considrablement le risque li une attaque de Kerberos. Question 5 Donnez le schma dchange de messages de ltape 1 (cas nominal) correspondant cette extension en justifiant lutilisation de chaque opration cryptographique.

[Adr_c ; Adr_s ; ( { Ac }Cl_sess_c,s ; { Tc,s }Cl_s ) ]

CNAM- Anne 2007/2008

-33-

Exercices Technologie client-serveur

Exercice 14 : Partage d'un secret


Un conseil d'administration prend ses dcisions au moyen de votes lectroniques. Il comporte un prsident dont la voix compte double et trois membres dont la voix est simple (nots 1,2,3). Une dcision n'est prise que si un vote rassemble au moins 3 voix. Les votes sont acquis lorsque le titulaire prsente selon son rang soit une soit deux parts d'un secret selon ses droits qui l'authentifie. - Les services de scurit ont fait implanter la mthode de Shamir avec une arithmtique modulo 31. - Le secret partag est tir alatoirement la valeur 7 - Les coefficients alatoires du polynme sont 1, 9, et le terme constant 7 - On dduit les parts de secret du prsident aux points 1,2 - On dduit des parts du secret des membres 1, 2, 3 des valeurs du polynme aux points 3,4,5 1 Quelles sont les valeurs des parts? 2 On suppose que le prsident et le membre 1 sont d'accords. Montrez qu'ils peuvent emporter le vote.

Exercice 15 : Problme de notarisation


On souhaite raliser un service ayant pour objectif la non rpudiation de transactions entre deux sites A et B qui fonctionnent en mode A client et B serveur (service de notarisation). Le notaire est not N. On note b la clef de chiffrement (clef publique dans les crypto systmes asymtriques) de Bob et B sa clef de dchiffrement (clef prive dans les crypto systmes asymtriques).

Les tapes du protocole sont les suivantes :


1. Alice chiffre et signe M avec sa clef a et lenvoie au notaire. 2. Le notaire dchiffre le message, vrifie la signature qui garantit que le demandeur du service est bien Alice. Il attribue lenvoi du message un numro de squence envoi(M), date cet envoi te(M), enregistre envoi(M), te(M), M dans un fichier intgre. Il constitue un message contenant envoi(M) sign avec la clef dAlice et (envoi(M), te(M), M) chiffr avec sa clef. 3. Alice peut alors contrler la signature qui authentifie le notaire (qui est le seul avec Alice connatre la clef dAlice) et constitue une rfrence de la preuve denvoi. Par contre Alice ne peut pas dchiffrer la seconde partie du message. Elle lenvoie Bob. 4. Bob ne peut pas, lui non plus, lire le message. Il le renvoie au notaire 5. Le notaire dchiffre le message avec sa clef. Il vrifie que le numro denvoi est dans son fichier. Il attribue la rception du message un numro de squence rception(M), date cette rception tr(M), enregistre rception(M), tr(M), M dans le fichier intgre. Il constitue un message contenant (envoi(M), te(M), rception(M),tr(m), M) sign et chiffr avec la CNAM- Anne 2007/2008 -34Exercices Technologie client-serveur

clef de Bob. Il transmet ce message Bob. Il envoi un message contenant rception(M) Alice. 6. Bob peut dchiffrer le message, contrler la signature qui authentifie le notaire. Il envoie un accus de rception sign avec sa clef au notaire. 7. Le notaire enregistre la fin de la transaction. Question 1 Rappelez la dfinition du problme de non rpudiation. Question 2 Dcrivez par des diagrammes d'change de messages chaque tape en utilisant uniquement des algorithmes de chiffrement symtriques; pour chaque tape, exprimez les proprits obtenues: confidentialit, intgrit, non rpudiation, vis a vis de tous les participants (A, B, N, les autres entits prsentes dans le rseau) qui sont ralises par chacune des six tapes. Question 3 Proposez pour chacune des tapes une solution cl publique qui atteigne exactement les proprits prcdentes vis a vis des mmes intervenants. Expliquez de manire trs prcise pourquoi votre solution assure les proprits recherches. Question 4 On suppose que l'usager client A dispose d'un dlai dmax pour signaler la perte de sa cl. Toute perte non signale dans le dlai dmax ne peut-tre tenue charge contre l'usager. Toute perte non signale aprs le dlai dmax entrane la responsabilit totale du client en cas de contestation. Que pourrait faire le notaire pour que le serveur B et le notaire ne soient jamais pigs par un client malveillant qui dclare la perte de sa cl aprs avoir donn un ordre et avant dmax. Dans quelles applications une telle stratgie est elle utilisable? Dans quelles applications est-elle inutilisable? Question 5 La solution utilise l'algorithme RSA. Si un utilisateur pour rpudier sa signature lectronique conteste la scurit du protocole quels arguments peuvent tre opposs? Question 6 Le site B peut essayer de dnier avoir reu l'ordre (s'il ne lui convient pas) en n'mettant pas l'acquittement final et en prtendant ensuite qu'il n'a jamais reu la transaction interprtable ou que son calculateur est tomb en panne ce moment. Comment le notaire peut-il contrer cette attitude (recherchez une solution dduite des pratiques bancaires courantes)?

CNAM- Anne 2007/2008

-35-

Exercices Technologie client-serveur

Exercice 16 : Gestion d'une connexion scurise


Dans ce problme sont tudis les mcanismes de gestion d'une connexion scurise, c'est dire offrant des services de confidentialit ou d'intgrit des donnes. On considre que le protocole de scurisation est construit en utilisant les services d'un protocole de transfert fiable comme le transport ISO TP4, TCP I.1 Principes gnraux Une communication scurise ncessite les oprations principales suivantes, elles mmes divises en tapes: 1) Ouverture de la connexion scurise: a) Ouverture de la connexion du protocole sous-jacent, b) Authentification (rciproque) des entits communicantes, c) Ngociation du mode de scurisation des transferts, d) change d'une clef de session. 2) Transfert des donnes: e) En mission: chiffrement des messages, construction des trames scurises, f) En rception: Dchiffrement des messages et dtection des attaques ventuelles, g) Priodiquement: changement de la clef de session. 3) Fermeture de la connexion scurise: h) Fermeture de la connexion du protocole sous-jacent, i) Destruction du contexte de connexion scurise. Expliquez en deux trois lignes l'utilit de chacun des 9 points prcdents. Dans la suite de ce problme nous utilisons les notations suivantes: - A,B les entits impliques dans l'change scuris - A----->B: M (dans le protocole A doit envoyer M l'entit B) - S est un serveur de clef -1 - K est une clef et K son inverse (dans le chiffrement asymtrique K est la clef -1 publique et K la clef prive) - {X} est un texte X chiffr avec K comme clef K On a donc {{X} } =X et l'on suppose aussi que{{X} } =X K K-1 K-1 K - On utilise dans ce problme la notion de fonction de hachage H. H(M) application de H un message M fournit une valeur dpendant de l'ensemble du message M (ce pourrait tre une somme de contrle ou le rsultat d'une division polynomiale). I.2 Authentification des correspondants Un schma d'authentification clef publique dans la communication scurise est le suivant. On utilise un chiffrement asymtrique tel que le RSA. Kb est la clef publique de B. Pour que B s'authentifie auprs de A on procde aux oprations suivantes: 1) A tire un nombre alatoire N 2) Message 1 A----->B:A,B,N 3) Message 2 B----->A:B,A,{N} Kb-1 CNAM- Anne 2007/2008 -36Exercices Technologie client-serveur

A vrifie que {{N}

} =N ce qui authentifie B. Kb-1 Kb I.2.1 Rappelez les principes du chiffrement asymtrique ( clef publique) I.2.2 Pourquoi N doit-il tre un nombre alatoire (pas une constante par exemple) ? I.3 Utilisation d'un serveur de clefs publiques Pour obtenir la clef publique Kb de B, A fait appel un serveur S de clefs publiques. Ce serveur gre un fichier qui ne peut tre modifi que par un responsable de scurit dont la clef publique Ks est connue de tous les utilisateurs habilits utiliser le protocole de scurit. Un enregistrement du fichier a la structure suivante: B,Kb,{H(B,Kb)} Ks-1 I.3.1 Quel est l'utilit du dernier champ de cet enregistrement? I.3.2 Compltez le protocole d'authentification donn la question prcdente en introduisant les oprations entre A et le serveur S pour rcuprer Kb et vrifier sa validit. I.4 Ngociation des paramtres et change la clef de session Dans l'change suivant de ngociation et d'change: A est l'appelant et B l'appel. Y est une proposition du mode de protection qui peut prendre soit la valeur C (confidentialit et intgrit), I (intgrit seule) ou U (pas de protection), Z est la valeur accepte par B, K' est une clef de session pour un algorithme de chiffrement symtrique type DES, Num est la valeur initiale des numros de squences des messages changs qui seront utiliss par la suite dans le transfert. 1) A tire deux nombres alatoires K' et Num 2) Message n : A----->B:A,B,{Y,K',Num,H(Y,K',Num)}

Kb 3) B calcule Y,K',Num,H(Y,K',Num)={{Y,K',Num,H(Y,K',Num)}Kb}Kb-1 et vrifie le H. 4) Message n+1: B----->A:B,A,{Z} Ka 5) A calcule Z={{Z}Ka}Ka-1 I.4.1 A et B peuvent souhaiter des modes de protection diffrents. En fonction du mode de protection dsir par A et B, discutez la valeur finale de Z accepte par B. 1.4.2 A quoi sert l'usage d'une clef de session? Pourquoi utiliser un protocole de type DES (et pas le RSA) pendant l'change? 1.4.3 Pourquoi faut il renumroter les messages pendant l'change alors que le protocole sousjacent, qui est fiable, doit dj le faire ? 1.4.4 Commentez les 5 tapes de l'change prcdent en expliquant la raison des diffrentes oprations CNAM- Anne 2007/2008 -37Exercices Technologie client-serveur

1.5 Phase de transfert Proposez une structure des trames scurises changes (les champs de contrle qui doivent tre ajouts et le chiffrement appliqu), en fonction du mode de protection choisi. 1.6 Programmation en RPC L'ouverture de connexion prcdente est programme dans un environnement d'appel de procdure distance. On structure l'application de la faon suivante. A et B changent leur message en mode asychrone sauf pour l'appel S o A et B jouent le rle de client et de serveur et S le rle de serveur. On suppose que l'on dispose des primitives du niveau infrieur: ouverture_connexion (metteur, destinataire), envoyer(metteur, destinataire, contenu), recevoir(metteur, destinataire, contenu). Dcrire schmatiquement les oprations ralises sur le client et le serveur pour obtenir les clefs publiques.

Exercice 17 : Changement priodique de cls en cryptographie cls publiques.


On tudie un protocole de transmission d'informations dvelopp pour scuriser une voie point point (logiciel de communication Nicecom). Dans l'une des versions on utilise un algorithme de cryptographie cls publiques comme le RSA. Chaque utilisateur dispose donc au dpart d'un couple cl publique, cl prive pour un algorithme cls publiques RSA: Pour un utilisateur A: cl secrte DA et cl publique EA Pour un utilisateur B: cl secrte DB et cl publique EB Pour rendre excessivement difficiles les violations de scurit on dcide dans ce produit de pratiquer un changement priodique des cls de faon automatise (par change de messages en cours de dialogue). En fait les cls vont donc tre modifies priodiquement de sorte que l'on utilisera pour un site comme A une suite de couples de cls: (EA(0) = EA, DA(0) = DA ), puis (EA(1), DA(1)) , ....., puis (EA(i), DA(i)) , (EA(i+1), DA(i+1)) ,.... A l'instant initial A utilise (EA(0), DA(0)) et B connat EA(0) et symtriquement. B utilise (EB(0), DB(0)) et A connat EB(0). On veut atteindre les objectifs suivants: O1 : Authentification des correspondants. Dans les exemples traits A est l'appelant et B l'appel. CNAM- Anne 2007/2008 -38Exercices Technologie client-serveur

O2 : Confidentialit des informations qui circulent sur le rseau. O3 : Authentification de l'origine de tous les messages changs. O4 : Limitation de la dure d'usage des cls par changement priodique. Le logiciel considr utilise un protocole Px suivant entre les deux usagers A et B. Dans le schma suivant on ne dcrit pas compltement le rle de tous les messages et l'utilisation des variables changes (objet de questions du problme).

A
Choisir un nombre alatoire RA Envoyer [RA]

RA Recevoir [RA] Choisir un nombre alatoire RB Envoyer [DB{EA(RA),RB}]

DB{EA(RA),RB} Recevoir [DB{EA(RA),RB}] Dcoder RA et RB Envoyer [DA{EB(RB)}] DA{EB(RB)}

Recevoir [DA{EB(RB)}] Dcoder RB


Question 1 : Quel type de problme permet de rsoudre le protocole Px (justifiez votre rponse en discutant du fonctionnement du protocole Px en particulier du rle des nombres RA et RB)? Que pensez vous de l'efficacit de ce protocole pour rsoudre ce problme en termes de scurit et de performances? Question 2 : On prend le protocole Px comme base pour obtenir une version modifie Py permettant le changement scuris des cls c'est dire le passage du couple (EA(i), DA(i)) (EA(i+1), DA(i+1)) et galement du couple (EB(i), DB(i)) (EB(i+1), DB(i+1)). On suppose que les sites disposent d'algorithmes leur permettant de dterminer quand ils le souhaitent des couples cl publique, cl prive comme (EA(i+1), DA(i+1)) pour l'algorithme RSA. 2.1 Proposez des modifications du protocole Px pour dfinir le protocole Py qui assurent le changement scuris des cls. 2.2 Quelles cls change-t-on, quel moment, selon quel cryptage? Justifiez votre solution. On rappelle que la scurit de l'algorithme RSA repose sur le fait que les cls prives doivent rester confidentielles. CNAM- Anne 2007/2008 -39Exercices Technologie client-serveur

Question 3 : En quoi la technique de modification des cls applique rend t-elle extrmement difficile l'action des pirates. 3.1 On examinera d'une part le problme de dcryptage par un pirate qui essaierait de casser le code par analyse des messages changs. 3.2 On examinera ensuite le cas d'un pirate qui connatrait les cls initiales d'un utilisateur A ou B par des moyens autres que le dcryptage (ngligence de l'utilisateur). Que se passe-t-il? 3.3 L'accs au calculateur de l'metteur ou du destinataire en session distance constitue une possibilit d'attaque d'un tel protocole. Que doit faire un pirate qui a russi se connecter? 3.4 Quels sont les moyens matriels et logiciels qui protgent les systmes de ce type d'attaque? Questions 4: 4.1 Quand on est en phase i (avec les couples des cls (EA(i), DA(i)) (EB(i), DB(i)) ) comment sont assures la confidentialit et l'authentification des messages en mode RSA ? 4.2 Quel est l'inconvnient majeur de cette approche ? 4.3 Comment pourrait-on rsoudre ce dernier problme ?

CNAM- Anne 2007/2008

-40-

Exercices Technologie client-serveur

Exercice 18 : Commerce lectronique sur Internet: SET ("Secure Electronic Transactions")


Pour scuriser le commerce lectronique sur Internet le standard SET a t propos en 1996/1997. Il est soutenu par les principaux groupements de cartes bancaires Visa et Master Card ainsi que par de nombreux fournisseurs (IBM, Microsoft, ...). SET propose un ensemble de protocoles de scurit pour le paiement par carte bancaire sur Internet. Il utilise pour cela des techniques de cryptographie ( cls publiques RSA, cls secrtes DES, de fonction de hachage SHA-1). C'est une solution purement logicielle. Une vision simplifie de l'architecture de SET est donne par la figure suivante ou apparaissent les diffrents calculateurs de l'acheteur, du marchand, des banques ainsi qu'une passerelle faisant interface entre le monde Internet (utilisant le protocole SET) et le rseau bancaire.

Banque de l'acheteur Rseau du groupement bancaire (architecure Internet ou autre)

Banque du marchand

Passerelle de paiement

PC de l'acheteur Rsau des utilisateurs (architecture Internet avec protocoles SET)

Serveur du marchand

Le fonctionnement de base est analogue celui des cartes de crdits habituelles. L'acheteur connecte son poste de travail sur le serveur du marchand. Il consulte le catalogue des produits proposs, passe commande et autorise le paiement. Le marchand accepte la commande et la ralise. Le marchand pour se faire payer adresse sa banque l'autorisation de paiement de l'acheteur via la passerelle de paiement. On trouve donc trois protocoles essentiels dans SET: - Le protocole d'achat. - Le protocole d'autorisation de paiement. - Le protocole de paiement Voici (parmi de nombreuses autres) quelques rgles de scurit de base que les protocoles SET doivent respecter : a) L'acheteur et la passerelle de paiement doivent pouvoir vrifier que le marchand est bien celui qu'il prtend tre. Le marchand doit pouvoir vrifier que l'acheteur et la passerelle de paiement sont bien ceux qu'ils prtendent tre. CNAM- Anne 2007/2008 -41- Exercices Technologie client-serveur

b) Une personne non autorise ne doit pas pouvoir modifier les messages changs entre le marchand et la passerelle de paiement. c) Le marchand ne doit pas pouvoir accder au numro de la carte de l'acheteur. d) Le banquier na pas connatre la nature de la commande passe par lacheteur au marchand. 1) Les problmes de scurit associs aux rgles a) b) c) prcdentes sont des problmes gnraux traits en cours. Donnez pour les rgles a) puis b) puis c) les noms des problmes associs. Rappelez de manire succincte la dfinition de ces problmes (en une phrase). SET est un protocole applicatif, qui dfinit une politique de scurit. A partir des lments prcdents on cherche spcifier cette politique 2) Quels sont les quatre rles qui doivent tre considrs ? On dfinit les objets suivants a) b) c) d) e) f) La carte bleue Le PIN code de la carte bleue ("Personal Identification Number", le code secret) Le numro de la carte bleue L'identifiant de la commande Le contenu qualitatif de la commande (sa nature) Le prix de la commande

Selon le cas on dfinit pour les objets prcdents une ou plusieurs des mthodes suivantes: A. Crer B. Lire (connatre la donne) C. Accepter (signer la donne) 3) Pour chaque objet donnez les mthodes applicables (A, B ou C) 4) Etablir la matrice des droits: Il s'agit d'une matrice ayant en colonne (au nombre de 13) les mthodes et en ligne (au nombre de 4) les rles. Si un rle X a le droit d'utiliser la mthode y l'lment X,y est marqu 1 et n'est pas marqu sinon.

Pour mettre en oeuvre les protocoles de scurit utilisant la cryptographie SET dfinit une phase d'accrditation pralable des acteurs par une autorit de certification (en fait une hirarchie d'autorits).

CNAM- Anne 2007/2008

-42-

Exercices Technologie client-serveur

Autorit de certification

Acheteur

Marchand

P asserelle de paiement

Vue globalement, l'autorit de certification dlivre des certificats aux diffrents acteurs des protocoles SET. 5) Qu'est ce qu'un certificat? Quelles en sont les proprits principales? 6) On tudie maintenant le processus d'achat. Il se droule en deux changes requtes rponses successifs. Premier change (l'change initial) La requte initiale de l'acheteur vers le marchand indique simplement en clair l'intention par l'acheteur de passer commande. La rponse initiale du marchand comporte trois lments: - un identifiant de commande plus sa signature numrique - le certificat du marchand avec sa cl publique - le certificat de la passerelle de paiement avec sa cl publique. A la suite de ce premier change, quelles vrifications peuvent tre effectues par l'acheteur ? 7) Le second change du processus d'achat comporte l'envoi de la requte d'achat et une rponse d'accus de rception de commande. Envoi de la requte d'achat L'acheteur construit la structure de donne commande qui a vocation a tre communique au marchand (produits, quantits, prix avec l'identification de la commande fournie par le marchand pendant l'change initial...). Elle est baptise par la suite OI ("Order Information"). L'acheteur construit la structure de donnes de paiement qui a vocation a tre communique la passerelle de paiement (informations concernant la carte bancaire de l'acheteur et identification de la commande payer fournie par le marchand pendant l'change initial). Elle est baptise dans la suite PI ("Payment Information"). En fait les deux structures de donnes sont lies. Le paiement ne concerne que la commande identifie. Il doit tre effectu que si la commande est accepte par le marchand. La commande n'est effective que si la banque approuve le paiement. De plus le contenu de la commande doit tre cach la banque et le contenu des instructions de paiement doit tre cach au marchand. Pour lier les deux structures de donnes, l'acheteur calcule par l'algorithme SHA-1 la fonction de hachage de chacune des structures de donnes SHA-1(OI) et SHA-1(PI). Il applique nouveau la fonction de hachage SHA_1 l'ensemble (SHA-1(OI), SHA-1(PI)) des fonctions de hachage concatnes. Il chiffre cette dernire empreinte en RSA avec sa cl

CNAM- Anne 2007/2008

-43-

Exercices Technologie client-serveur

prive. C'est en fait une signature numrique double qui est ralise. Elle est baptise dans la norme SET signature duale. Signature duale =

{{{ OI}

SHA1

, { PI } SHA1} SHA1

clef _ prive _ acheteur RSA

Le message suivant est prpar pour la passerelle de paiement: PI, Signature duale L'acheteur choisit une cl alatoire cl_ala pour le DES. Le message a destination de la passerelle de paiement est chiffr en DES au moyen de cette cl. { PI, Signatureduale} cl _ala DES La cl DES est chiffre au moyen de la cl publique de la passerelle arrive avec le certificat de la passerelle. { cl _ ala} CLEF _ PUBLIQUE _ PASSERELLE RSA Finalement le message de requte d'achat envoy au marchand contient toutes les informations suivantes: { PI, Signatureduale} cl _ala , DES { PI} SHA1 , { cl _ ala} CLEF _ PUBLIQUE _ PASSERELLE , RSA OI, Signature duale, Certificat de l'acheteur. Envoi de la rponse du marchand la requte d'achat Le marchand construit un message de rponse qui a comme unique signification d'tre un accus de rception de la commande. Le marchand signe numriquement ce message(fonction SHA_1 et chiffre RSA avec sa cl prive). Il ajoute l'ensemble son propre certificat. 7.1) Comment le marchand vrifie t'il l'intgrit de la commande OI? 7.2) Comment est ralise la confidentialit des informations concernant la carte de crdit vis vis du marchand? 7.3) Comment le marchand vrifie t'il que l'acheteur est bien celui qu'il prtend tre?

CNAM- Anne 2007/2008

-44-

Exercices Technologie client-serveur

Exercice 19 : Authentification des usagers et autorisation des requtes dans le WEB


Le World Wide Web a tout dabord t conu comme un outil de diffusion de documents publics de sorte que peu defforts ont t effectus au dpart pour contrler laccs aux informations offertes. Comme un domaine de plus en plus large dinformations et surtout de services ont t distribus au moyen du WEB, des outils de scurit ont t proposs pour satisfaire les besoins qui sont apparus. Ce sujet examine des solutions successives qui ont t dveloppes dans le cadre du protocole HTTP pour rpondre aux besoins dauthentification des usagers et dautorisation des requtes quils mettent. La version 1.0 du protocole HTTP (HTTP/1.0 RFC 1945 mai 1996) propose un mcanisme de base de contrle daccs utilisant une authentification mot de passe (mcanisme basic). Si un utilisateur client requiert une page protge dun serveur WEB sans fournir de couple usager, mot de passe, il reoit en rponse un code derreur 401 (unauthenticated). Sur rception de ce diagnostic le navigateur du client demande alors lutilisateur un nom dusager autoris et son mot de passe au moyen dun dialogue interactif dans une fentre. Lorsquune rponse est fournie le navigateur client rmet la requte vers le serveur avec les informations usager:mot_de_passe. Lorsque lon met sur le rseau une requte avec le couple nom dusager et mot de passe, ces informations sont codes mais non cryptes (enregistrement de la requte baptis Authorization). La mthode de codage en format texte ascii employe est baptise Base64. Elle consiste essentiellement dcouper les informations par groupes de 6 bits et reprsenter les groupes de 6 bits par un caractre ASCII. Par exemple si on souhaite transmettre le couple usager:mot_de_passe "Aladdin:open sesame", il apparat dans la requte une ligne de la forme : Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== De la sorte, si les mots de passe ne sont pas immdiatement lisibles dans les requtes (human readable), il sont facilement dcodables par un programme de dcodage et peuvent donc tre connus de tout le monde (les mots de passe ne sont pas crypts). 1) Quels sont les avantages et les inconvnients en termes de scurit et de cot de mise en uvre dune telle approche dauthentification ? Le serveur WEB autorise une requte en consultant des fichiers crs par ladministrateur du serveur. Nous reprenons ici la protection de pages WEB par rpertoires telle quelle est dfinie dans le cadre de loutil NCSA Mosaic et reprise en version trs voisine dans le serveur Apache. Le systme dexploitation est le systme UNIX. Supposons que ladministrateur dun serveur WEB souhaite protger un rpertoire (baptisons le /mydir/turkey) contenant des pages WEB. Il doit crer dans ce rpertoire un fichier dont le nom par dfaut est .htaccess. Un exemple de fichier .htaccess est le suivant: AuthUserFile /otherdir/.htpasswd AuthGroupFile /dev/null AuthName ByPassword AuthType Basic <Limit GET PUT> require user daniel </Limit> CNAM- Anne 2007/2008 -45Exercices Technologie client-serveur

Dans la premire ligne de ce fichier on dcrit o se trouve le fichier des mots de passe. Il est ici baptis /otherdir/.htpasswd (cest un fichier qui a pour nom .htpasswd et qui se trouve dans le rpertoire otherdir). La seconde ligne indique quil nexiste pas de protection daccs au niveau groupe dutilisateurs, ce qui est indiqu par le fait que le fichier des protections de groupe est un flot vide (/dev/null). La chane associe la troisime ligne (mot cl AuthName) peut tre arbitrairement choisie par ladministrateur. Elle dfinit le nom du domaine auquel sapplique la politique de protection. Ce nom est transmis par le serveur au navigateur et il est affich lors des demandes de mots de passe. Il permet lusager de savoir quel nom dusager et quel mot de passe fournir (en fonction du domaine accd). Ici le nom du domaine est un nom passe partout Bypassword. La ligne AuthType (type dauthentification) dfinit le protocole dauthentification comme tant Basic cest--dire celui que nous tudions ici. Dautres authentifications sont utilisables (PGP, KerberosV4, KerberosV5, ou Digest que nous examinons plus loin). On voit ensuite que dans ce fichier exemple seules les requtes GET et PUT sont autorises (enregistrement Limit GET PUT). On aurait pu dfinir ici une authentification pour dautres oprations du protocole HTTP. Ici, lautorisation est prvue uniquement pour lusager daniel. Il faut bien sur crer le fichier /otherdir/.htpasswd de mots de passe. Il contient des enregistrements de la forme usager:mot_de_passe. Les serveurs WEB disposent doutils pour crer simplement par des dialogues interactifs ces fichiers de protection. 2) On suppose que ladministrateur du serveur WEB doit protger dautres pages WEB qui ont t cres dans un autre rpertoire /mydir/goose. Ces pages appartiennent un nouveau domaine baptis realm. Ladministrateur souhaite protger laccs ces pages WEB en autorisant lusager daniel pour les oprations GET, PUT et POST , et lusager laurent uniquement pour les requtes GET sur ces nouvelles pages. Quels sont les fichiers qui doivent tre crs et quel endroit doivent til se trouver? Quand on ralise un service daccs distant en rseau comme telnet ou de transfert de fichiers comme ftp, on commence par une ouverture de connexion (login process) pendant laquelle on ralise une authentification de lusager. Cette authentification demeure effective pendant toute une priode considre comme formant un tout du point de vue de la protection. Pendant une telle session un usager peut raliser un ensemble doprations puis fermer la session quand bon lui semble. 3) Le protocole HTTP est il conu selon le principe prcdent, cest dire que laccs un ensemble de pages, dimages dun serveur forme un tout ou bien chaque accs est-il considr comme indpendant des autres comme cest le cas pour un serveur sans tat (le serveur est il avec ou sans tat) ? 4) Quelles sont les consquences du choix prcdent relativement au problme dauthentification (quelle technique peut-on proposer cot navigateur client pour simplifier la vie de lusager sa console) ? A la version 1.1 du protocole HTTP (HTTP/1.1 RFC 2068 janvier 1997) est associe un autre protocole dauthentification baptis message digest authentication dfini par la RFC 2069 janvier 1997. Des amliorations ont encore t apportes au protocole de la version digest par la RFC 2617 juin 1999. On dfinit ici les principes gnraux de la solution sans entrer dans les dtails. Lorsquune rponse dun serveur WEB une requte dun navigateur client est un rejet (code 401 unauthenticated), la rponse du serveur contient un champ particulier baptis nonce qui CNAM- Anne 2007/2008 -46Exercices Technologie client-serveur

contient une valeur alatoire la discrtion du serveur. Ce message de rejet devient alors ce que lon appelle un challenge. Au lieu de rpondre par le nom dusager et le mot de passe, le navigateur client doit alors rpondre par un nom dusager et la place du mot de passe la valeur : MD5( concat ( nom dusager, mot de passe, nonce ) ) Dans lexpression prcdente, concat dsigne loprateur de concatnation. On voit donc que le navigateur ayant obtenu un nom dusager et un mot de passe doit fabriquer un texte qui concatne le nom dusager, le mot de passe et le nonce. Ensuite il lui applique la fonction MD5 qui dfinit une fonction de hachage sens unique. Le rsultat est la valeur transmise ( la place du mot de passe). La RFC 2069 propose dutiliser par dfaut dans le protocole dauthentification de type digest la fonction MD5 (Message Digest version 5). Dautres fonctions de hachage sens unique peuvent tre ngocies. 5) Rappelez la dfinition dune fonction de hachage sens unique. 6) Comment le serveur WEB ralise la vrification de lautorisation daccs une page WEB protge (le navigateur client ayant envoy une requte avec nom dusager, MD5( concat ( nom dusager, mot de passe, nonce ) ) comme expliqu plus haut) ? 7) Pourquoi avoir appliqu la fonction MD5 au mot de passe et en mme temps au nonce (quest ce que cela apporte en termes de scurit) ? 8) La mthode de vrification permet-elle de stocker les mots de passe dans le fichier des mots de passe sous une forme crypte (comme dans les fichiers de mot de passe daccs un systme UNIX) ou bien doit-on avoir sur le serveur le fichier des mots de passe en clair ? Quelle est la consquence relativement la scurit de la mthode? La valeur du nonce dpend de limplantation du serveur (implementation dependent). La norme suggre nanmoins pour assister les implanteurs de serveurs WEB une valeur de nonce qui peut-tre recalcule, de manire ce que la valeur obtenue soit identique (presque toujours) entre un challenge et sa rponse. Nonce = MD5 ( concat (adresse_IP, ":", estampille , ":", cl_prive) ) Adresse_ip est ladresse IP de la machine du client. Estampille est une valeur dpendante du temps qui ne change pas trs souvent. Cl_prive est une valeur secrte du serveur. 9) Pourquoi choisir une estampille temporelle qui ne change pas trs souvent ? Quel est le risque encouru par cette mthode? 10) Pourquoi avoir choisi dintroduire dans le nonce ladresse IP du client, une estampille temporelle, un secret (en quoi le choix des valeurs utilises dans le nonce limite til le risque encouru) ?

CNAM- Anne 2007/2008

-47-

Exercices Technologie client-serveur

Exercice 20 : S/MIME
S/MIME ('Secure/Multipurpose Internet Mail Extensions') dfinit un ensemble de standards pour transmettre de manire scurise des documents au format MIME. 1) Rappelez l'objectif poursuivi par la dfinition du format MIME. Citez deux grandes applications de l'Internet qui utilisent le format MIME. S/MIME offre les grandes catgories de services de scurit suivantes: authentification, intgrit, non-rpudiation, confidentialit. Pour cela il permet de transfrer de nouveaux types d'attachements qui sont des parties scurises. Une partie scurise est elle mme une partie MIME (En tte + corps). On distingue trois types de parties dans le domaine de la scurit pour lesquelles le standard dfinit un format prcis (CMS Cryptographic Message Syntax en S/Mime version 3): Partie signer ou chiffrer ('data') Partie chiffre ('envelopped data') Partie composant la signature dun texte en clair ('siagned data') 2) A quoi sert chaque nouveau type ? Un document sign est dcrit en ASN1 par la dfinition suivante: SignedData ::= SEQUENCE { version Version, digestAlgorithms DigestAlgorithmIdentifiers, contentInfo ContentInfo, certificates [0] IMPLICIT ExtendedCertificatesAndCertificates OPTIONAL, crls [1] IMPLICIT CertificateRevocationLists OPTIONAL, signerInfos SignerInfos } 3)Que peuvent contenir et quels sont les usages des variables dont les types sont: DigestAlgorithmIdentifiers ExtendedCertificatesAndCertificate CertificateRevocationLists 4) Lorsque l'on transmet un document chiffr il est possible de le compresser galement. Dans quel ordre effectue t'on les oprations: chiffrer, compresser, encoder en ASCII? (Justifiez votre rponse).

CNAM- Anne 2007/2008

-48-

Exercices Technologie client-serveur

Exercice 21 : Scurisation des communications en Internet avec SSL-TLS


SSL (Secure Sockets Layer), est une norme de rseau qui permet de scuriser les communications pour des applications Internet utilisant TCP/IP. SSL offre un service de communication analogue celui des sockets mais SSL ajoute aux communications standards des fonctions de scurit (authentification du client par le serveur, du serveur par le client, intgrit, confidentialit des donnes changes) et ventuellement aussi des fonctions de compression. Dvelopp par Netscape jusqu la version 3.0 (novembre 1996), lIETF a alors adopt SSL et a prsent sa version baptise TLS (Transport Layer Security RFC 2246 en 1998) compatible avec SSL 3.0. Par rapport SSL, TLS offre quelques extensions mineures comme une amlioration des signatures, diffrents traitements derreurs supplmentaires, ... En ce sens TLS 1.0 est parfois dsign comme SSL 3.1. SSL/TLS est dcoup en deux grandes parties. La partie Handshake assure les fonctions initiales dun change scuris. La partie Record assure les fonctions de scurit sur les donnes utilisateur en appliquant des approches de cryptographie et de signatures dfinies pendant la phase de Handshake. Ce problme tudie plus particulirement la partie Handshake. La partie Handshake de SSL/TLS permet dtablir le contexte de scurisation utilis ensuite dans la phase dchange de donnes. La partie Handshake permet lauthentification des entits communicantes. Elle permet galement lchange de cls de session. Un contexte de scurisation comporte : - Un identifiant de session scurise choisi par le serveur. - Un certificat dentit distante (optionnel). - Une mthode de compression (si la compression est applique). - La suite cryptographique utilise (voir plus loin). - Une cl secrte (master secret 48 octets partags entre client et serveur). - Une variable indiquant si la session peut couvrir plusieurs connexions TCP. Les oprations principales du protocole Handshake sont : 1. Ngocier la suite cryptographique utilise pendant le transfert des donnes. 2. Etablir une cl de session partage entre le client et le serveur 3. Authentifier le serveur par le client (optionnel). 4. Authentifier le client par le serveur (optionnel). En SSL/TLS une suite cryptographique est un choix relatif aux lments suivants : - La mthode dchange de cls. - La mthode de chiffrement utilise pendant le transfert des donnes. - La mthode de hachage utilise pour la cration dune signature. La mthode dchange de cls peut se faire de deux faons. Lune utilise les algorithmes cl publique et la notion de certificat. Une autre mthode est prvue en labsence de certificats : la mthode de Diffie-Hellman. Le chiffrement est ralis au moyen dun algorithme cl secrte. Neuf algorithmes cl secrtes avec des variantes sur les longueurs de cls sont possibles (DES, Triple-DES, IDEA, etc) La fonction de hachage sens unique (Digest Function) peut galement tre slectionne (MD5, SHA-1)

CNAM- Anne 2007/2008

-49-

Exercices Technologie client-serveur

En combinant les diffrentes choix possibles dans les trois domaines prcdents, la norme dfinit 31 suites de chiffrement cohrentes qui peuvent tre adoptes aprs ngociation. 1) Du point de vue du modle OSI on considre que SSL-TLS est de niveau session alors que linterface socket standard nest pas de niveau session. Pourquoi ? 2) La plupart des utilisations de SSL/TLS comporte lauthentification du serveur par le client (bien que les fonctions dauthentification soient optionnelles). Citez une application de cette authentification. De manire gnrale pourquoi est il important dauthentifier un serveur ? 3) Pour un serveur, il est galement possible avec SSL-TLS dauthentifier le client. Citez une application de cette authentification. De manire gnrale quelle est lutilisation de cette authentification. 4) Le protocole SSL/TLS propose, dans lune de ses modalits, dutiliser la notion de certificat. Cette approche est dailleurs de loin la plus souvent retenue. A quoi sert un certificat. Rappelez les principaux champs dun certificat ? 5) La vrification dun certificat comporte diffrentes tapes. Quels sont les traitements raliser pour vrifier un certificat ? 6) Rappelez les principes dune authentification en utilisant un algorithme cls publiques ? Les changes du protocole Handshake sont assez complexes. En particulier ce protocole dpend des techniques de scurisation utilises (dfinies par le contexte de scurisation ngoci). On prsente les principaux lments du fonctionnement du protocole Handshake en omettant beaucoup de dtails pour simplifier. Lchange suivant est utilis en cas dauthentification dans les deux sens au moyen de certificats. Ce protocole ngocie le contexte de scurisation, change les certificats et les valide, construit un secret partag sur 48 octets (master secret) qui permet de fabriquer des cls de session et il change des messages de terminaison.

Client

Serveur

ClientHello(protocolVersion, random, sessionID,Ciphersuite, compressMethod) ServerHello(protocolVersion, random, sessionID,Ciphersuite, compressMethod) quest Certificate () CertificateRequest () Certificate () ClientKeyExchange () Finished() CNAM- Anne 2007/2008 -50-

Finished() Exercices Technologie client-serveur

Explications des changes 1) La premire phase (messages ClientHello, ServerHello) correspond la ngociation du contexte de scurisation. Le client envoie diffrentes informations proposant un contexte de scurisation (premier message avec version du protocole SSL, un nombre alatoire, un nonce, une suite cryptographique, une mthode de compression). Le serveur choisit les valeurs dfinitives du contexte de scurisation acceptable en fonction de la proposition client (second message). Il fournit galement un nombre alatoire. 2) Dans le cas dune authentification du serveur, le serveur fournit son certificat (message Certificate). Il demande le certificat du client sil y a aussi authentification du client (message CertificateRequest). 3) Le client valide le certificat du serveur. 4) Le client envoie son certificat au serveur. Il cre un secret au moyen dun gnrateur de nombres alatoires (pre master secret). Le client lenvoie au serveur encrypt avec la cl publique du serveur (message ClientKeyExchange). Le client gnre le secret partag (master secret) partir du pre master secret et des deux nombres alatoires changs dans les deux premiers messages. 5) Le serveur valide le certificat client. Il dcrypte le secret (pre master secret) envoy par le client au moyen de sa cl prive. Il gnre selon le mme algorithme que le client le mme secret partag (master secret). 6) En utilisant le secret maintenant partag (master secret), le client et le serveur gnrent chacun de leur cot la mme cl secrte de session utilisable pour des algorithmes cls prives (comme le DES). 7) Le client et le serveur changent des messages de terminaison (Finished) chiffrs au moyen de la cl secrte de session. Ces messages indiquent que le protocole de Handshake est termin et que les changes auront lieu partir de maintenant en utilisant le contexte de scurit ngoci. Ces messages doivent tre dchiffrs et vrifis. Question 7) Quels sont les mcanismes du protocole lauthentification du serveur vis vis du client? Handshake qui assurent

8) Le protocole SSL utilise une combinaison de mthodes de cryptographie qui comprend des algorithmes cls publiques et des algorithmes cls prives. Pourquoi utiliser concurremment les deux techniques?

CNAM- Anne 2007/2008

-51-

Exercices Technologie client-serveur

Exercice 22 : Protocole de micro-paiement sur Internet


Dans ce problme Bob souhaite faire raliser n oprations successives par Alice. Ces oprations ont la particularit d'tre toutes les mmes et d'avoir les mmes paramtres. En fait nous allons utiliser dans la suite du problme ces oprations pour des paiements de sommes trs faibles sur Internet (par exemple une somme fixe d'un centime d'euro chaque opration). Alice souhaite authentifier lmetteur dune opration (ici cest Bob) chaque opration. 1) Quels sont les avantages et les inconvnients dune authentification unique en dbut dune session (comme dans le protocole telnet) et dune authentification pour chaque opration (authentification en continu) ? Dans ce problme nous supposons que pour lauthentification en continu, Bob et Alice ont pralablement chang une clef secrte C comportant k bits. H est une fonction de hachage de scurit qui a t ngocie entre Alice et Bob, est le ou exclusif, s est un nombre alatoire sur k bits (nombre alatoire de scurit qui est diffrent chaque authentification). On note{C s}H le rsultat de lapplication de la fonction de hachage H au ou exclusif de C et de s. On note un message : metteur, destinataire, type du message, donnes. De manire dcomposer la solution on l'tudie progressivement. Dans une premire tape on considre le cas dune seule opration (donc n=1). Le protocole appliqu est le suivant: Bob Bob gnre un nombre alatoire s sur k bits; il calcule h1 = {C s}H Rseau Alice

Bob, Alice, 'Transmission du nombre s sur k bits', s Bob demande Alice la ralisation de lopration Bob, Alice,'Demande opration', h1 Alice vrifie que h1 = {C s}H Si oui Alice ralise lopration

2) Quelles sont les proprits des fonctions de hachage de scurit ? 3) Pourquoi Estelle ne peut, en coutant les messages qui circulent entre Alice et Bob, accder la cl secrte C partage par Alice et Bob ? 4) Comment Alice peut-elle authentifier Bob ? 5) Comment s'appelle la technique de chiffrement utilise dans ce protocole ? CNAM- Anne 2007/2008 -52Exercices Technologie client-serveur

On considre maintenant le protocole suivant dfini pour n oprations successives :

Bob Bob gnre s alatoire sur k bits et calcule : h0 = C s h1 = {h0}H


.

Rseau

Alice

hi = {hi-1}H .. hn= {hn-1}H Bob conserve la suite h1 , . hi, , hn 2 Bob, Alice, 'demande prliminaire d'ouverture de n oprations', s Alice calcule la suite h0 = C s h1 = {h0}H
.

hi = {hi-1}H .. hn+1= {hn}H Alice dtruit les hi et ne conserve que hn+1 4 Demande de la premire opration Bob, Alice, 'demande d'opration', hn Authentification de Bob ? Ralisation de lopration 1 si OK

. 2+ Demande de la ime 2i opration (i n) 2+ 2i +1

.. Bob, Alice, 'demande d'opration', hn-i+1

Authentification de Bob ? Ralisation de lopration i si OK

6) Bob mmorise toute la suite des hi quil prsente un par un chaque opration en commenant par hn puis hn-1. puis hn-i+1.. Alice mmorise une seule valeur en commenant par hn+1 quelle remplace ensuite par hn puis hn-1 et ainsi de suite chaque nouvelle opration. Quelle est la vrification ralise par Alice pour authentifier Bob aux tapes 5 et 2+2i+1 ? CNAM- Anne 2007/2008 -53Exercices Technologie client-serveur

7) Expliquez pourquoi Estelle, qui observe ce protocole ne peut aucune tape en tirer des informations suffisantes pour pouvoir usurper lidentit de Bob.

Supposons que lon se place dans une approche de cryptographie cl publique. Alice et Bob disposent donc de couples cl publique, cl prive et de certificats accessibles dans un annuaire de certificats. Pour raliser le protocole prcdent dauthentification, dans une tape pralable, Alice et Bob doivent sauthentifier en utilisant un protocole clef publique. Alice doit gnrer la cl secrte C et doit lenvoyer Bob en utilisant galement la mthode cls publiques. 8) Donnez une solution pour cette authentification mutuelle et pour l'change de cl C. Quel(s) protocole(s) de l'Internet pourrait servir faire ces authentifications ? Supposons que Alice soit une banque et Bob un de ses clients. On utilise maintenant le protocole prcdent pour faire des micro paiements. Un protocole de micro paiement est un protocole permettant de dbiter des sommes trs faibles pour des applications de consultation payantes sur Internet (lire une page d'un document ou dun journal par exemple). On suppose que n reprsente une somme en centimes d'euro (n = 1000 centimes par exemple). Cette somme est dbite du compte courant de Bob au dbut et crdite un compte "de micro paiement" utilisable par Bob. On suppose que chaque dbit de micro paiement vaut un centime, ce centime est dbit du compte de micro paiement de Bob lors de la ralisation par Alice dune opration. Chaque opration du protocole prcdent est donc un paiement d'un centime. Quand le compte de micro paiement est vide, Bob doit alimenter nouveau son compte de micro paiement et Alice et Bob recommencent toute une autre srie doprations de micro paiement. Si Bob dcide de ne plus payer de cette faon, alors que son compte de micro paiement n'est pas vide, son compte courant est crdit du solde du compte de micro paiement. 9) Expliquez pourquoi Bob ne peut pas faire de la fausse monnaie (chaque centime est identifi, ne peut tre rejou). 10) Expliquez pourquoi Estelle ne peut se substituer Bob pour utiliser le compte de micro paiement de Bob. 11) Quel est l'avantage de ce protocole par rapport un paiement qui utiliserait chaque tape une authentification selon les mthodes habituelles (par exemple utilisation de SSL pour les paiements par carte bancaire sur Internet).

CNAM- Anne 2007/2008

-54-

Exercices Technologie client-serveur

Exercice 23 : Scurisation du DNS : les normes DNSSEC-1


De nombreuses attaques dans le rseau Internet sont conduites en utilisant les faiblesses en matire de scurit du DNS dans sa version de base (non scurise). En effet, cette version qui est encore pratiquement la seule utilise ne possde aucun mcanisme de contrle dintgrit ou dauthentification. Par exemple, si un attaquant arrive modifier les informations fournies par un serveur DNS ou par un cache DNS, il peut remplacer ladresse dune machine rendant un service normal par ladresse dune autre machine contrle par lui. Avec cette nouvelle machine qui va recevoir toutes les requtes, un pirate peut raliser diffrents types dattaques (espionnage, dguisement, attaque par le milieu). Lun des problmes essentiels tous les niveaux dans le DNS est donc le maintien de lintgrit des informations gres et transmises par les diffrentes entits DNS. Cest lobjet de propositions runies sous le nom densemble DNSSEC (pour DNS SECurity extensions). Les normes DNSSEC sont encore en volution. Nous tudions dans ce problme leur premire version. 1) Dans le DNS rappelez le rle des diffrentes entits communicantes suivantes: serveur primaire, serveur secondaire, cache et rsolveur ? 2) Rappelez les grandes lignes des diffrents protocoles de communications que le DNS dfinit entre les diffrentes entits prcdentes : serveur primaire, serveur secondaire, cache et rsolveur.

TSIG (Transaction Signature RFC 2845)


Lune des solutions, propose pour la scurisation du DNS dans le cadre DNSSEC, est baptise TSIG. TSIG sapplique aux messages changs par les protocoles DNS en dfinissant une signature ajoute ces messages. TSIG permet dauthentifier lentit DNS mettrice et permet de signer en intgrit des donnes fournies par cette entit DNS en utilisant une fonction de hachage et une mthode de cryptographie symtrique ( cl secrte). Pour les besoins du protocole TSIG, on rajoute deux informations dans chaque message mis. Tout dabord on rajoute la date et lheure de lmission du message (chaque message est horodat au moyen de lhorloge temps rel de la machine mettrice). On rajoute surtout dans chaque message protg, une signature calcule au moyen de la cl secrte et d'une fonction de hachage scuritaire selon la mthode HMAC sur laquelle nous revenons plus loin. La RFC recommande dutiliser une cl secrte par paire de communicants. Pour distinguer les diffrentes cls utilises, chaque cl possde un nom logique qui doit tre connu de lmetteur et du destinataire. Ce nom est transmis dans chaque message scuris afin de dterminer la cl utilise lmission et utiliser par le rcepteur. 3) Compte tenu des principes gnraux de fonctionnement de TSIG qui viennent dtre dcrits, entre quelles entits communicantes dans le DNS le protocole TSG vous semble til le mieux adapt (justifiez votre rponse) ? 4) Pourquoi le protocole TSIG a-t-il prvu un horodatage des messages au moyen de la date et de lheure dmission de chaque message? Quel contrle est effectu par un rcepteur de message? Expliquez pourquoi le champ d'horodatage doit tre sign ?

CNAM- Anne 2007/2008

-55-

Exercices Technologie client-serveur

5) Quelles proprits doivent vrifier les horloges de chaque entit DNS pour que les contrles d'horodatage soient efficaces? Quel protocole complmentaire TSIG doit on absolument mettre en uvre pour que lhorodatage fonctionne correctement ? De manire gnrale on appelle en scurit MAC (Message Authentication Code), une information rajoute un message qui sert de signature en intgrit en utilisant une fonction de hachage et une cl secrte. HMAC signifie Keyed-Hashing Message Authentication Code. HMAC est une mthode particulire de construction dun MAC. HMAC est dfini par la RFC 2104. Cest une mthode de signature assez largement utilise (IPSEC, SSL, DNSSEC). Pour construire une signature HMAC on utilise une cl secrte note K et une fonction de hachage de scurit note H. Il peut sagir par exemple de MD5 ou de SHA-1. De la sorte on a des HMAC-MD5 ou des HMAC-SHA-1. Comme H nest pas unique on note B le nombre doctets gnr pour chaque hachage (par exemple avec des condenss de 128 bits on a donc B=16 octets). Si la cl K est trop courte (elle fait moins de B octets) on la complte avec des 0. Si la cl K est trop longue elle est tronque B octets par application de la fonction H. On dfinit deux chanes de B octets utilises pour faire du bourrage (padding): Ipad = 0x36 rpt B fois (l'octet 36 en hexadcimal rpt B fois). Opad = 0x5C rpt B fois (l'octet 5C en hexadcimal rpt B fois). La signature HMAC pour un message M est donne par: HMAC(M) = H ( K XOR Opad || H ( K XOR Ipad || M ) ) Dans lexpression prcdente, XOR est loprateur de ou exclusif. La double barre || indique la concatnation. De manire expliciter autrement la signature HMAC on peut encore dire quelle est obtenue au moyen des tapes suivantes de calcul: A. Si K fait plus de B octets calculer K = H(K). B. Si K fait moins de B octets ajouter des 0 K de faon ce que K soit de longueur B. C. Calculer K XOR Ipad. D. Concatner le message M au rsultat de 3. E. Appliquer H au rsultat de 4. F. Calculer K XOR Opad. G. Concatner le rsultat de 5 au rsultat de 6. H. Appliquer H au rsultat de 7. 6) La cl K est une cl secrte. Quelles prcautions doit-on prendre concernant sa longueur, sa gnration et son stockage? 7) Sur quelles proprits de H reposent la scurit du mcanisme de signature en intgrit HMAC? 8) Rappelez la mthode classique de signature vue en cours? Quel est l'avantage de HMAC en terme de performance par rapport la mthode classique de signature?

Nouveaux enregistrements ressources KEY, SIG (RFC 2535 2539)


Une autre solution propose dans le cadre DNSSEC pour lauthentification et lintgrit repose sur la cration de deux nouveaux types denregistrements ressources (KEY et SIG) qui peuvent tre stocks dans une base de donnes DNS. Lenregistrement KEY a pour objectif de stocker des cls selon un format propre au DNS. Comme lutilisation de cls ne concerne pas uniquement le DNS, lenregistrement KEY CNAM- Anne 2007/2008 -56Exercices Technologie client-serveur

peut aussi servir pour dautres protocoles de scurit (au niveau rseau avec IPSEC, au niveau transport avec TLS ou au niveau application avec SMIME). La structure de lenregistrement KEY est la suivante : {Nom , TTL, Classe=IN, Type=KEY, (Indicateurs, Protocole, Algorithme, Valeur de cl)} - Un nom denregistrement KEY peut appartenir diffrents types permettant diffrentes utilisation de la cl. Dans le cas le plus usuel (scurisation du DNS), il sagit dun nom de zone DNS pour lequel on dfinit une cl (par exemple cnam.fr). Un nom denregistrement KEY peut galement tre un nom de machine ou un nom dutilisateur. - Les indicateurs (flags) dfinissent diffrents champs prcisant lutilisation de la cl (quel est le type du champ nom, ) - Le champ protocole dfinit le protocole de scurit utilisant la cl (par exemple 3 : DNSSEC, ) - Le champ algorithme dfinit lalgorithme de chiffrement auquel est destin la cl (par exemple 3 : DSA ). - La valeur de la cl (code au format base 64). Lenregistrement ressource SIG est plac aprs un enregistrement ressource donn. Il contient une signature pour cet enregistrement ressource. La technique de signature est la technique habituelle (ce nest pas une signature HMAC). De la sorte, on peut interroger un serveur DNS sur un enregistrement ressource (mode de fonctionnement de base) mais on peut aussi demander la signature de cet enregistrement ressource. Pour amliorer les performances on peut aussi enregistrer une signature pour un ensemble denregistrements ressources. La structure de lenregistrement SIG est la suivante : {Nom , TTL, Classe=IN, Type=SIG, (Type de lenregistrement sign, Algorithme, TTL dorigine, Date dchance, Date de signature, Empreinte de la cl, Autorit signatrice, Signature)} - Type de lenregistrement sign (par exemple SOA). - Champ algorithme (dfinit les algorithmes utiliss pour gnrer une signature). - TTL dorigine (dfinit le TTL de lenregistrement sign). - Date d'chance (la date limite dutilisation dune signature). - Date de signature (dfinit la date de cration de la signature). - Empreinte de la cl (dfinit un rsum, une empreinte de la cl utilise). - Autorit ayant sign (dfinit le nom de lautorit qui a gnr la signature). - Valeur de la signature (code au format base 64). 9) A quel type dalgorithme de chiffrement est selon vous destin lenregistrement KEY. 10) Avec les nouveaux enregistrements KEY et SIG comment se passe une requte daccs scurise dans le DNS? 11) Les enregistrements KEY sont des enregistrements ressources qui peuvent tre protgs aussi par un enregistrement SIG ? A quoi sert lenregistrement SIG dans ce cas ? 12) Une ide qui a t propose pour vrifier une cl est dutiliser la hirarchie de nommage du DNS comme hirarchie des autorits de certification. Selon cette approche comment fonctionnerait alors la vrification dune cl (par exemple si un enregistrement est sous l'autorit d'une zone iie.cnam.fr, quels sont les niveaux d'autorits impliqus dans le contrle de cet enregistrement, quels sont les contrles raliss par le destinataire)? 13) Les champs date dchance de signature et date de signature de lenregistrement montrent que la validit dune signature dpend du temps. Pourquoi? Quel protocole est indispensable pour valider correctement les signatures ?

CNAM- Anne 2007/2008

-57-

Exercices Technologie client-serveur

TROISIEME CHAPITRE EXERCICES APPLICATIONS REPARTIES


Exercice 1 : Systme de fichiers rpartis NFS et rplication
On souhaite modifier le systme de fichiers rpartis NFS de manire permettre pour certains fichiers d'un type particulier l'existence de plusieurs copies des disques diffrents afin d'avoir une meilleure tolrance aux pannes. On aura donc par exemple la configuration suivante pour deux copies:

copie 1

copie 2

NFS

NFS

Systme d'archivage

numro 1

Systme d'archivage

numro 2

Calculateur utilisateur

NFS

Processus utilisateur

Dans tout le texte qui suit on considre pour simplifier que les fichiers ne sont pas partags entre plusieurs utilisateurs. Question 1 1.1 Rappelez les principes gnraux du fonctionnement de NFS 1.2 NFS est un systme de fichiers rpartis "sans tat". Rappelez les principes essentiels du fonctionnement "sans tat" en particulier comment sont excutes les requtes successives sur les systmes d'archivages. 1.3 Le mode de fonctionnement "sans tat" autorise une technique simple de traitement des pannes du serveur au niveau du RPC. Quelle est -elle ? Expliquez pourquoi elle est tout fait adapte au mode "sans tat". CNAM- Anne 2007/2008 -58Exercices Technologie client-serveur

Question 2 Dans le systme de fichiers rpliqus bas NFS proposez une mthode efficace pour la ralisation des oprations de lecture. Question 3 Proposez une mthode de ralisation de l'opration d'criture qui utilise une diffusion de la requte tous les systmes d'archivages.

Exercice 2 :Dsignation des fichiers dans le systme de fichiers rpartis NFS


NFS (Network File system) est un systme de gestion de fichiers rpartis. L'arborescence de fichiers, rpartie physiquement sur plusieurs machine et accessible par l'usager depuis son poste de travail, est construite en utilisant une technique de montage d'arborescence. La vision qu'a un utilisateur de l'arbre des fichiers est donc une vue logique et locale sa machine de travail. 1 - Rappelez brivement les principes du montage d'arborescence . 2 - Les principes de dsignation des fichiers dans NFS dcoulent de l'utilisation du montage d'arborescence. Rappelez brivement ces principes de dsignation sur lequel s'appuie NFS . 3 - Quels sont les avantages et les inconvnients de ce systme de dsignation ? . Soit la configuration :
a b
C

u c v
S1

x w y
S2

On dispose des oprations suivantes : . une opration "monter" permet d'attacher des arborescences d'une machine serveur sur une machine client: monter <serveur> : <chemin absolu d'un rpertoire> sur <chemin absolu d'un rpertoire local au client> exemple : sur le site C, l'opration donne : monter S1:/u sur /a/c

CNAM- Anne 2007/2008

-59-

Exercices Technologie client-serveur

a b
C

u c v
S1

vue logique s ur C :

Lors du montage, les deux nuds u et c concident. C'est le nud local (ici c) qui impose son nom, mais le contenu de c correspond maintenant au contenu de u (v et w ici), les anciens fichiers de c ne sont plus visibles. . une opration qui permet de lister le contenu d'un rpertoire : contenu <chemin d'accs un rpertoire> Rappelons que comme dans tout systme de fichiers arborescent un chemin d'accs peut tre dfini en absolu. Par exemple sur la machine C si le rpertoire courant est b, "contenu /a/c" donne l'utilisateur ce que contient le rpertoire u soit "v,w". Le chemin d'accs peut tre dfini en relatif par rapport la position courante. La position courante tant le rpertoire a, la commande "contenu ./c" donne le mme rsultat que prcdemment (le point "." dsigne le rpertoire courant d'o l'utilisateur excute la commande).

4 - On considre la suite de commandes 1 Sur le site C : monter S1:/u sur /a/c Sur le site C : monter S2:/x sur /a/c/w Quel est le rsultat de cette suite de commandes ? Quelle est l'arborescence vue par le client C? Commentez votre rponse. Quel est le rsultat de la commande "contenu /a/c "? 5 - On considre la suite de commandes 2 (par rapport la mme situation initiale que la question prcdente) Sur le site S1 :monter S2:/x sur /u/w Sur le site C : monter S1:/u sur /a/c Quel est le rsultat de cette suite de commandes vu par le client C. Commentez votre rponse. Quel est le rsultat de la commande "contenu /a/c" ? 6 - On cherche les principes d'un algorithme permettant le parcours du chemin d'accs un fichier (celui-ci tant dfini en absolu) 6. 1 - Donnez brivement les principes d'une solution itrative de parcours d'un chemin d'accs un fichier. 6. 2 - Donnez brivement les principes d'une rsolution rcursive du chemin d'accs un fichier. Sachant que NFS utilise une technique de montage d'arborescence, et qu'une machine client NFS conserve en mmoire la liste des points de montage, que pensez-vous de l'application d'une mthode de rsolution rcursive dans NFS.

CNAM- Anne 2007/2008

-60-

Exercices Technologie client-serveur

Exercice 3 : Messagerie X400


Question 1 Rappelez l'organisation de la messagerie X400. Quel est le rle des diffrents modules : * UA (User Agent) - Agent utilisateur * MS (Message Store) - Mmoire de messages * MTA (Message Transfert Agent) - Agent de transfert de messages. Question 2 Donnez les principaux champs ou attributs d'une adresse X400 que vous connaissez. Question 3 Dans la suite on trouve une trace de fonctionnement d'une messagerie X400. Donnez l'origine des messages ci-aprs et l'ensemble des pays traverss. La partie importante dun message est mise en gras a) message reu sur une machine fonctionnant avec le systme VMS DUPONT (ATLAS@METIS) opened 20-AUG-1992 11:22:24.92 Message 3 blocks From: (C=fr,ADMIN_DOM=atlas,PRIVATE_DOM=cnam,ORGA=cnam400,SURNAME=dup ont) From Telephone: From Location: Subject : TESTS X400 This Recipient Type : To Alternate Recipient : No Return Contents : Yes Disclose Recipients : No IP MessageID : A.098738 UA Content ID : Message ID : 11711102802991/117002@EAGLE11=FR,2=ATLAS,3=CNAM In Reply To : Deliver Date : 20-AUG-1992 11:22:24.92 Expiry Date : 19-SEP-1992 11:17:10.00 Posted Date : 20-AUG-1992 11:20:54.00 Reply by : Priority : First_Class Receipt req'd : Yes Sensitivity : Personal Reply request : Yes Importance : High Delivery req'd : Full Auto Forwarded: No Prohibit Conv : No Obsoletes : Cross Ref's : To : 1 (DURAND@AM@VCNAM) 2 (NGUYEN@AM@PALLAS) CC : BCC : Authorizing Users : Reply To Users : DEUXIEME ESSAI X400, LE PREMIER A ECHOUE CAUSE MESSAGE NON REMIS. CNAM- Anne 2007/2008 -61Exercices Technologie client-serveur

b) Message reu sur une machine fonctionnant avec le systme Unix, ce message est pass par plusieurs pays : From osimis-request@cs.ucl.ac.uk Sat Aug 29 00:44:28 1992 X400-Received: by /PRMD=cicb/ADMD=atlas/C=FR/; Relayed; 29 Aug 92 00:37:06+0200 X400-Received: by /PRMD=uk.ac/ADMD=_/C=gb/; Relayed; 28 Aug 92 22:42:39 GMT X400-Received: by /PRMD=uk.ac/ADMD=gold_400/C=gb/; Relayed; 28 Aug 92 20:52:27 GMT X400-Received: by /PRMD=Hughes/ADMD=MCI/C=us/; Relayed; 28 Aug 92 13:51:46-0700 X400-Received: by /PRMD=Hughes/ADMD=MCI/C=us/; Relayed; 28 Aug 92 13:41:03-0700 X400-Received: by /PRMD=UK.AC/ADMD=GOLD_400/C=GB/; Relayed; 28 Aug 92 13:40:56-0700 Priority: Non-Urgent Date: 28 Aug 92 13:40:56-0700 From: Danny J. Mitzel <dmitzel@whitney.hac.com>
Message-Id: <9208282041.AA11915@whitney.HAC.COM> To: osimis@cs.ucl.ac.uk Subject: MO Polling Importance: Normal Status: OR Hi all, Idanny (dmitzel@whitney.hac.com)

CNAM- Anne 2007/2008

-62-

Exercices Technologie client-serveur

Exercice 4 : Transactionnel rparti OSI-TP


1 Rappelez les principaux problmes rsoudre pour raliser des transactions en univers rparti. 2 Le transactionnel rparti OSI-TP ('Transaction Processing') dfinit les notions de dialogues et de transactions. A quels besoins correspondent ces deux notions. 3 Les dialogues comme les transactions sont organiss en arbre. Pourquoi? 4 Quel est le principe gnral de la validation des transactions appliqu par OSI-TP ? 5 Commentez les changes raliss dans le diagramme suivant donn en cours.

A TP-PREPARE.req

TP-COMMIT.ind TP-PREPARE.req TP-ROLLBACK.ind TP-COMMIT.ind TP-ROLLBACK.req

TP-ROLLBACK.ind TP-DONE.req TP-ROLLBACK -COMPLETE.ind

TP-DONE.req

TP-ROLLBACK -COMPLETE.ind

TP-ROLLBACK -COMPLETE.ind

CNAM- Anne 2007/2008

-63-

Exercices Technologie client-serveur

Exercice 5 : Transactionnel rparti


On suppose qu'une transaction de rservation de billets d'avion pour un parcours complexe en deux vols ncessite, partir du calculateur mettant la transaction (calculateur d'une agence de voyage), l'accs deux centres de rservation diffrents grs par deux calculateurs S1 et S2. Par exemple la premire partie du voyage concerne une compagnie intrieure puis la seconde partie est un voyage international sur une compagnie ayant un autre systme de rservation. Le billet n'a de sens que si les deux vols souhaits sont obtenus simultanment. La procdure applique est une approche transactionnelle rpartie avec validation deux phases. Dans la premire phase sont rgls les problmes de contrle de concurrence et de prparation en mmoire stable de l'opration. Si celle-ci est valide (possible compltement) l'criture dfinitive est ralise sur les deux systmes. On suppose pour simplifier qu'une rservation commence par une lecture d'enregistrement tlire(x) permettant de savoir si des places d'un type x sont disponibles (par exemple classe affaire, fumeurs, cot fentre) suivie d'une opration prcrire(x) annonant l'intention de rserver l'une des places disponible. Finalement une transaction peut se rsumer: Sur S1 tlire(x), prcrire(x) Sur S2 tlire(y) prcrire(y) On suppose que par hasard deux agences mettent au mme instant la mme transactions de rservation (notes dans la suite Ta et Tb) et que l'entrelacement des oprations amne constater l'ordre suivant des oprations sur chacun des calculateurs (l'ordre est indiqu par des numros locaux chacun des calculateurs).
Ta tlire(x) tcrire(x) tlire(y) tcrire(y) Sur S1 Sur S2 1 3 1 2 Tb tlire(x) tcrire(x) tlire(y) tcrire(y) Sur S1 Sur S2 2 4 Non dfini Non dfini

On utilise une technique de contrle de concurrence en univers rparti base sur le verrouillage deux phases. Q1 Rappelez le principe du verrouillage deux phases. Q2 Dcrivez ce qui se passe dans l'exemple prcdent en phase de pose des verrous. Peut-on valider les transactions? Pourquoi? Q3 Comment assurer la validation des transactions Ta et Tb? Q4 On implante les transactions prcdentes au moyen de la norme OSI-TP. Donnez pour ces transactions la structure de l'arbre des transactions. Q5 Quels sont les lments de service TP que l'on peut constater pour chaque transaction impliquant un calculateur client de rservation C et les deux ordinateurs serveurs de rservation S1 et S2. Dessinez un diagramme a flches comportant la description des lments de services gnrs par les trois sites, leur squencement dans le temps (on suppose que tout se passe bien et qu'un seul message de donnes est utilis dans chaque sens pour les besoins d'une transaction). CNAM- Anne 2007/2008 -64Exercices Technologie client-serveur

Exercice 6 : Systme transactionnel rparti


On souhaite mettre en oeuvre un systme de rservation pour des agences de voyages. Des fournisseurs de moyens de transport, des fournisseurs de moyens d'hbergement ainsi que des prestataires de services (sports, sminaires) s'associent dans ce projet. L'objectif est de fournir un service personnalis aux clients qui souhaitent rserver en une seule fois dans une agence leur moyen de transport, leur hbergement et leurs activits pour un sjour. Jusqu' maintenant, l'htesse d'accueil de l'agence effectuait les recherches successives et vrifiait la compatibilit de la demande du client. On souhaite donc lui faciliter la tche en quipant les diffrents participants (agences de voyages et fournisseurs de service) d'un systme transactionnel rparti. Ainsi un client entrant dans une agence de voyages pourra obtenir une rponse rapide sa demande. Tous les participants ce nouveau service sont dj dots d'un matriel et de logiciels informatiques leur permettant de raliser leur rservation. On souhaite donc les interconnecter via un service de traitement de transactions rparties. 1- La fiabilit d'un systme transactionnel vient, entre autres, du fait que l'on utilise des mmoires stables. Rappelez ce qu'est une mmoire stable et donnez un exemple. 2- Le systme de transactions mis en place autorise l'excution parallle de transactions. Rappelez la dfinition du principe de la srialisation. Quels sont les problmes qui se posent ? 3- Rappelez les rgles de dpendances entre les oprations de lecture et d'criture dans un systme transactionnel. rappelez ce qu'est une transaction vivante (note T) et une transaction valide (note T*) 4- Pour dtecter les conflits ventuels, on construit un graphe de dpendance. Soient les transactions suivantes avec leurs oprations et leur ordre d'excution : T1 4:prcrire(y) 5:lire(z) T2 3:lire(y) 6:prcrire(x) 9:valider T3 2:prcrire(x) 7:prcrire(z) T4 1:lire(x) 8:valider

- Donner le graphe de dpendance - La cohrence est-elle maintenue ? Justifiez votre rponse 5- Soit la transaction suivante : Un client souhaite rserver un voyage qui comprend un aller-retour Paris-Singapour, un htel 3 toiles (pour une semaine) ainsi qu'un circuit pour les 5 jours suivants. Le vol se rserve auprs de Air-Singapour (Serveur X), l'htel auprs du centre de rservation de Singapour (Serveur Y) et le circuit auprs d'un tour operator spcialis dans l'Asie (Serveur Z). La date souhaite de dpart est le 19-9-96. - Donner l'ensemble des changes protocolaire ncessaires pour raliser la transaction par un protocole de validation deux phases dans le cas o tout se passe correctement. Vous utiliserez les primitives offertes par OSI-TP 6- Trois types de pannes sont possibles dans le cadre d'un protocole: CNAM- Anne 2007/2008 -65Exercices Technologie client-serveur

- panne du client ou coordinateur - panne des serveurs ou excutants - panne du rseau Pour dtecter les pannes, on utilise des dlais de garde. Dfinir les endroits stratgiques ct client dans le protocole de la question prcdente o vous placez les dlais de garde et les consquences en cas de retombe de ces dlais de garde. Proposez pour chaque cas une stratgie adopter en cas de retombe du dlai de garde 7 - Mme question que prcdemment, mais ct serveur 8- Suite ces diffrentes pannes possibles, donner les faiblesses de ce protocole de validation deux phases

CNAM- Anne 2007/2008

-66-

Exercices Technologie client-serveur

Exercice 7 : CORBA et le transactionnel


1- Les services dans un systme d'objets rpartis comme CORBA sont des ensembles dobjets qui assurent des fonctionnalits ncessaires un grand nombre d'applications distribues telles que le nommage, la persistance, la scurit ou les transactions. Expliquez les fonctions ralises par le service de nommage ("naming service")? Donner l'exemple d'au moins un autre service de nommage diffrent de celui de CORBA. 2- Corba dfinit un service de scurit. Rappelez les principaux problmes de la scurit? Quelles sont les fonctionnalits que lon peut trouver dans un service de scurit d'un systme d'objets rpartis? 3- Le service de transactions de CORBA assure lexcution de traitements transactionnels mettant en uvre plusieurs objets. Ce service fournit essentiellement un ensemble de primitives pour la validation deux phases Rappelez brivement les objectifs du protocole de validation deux phases et les principes gnraux de son fonctionnement. Citez les principales primitives utilises pour l'une des interfaces vue en cours (par exemple Xopen DTP XA ou OSI TP) 4- On sintresse la transformation du protocole de validation deux phases en mode message (question prcdente) en un service transactionnel pour un systme d'objets rpartis utilisant des invocations synchrones de mthodes distantes sur des objets CORBA. En fait on cherche mettre en correspondance des couples de messages requte/rponse avec des mthodes d'un service transactionnel invoques sur des objets CORBA de faon synchrone. Soit les trois mthodes suivantes: Prepare (out Boolean resultat) Cette mthode permet de dexcuter la premire phase. Elle a deux rponses possibles : vraie si OK et faux si non OK. Validation () Cette mthode excute la seconde phase dans le cas de succs. Abandon () Cette mthode excute la seconde phase dans le cas d'chec. Dans le protocole de validation deux phases, quels sont les couples de messages requte rponse qui correspondent aux appels de procdure prcdents. Expliquez brivement votre rponse en rappelant la fonction des couples de messages et la fonction de chaque mthode 5- On considre maintenant un client A (coordinateur) souhaitant raliser une transaction avec deux sites serveurs B et C (excutants de sous transactions). Sur le serveur B, A souhaite crire des donnes laide la mthode Ecrit-Donnes(). Sur le serveur C, A souhaite raliser un calcul laide de la mthode Calcul(). Le client A utilise pour cela un objet ralisant un service transactionnel pour CORBA utilisant les mthodes dfinies la question prcdente et diffrentes primitives comme: Debut_Transaction et Fin_transaction qui dlimitent une transaction. Parbegin et Parend permettent d'activer en parallle plusieurs procdures distantes afin de faire travailler en parallle plusieurs serveurs afin d'amliorer les performances (ici pour les deux serveurs B et C). La structure du pseudo-code du client A est fournie en annexe. Ajoutez sur la euille les primitives de validation deux phases permettant de mettre en oeuvre cette transaction ct client.

CNAM- Anne 2007/2008

-67-

Exercices Technologie client-serveur

6- Automate. Donnez une reprsentation sous forme d'un automate du pseudo-code du client faisant l'objet de la question 5. 7 Gestion des dfaillances. Le code prcdent ne fait pas apparatre de dlais de gardes. On s'intresse aux pannes franches des serveurs qui ralisent les sous transactions. Rappelez les principes de la solution pour dtecter et grer les pannes franches des serveurs dans le protocole de validation deux phases? 8 - On souhaite reprsenter sur un automate le mcanisme de traitement des pannes des serveurs. Ajoutez sur l'automate de la question 6 les lments qui correspondent au traitement de la panne franche des serveurs: dlais de garde, traitements chance ou l'on suppose que le serveur est en panne (reprsentez les tats, les transitions avec vnements dclencheurs (?) et actions (!))

CNAM- Anne 2007/2008

-68-

Exercices Technologie client-serveur

Exercice 8 : Administration de rseaux avec SNMP


Le protocole SNMP (Simple Network Management Protocol) est un protocole d'administration de rseaux dvelopp dans le contexte du rseau INTERNET. Son objectif principal est de permettre dcrire des applications (baptise station d'administration SNMP) qui vont d'acqurir en mode client/serveur des valeurs caractristiques du fonctionnement d'un appareil distant. Cet entit rseau est baptis agent SNMP. Les paramtres lus ou positionns sur l'agent SNMP sont appels variables ou objets dans la suite. Certaines variables associes au fonctionnement de base de l'INTERNET sont prdfinies et types selon des RFC (Request For Comments) pour former les dfinitions de structures (SMI: Structure of Management Information). Il s'agit, par exemple, des adresses IP (IPadress) ou des dures mesures en TimeTicks de 10 millisecondes. Elles sont ranges dans des bases de donnes d'administration ou MIB sous forme de tables ou relations par des agents SNMP de faon tre lues par des applications SNMP. Les changes de PDU SNMP s'oprent selon quatre modes dfinis par les diagrammes suivants:
GetRequest SetRequest

GetResponse

GetResponse

Obtention de valeur de variable correspondant un identificateur GetNextRequest

Modification de valeur correspondant un identificateur

Trap GetResponse

Obtention de la valeur suivante de variable pour balayage de table

Notification asynchrone d'un vnement

La RFC 1157 donne la dfinition suivante d'un message SNMP qui utilise la syntaxe abstraite ASN1.

CNAM- Anne 2007/2008

-69-

Exercices Technologie client-serveur

RFC1157-SNMP DEFINITIONS ::= BEGIN IMPORTS ObjectName, ObjectSyntax, NetworkAddress, IpAddress, TimeTicks FROM RFC1155-SMI; Message ::= SEQUENCE { version INTEGER {version-1 (0)}, -- Version 1 for this RFC community OCTET STRING, -- Community name data ANY -- e.g. PDUs } PDUs ::= CHOICE { -- Protocol data units get-request GetRequest-PDU, get-next-request GetNextRequest-PDU, get-response GetResponse-PDU, set-request SetRequest-PDU, trap Trap-PDU } GetRequest-PDU ::= [0] IMPLICIT PDU GetNextRequest-PDU::=[1] IMPLICIT PDU GetResponse-PDU ::= [2] IMPLICIT PDU SetRequest-PDU ::= [3] IMPLICIT PDU PDU ::= SEQUENCE { request-id INTEGER, -- Request identifier error-status INTEGER { -- Sometimes ignored noError (0), toobig (1), noSuchName (2), badValue (3), readOnly (4), genError (5)}, error-index INTEGER, -- Sometimes ignored -- Index of the faulty variable variable-binding VarBindList } -- Values are sometimes ignored Trap-PDU ::= [4] IMPLICIT SEQUENCE { enterprise OBJECT IDENTIFIER, -- Type of object generating trap agent-addr NetworkAddress, -- Only one type of network adresses -- IP adress of object generating trap generic-trap INTEGER { -- Generic trap type coldStart (0), warmStart ( 1), linkDown ( 2), linkUp (3), authenticationFailure (4), egpNeighborLoss ( 5), enterpriseSpecific (6) }, specific-trap INTEGER, -- Specific code time-stamp TimeTicks, -- Elapse time since the last reinitialization of the entity variable-binding VarBindList -- "Interesting" information } VarBind ::= SEQUENCE - Variable binding {name ObjectName, CNAM- Anne 2007/2008 -70Exercices Technologie client-serveur

value ObjectSyntax} VarBindList ::= SEQUENCE OF VarBind END La dsignation des objets d'administration SNMP se fait selon une mthode de construction arborescente des noms o chaque nud peut tre repr par une chane de caractres ou un code numrique entier. Pour dcrire un nud de l'arbre on utilise une notation pointe pour les noms logiques de l'Internet. Dans le schma suivant on ne donne qu'une vue trs partielle de l'arbre de dsignation. On reprsente la branche associe l'Internet et on s'intresse au protocole IP. Pour celui-ci on fait apparatre l'information du compteur entier du nombre de paquets correctement dlivrs (ipInDelivers) dont la valeur est 22763. Ensuite on dtaille quelques lments de routage. La table de routage (ipRouteTable) comprenant pour chaque entre (ipRouteEntry) diffrentes informations. Nous avons gard l'adresse d'un destinataire atteindre dans l'Internet (ipRoutedest). L'adresse est au format IP sur 32 bits reprsents par 4 chiffres dcimaux spars par des points. Le cot du chemin pour atteindre ce destinataire (ipRouteMetric1) est un entier. L'adresse du prochain site visiter dans l'Internet (ipRouteNextHop) pour rejoindre le destinataire est une adresse IP. On a reprsent titre d'exemple acadmique les valeurs d'une table de routage qui ne comporte que trois entres.
iso (1) org (3) dod (6) internet (1) mgmt (2) mib-2 (1) system(1) interfaces (2) at (3) ip (4) ... snmp (11)

ipInDelivers (9) 22763

ipRouteTable (21) ipRouteEntry (1)

ipRoutedest (1) 8.6.7.4 22.6.8.0 3.67.8.9

ipRouteMetric1 (3) ipRouteNextHop(7) 5 2 6 80.3.76.5 80.3.76.5 73.7.8.4

La dsignation absolue de l'objet ipInDelivers est: iso.org.dod.internet.mgmt.mib-2.ip.ipInDelivers soit 1.3.6.1.2.1.4.9. La valeur de la variable ipInDelivers est obtenue par le message GetRequest (1.3.6.1.2.1.4.9) qui produit la rponse GetResponse ((ipInDelivers = 22763)) On souhaite maintenant consulter la table de routage par la commande GetNextRequest . GetNextRequest (ipRoutedest, ipRouteMetric1,ipRouteNextHop) On obtient alors la rponse suivante (qui correspond une entre de la table suivant l'entre courante en l'occurrence la premire): GetResponse ( ( ipRoutedest.22.6.8.0="22.6.8.0" ), CNAM- Anne 2007/2008 -71Exercices Technologie client-serveur

(ipRouteMetric1.22.6.8.0="2"), (ipRouteNextHop 22.6.8.0="80.3.76.5")) On continue la consultation de la table par : GetNextRequest (ipRoutedest.22.6.8.0, ipRouteMetric1.22.6.8.0, ipRouteNextHop.22.6.8.0 ) On obtient la rponse (l'entre suivante de la table): GetResponse ( ( ipRoutedest.3.67.8.9="3.67.8.9" ), (ipRouteMetric1.3.67.8.9="6"), (ipRouteNextHop.3.67.8.9="73.7.8.4")) Enfin, par la dernire requte de la consultation de la table on obtient la dernire rponse qui correspond la premire ligne de la table: GetNextRequest (ipRoutedest.3.67.8.9, ipRouteMetric1.3.67.8.9, ipRouteNextHop.3.67.8.9 ) on obtient la rponse suivante : GetResponse ( ( ipRoutedest.8.6.7.4="8.6.7.4" ), (ipRouteMetric1.8.6.7.4="5") (ipRouteNextHop.8.6.7.4="80.3.76.5")) Une nouvelle requte GetNextRequest sur une table entirement parcourue produit une rponse particulire permettant de tester la fin. On dsigne ici pour simplifier l'nonc un tel code rponse par un boolen Fin-de-table positionn automatiquement. I Questions ASN1 I.1. La spcification du message GetRequest-PDU comporte une directive [0] IMPLICIT. Que signifie-t-elle? I.2. Dans la spcification ASN.1 dont vous disposez, quel est le type qui dcrit les objets administrs par les agents SNMP ? I.3. A quoi correspondent les diffrents champs du type PDU? I.4. A la vue des commentaires de la description du type PDU, rcrivez ce type en ASN.1 en cherchant optimiser l'encombrement des messages (certains champs ne sont pas toujours obligatoires) ? Justifiez votre rcriture II Question d'organisation architecturale II.1. Le protocole SNMP utilise la couche transport UDP de l'INTERNET pour acheminer ses messages. Donnez les avantages et les inconvnients de l'utilisation de cette couche de transport. Cela vous semble-t-il tre un bon choix dans le cas de SNMP? II.2. Un message SNMP peut-tre compress pour des raisons d'efficacit et crypt pour des raisons de confidentialit. On rappelle que sa dfinition ASN1 permet la conversion des informations pour tout type de matriel. On est ainsi plac devant diffrents choix possibles concernant l'organisation des trois fonctions pouvant s'appliquer un message. Dans quel ordre placez-vous les trois oprations de compression, conversion et chiffrement? Justifiez trs prcisment votre choix. III Questions SNMP III.1. Quelle est la dsignation code numrique de l'objet ipRouteMetric1? III.2. Donnez des exemples d'usages possibles de la PDU trap par un agent SNMP autres que ceux donns dans la description de base? CNAM- Anne 2007/2008 -72Exercices Technologie client-serveur

IV Questions de spcifications d'applications IV.1 On souhaite sur requte d'un oprateur (?affiche-table-routage) dclencher l'affichage d'une table de routage telle que celle dfinie par ipRouteTable. Donnez l'automate d'une application SNMP de lecture et d'dition de la table de routage? IV.2 On souhaite enregistrer dans un fichier pour chaque intervalle de 100 millisecondes le nombre de paquets dlivrs correctement. On veut noter 10000 chantillons pour des statistiques ou des simulations ultrieures. On dispose d'une horloge interne qui peut dlivrer des vnements au bout de 100 millisecondes condition d'avoir t arme. L'vnement retombe du signal d'horloge est alors tout fait analogue l'arrive d'un message. Donnez l'automate permettant de crer ce fichier?

CNAM- Anne 2007/2008

-73-

Exercices Technologie client-serveur

Exercice 9 : change de donnes informatises EDI


1 Notions gnrales Les questions suivantes n'appellent pas en rponse la recopie complte d'un chapitre de livre ou de polycopi. Il est demand de faire une synthse brve (d'une dizaine de lignes au maximum) qui rassemble les ides principales correspondant la question. 1.1 Quels sont les objectifs assigns par ses concepteurs l'EDI et quels en sont les moyens principaux? 1.2 Quels sont les moyens de communication (physiques ou architectures de rseaux) sur lesquels il est prvu que ce protocole fonctionne? 1.3 Quels sont les principes gnraux retenus pour le codage des informations changes qui permettent l'interoprabilit des applications? 1.4 L'EDI dfinit une syntaxe de transfert diffrente de celle de ASN1. Quels sont les avantages et les inconvnients des deux approches? 1.5 Quelles sont selon vous les forces et les faiblesses de l'EDI? 2 tude d'un format d'change EDI En cours de mise au point d'un logiciel EDI on intercepte les informations suivantes codes en EDIFACT: UNB+UNOA:1+56789:12+12345:91+950905:1445+REF34+4287+INVOIC' UNH+INV001+INVOIC:90::UN'BGM+380+67-066-Y-445324+950905' NAD+SU+5678912+ +SOCIT DE MCANIQUE INDUSTRIELLE+15 AVENUE POINCAR+COLOMBES+ +92700+FR' Dans cette technique de codage EDI les informations minimum qui doivent figurer comportent d'une part: - un identifiant de l'autorit administrative qui normalise et un numro de version de la syntaxe employe, - un identifiant de l'metteur du message qui peut tre suivi d'un attribut qualifiant cet identifiant, - un identifiant du destinataire (avec son attribut). - la date (AAMMJJ) et l'heure (HHMM) de la fabrication du document, - une rfrence unique de l'change attribue par l'metteur, - des lments facultatifs comme un mot de passe, le type de document, ... Elles comportent d'autre part: - le numro d'identification du message, - une description de la nature du message avec . le type du document . le numro de version du type . d'autres informations

CNAM- Anne 2007/2008

-74-

Exercices Technologie client-serveur

2.1 Dfinissez prcisment le rle respectif des caractres + (plus), : (deux points), ' (apostrophe)? 2.2 Quel est le rle du segment UNB? 2.3 Quel est le rle du segment UNH? 2.4 Le symbole BGM est une abrviation pour "BeGin Message". Il comprend le type cod numriquement d'un document, la rfrence commerciale d'une facture et sa date. Le symbole NAD est une abrviation pour "Name And Address". Il comprend l'indication de type de l'organisme ou la personne concerne (ici SU pour vendeur ou BY pour acheteur) puis l'identifiant puis l'adresse dfinir. A partir de l'exemple et de toutes les informations en votre possession dterminez: a) - le codage numrique du type de document facture b) - l'heure de fabrication de la facture c) - la rfrence de cette facture dans la nomenclature de l'metteur d) - son identifiant unique EDI

CNAM- Anne 2007/2008

-75-

Exercices Technologie client-serveur

Exercice 10 : XML
XML ('eXtended Markup Language') est un langage de balisage (markup langage), destin amliorer l'interoprabilit des changes de donnes quelconques entre applications sur l'Internet. II.1) En dehors de XML, citez diffrentes normes de dfinition de structures de donnes et de formats dchanges dans les rseaux? II.2) Qu'est ce qu'un langage de balise? Quelles en sont les utilisations? II.3) Quel est le principal langage de balise utilis actuellement? II.4) Pourquoi dfinir avec XML encore un langage de balises? Le document XML suivant dfinit une bibliographie trs simplifie destine tre transmise sur Internet pour ensuite tre affiche. <?xml version="1.0" encoding="ISO-8859-1"?> <BIBLIOGRAPHIE SUJET="Un exemple"> <LIVRE LANG="fr" SUJET="Informatique"> <AUTEUR> <PRENOM>Christian</PRENOM> <NOM>Carrez</NOM> </AUTEUR> <TITRE>Les systmes informatiques</TITRE> <EDITEUR> <NOM>Dunod Informatique</NOM> <LIEU>Paris</LIEU> </EDITEUR> <DATEPUB>1990</DATEPUB> </LIVRE> <LIVRE LANG="fr" SUJET="Mathematique"> <AUTEUR> <PRENOM>Norbert</PRENOM> <NOM>Garsoux</NOM> </AUTEUR> <TITRE>Espaces topologiques</TITRE> <EDITEUR> <NOM>Stock</NOM> <LIEU>Paris</LIEU></EDITEUR> <DATEPUB>1972</DATEPUB> </LIVRE> </BIBLIOGRAPHIE> II.5) Dans le document prcdent plusieurs lments qui peuvent possder plusieurs attributs sont prsents. Citez tous les lments prsents et pour chaque lment tous les attributs. Dessinez larbre syntaxique associ au document). Un message lectronique Internet (un e-mail la norme RFC 822) est compos dune en-tte et dun corps. Len-tte contient au minimum les trois informations suivantes (sur trois lignes): From: expediteur@domaine To: destinataire@domaine Date: date_de_creation_du_message

CNAM- Anne 2007/2008

-76-

Exercices Technologie client-serveur

L'entte peut contenir un ensemble de champs optionnels parmi lesquels nous retenons ici: Subject: sujet du message Cc: copie@domaine Message-ID: numero@domaine Received: information sur le chemin suivi par le message In-Reply-To: message_ID Dans une application qui utilise uniquement XML vous avez besoin d'changer des messages qui comportent exactement les mmes informations que celles dfinies prcdemment. II.6) Dfinissez le document XML qui est quivalent au format d'change de messages prcdent (qui contient les mmes champs et les mmes informations). II.7) Un avantage de XML est de permettre la dfinition de DTD. Rappelez ce quest une DTD et quoi sert une DTD. II.8) Dfinissez la DTD du document XML prcdent (associ un courrier lectronique avec ses trois zones obligatoires et ses cinq zones optionnelles).

CNAM- Anne 2007/2008

-77-

Exercices Technologie client-serveur

Exercice 11 : tude du protocole HTTP


Le but de ce problme est d'tudier le protocole HTTP ("Hyper Text Transfer Protocol") utilis pour implanter le service d'accs des donnes hypertextes Web de l'Internet. Il utilise les services offerts par la suite des protocoles TCP/IP. 1) Le rsum qui dfinit ce protocole indique: "HTTP est un protocole de la couche application, sans tat, construit pour utiliser des systmes multimdia et distribus. Il implante un service client/serveur entre programmes". 1.1) Que signifie le qualificatif "sans tat"? 1.2) Parmi les divers protocoles tudis en cours donnez un exemple d'un autre protocole sans tat? 2) Il est aussi prcis dans la dfinition d'HTTP: "Les messages sont changs dans un format similaire celui utilis par le courrier Internet et son extension MIME "Multipurpose Internet Mail Extensions". 2.1) Quel est le rle jou par MIME? 2.2) Quelle est la couche de la pile des protocoles OSI qui joue le mme rle? 3) Pour dcrire les donnes manipules par HTTP, on utilise des dfinitions syntaxiques BNF ("Backus Naur Form"). Cette syntaxe permet de dfinir des identifiants bien forms (comme on va le voir pour les adresses de ressources) l'aide de rgles BNF de la forme suivante: nom = dfinition Le nom construire est obtenu l'aide de la dfinition dans laquelle interviennent des symboles non-terminaux (mots remplacer par leur dfinition) et des symboles terminaux (mots crire en toute lettre) crits entre guillemets (par exemple "ABC" dsigne la chane de caractres ABC. On utilise les conventions suivantes: rgle1 rgle2 Signifie que rgle1 suivie de rgle2 s'applique [ rgle ] Signifie que cette rgle est optionnelle. *( rgle ) Signifie que la rgle apparat 0 ou un nombre quelconque de fois. 1*( rgle ) Signifie que la rgle apparat une fois ou un nombre quelconque de fois. rgle1 | rgle2 Signifie que rgle1 ou rgle2 s'applique (le ou tant exclusif) Les ressources rseaux atteintes par le protocole HTTP sont repres par une adresse appele URL ("Uniform Resource Locator"). La syntaxe (simplifie) d'une URL HTTP est dfinie sous forme BNF par: http_URL = "http:" "//" service [":" port ] [ abs_path ] service = un_nom_de_service_Internet port = 1*DIGIT abs_path = "/" [ path ] path = fsegment *("/" segment) fsegment = 1*(suite non vide de caractres) segment = *(suite de caractres) DIGIT = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 On ne dfinit pas un_nom_de_service_Internet). CNAM- Anne 2007/2008 la syntaxe des noms de services Internet (symbole

-78-

Exercices Technologie client-serveur

Sachant que www.inria.fr est un un_nom_de_service_Internet valide indiquez parmi les URL HTTP ci dessous, celles qui sont valides et celles qui ne le sont pas en justifiant vos rponses. 3.1) http://www.inria.fr 3.2) http://www.inria.fr/ 3.3) http://www.inria.fr:/tech-reports/fich.html 3.4) http://www.inria.fr:8080/pub/logiciel 4) Une requte HTTP consiste demander au serveur l'excution d'une mthode (i.e. d'une action) sur une ressource. La mthode GET utilise par un client est une requte demandant le contenu se trouvant URL_de_l_objet. Par exemple une requte comme: GET http://www.inria.fr/pub/courrier/ HTTP/1.0 demande au serveur www.inria.fr de renvoyer le document /pub/courrier. Un tel document est en gnral une page statique dpose au niveau du serveur. La mthode POST permet de soumettre des interrogations une base de donnes locale au serveur. Une syntaxe simplifie d'une requte HTTP est donne par les rgles suivantes: Requte = Mthode SP URL_de_l_objet SP version_protocole_http Mthode = "POST" | "GET" SP = 1*(" ") URL_de_l_objet = http_URL version_protocole_http = "HTTP/1.0"

Les requtes ci-dessous sont-elles valides ou invalides : 4.1) OPTIONS * HTTP/1.0 4.2) GET http://www.inria.fr:8080/pub/logiciel HTTP/1.0 4.3) GET http://www.inria.fr/pub/courrier/ HTTP/1.0 4.4) POST GET http://www.inria.fr HTTP/1.0 5) Que rpond un serveur dans le cas d'une requte non valide? 6) HTTP est un protocole client/serveur et, donc, se pose le problme de l'idempotence des requtes. 6.1) Rappelez la dfinition de la notion d'idempotence. 6.2) Donnez des exemples de mthodes idempotentes et de mthodes qui ne le sont pas . 6.3) Est ce que les mthodes GET et POST sont idempotentes ? 7) Une implantation d'un serveur HTTP peut utiliser la notion de proxy ou mandataire. Un proxy est un programme pouvant jouer le rle de client comme celui de serveur. Il peut recevoir une requte et la traiter directement. Il peut galement dlguer une requte un autre serveur en la reformattant. 7.1) Donnez plusieurs utilisations possibles d'un proxy. 7.2) Indiquez les avantages et les inconvnients de l'emploi d'un proxy. 8) Une page HTML peut contenir du texte HTML, des images fixes ou animes, du son, des scripts CGI et des applets Java. Seuls le texte HTML, les images fixes, le rsultat de scripts CGI et les applets Java sont chargs automatiquement lors de la demande de consultation d'une page par un client, les autres tant chargs la demande. Donc, pour chaque page HTML, le client envoie une premire requte qui permet le chargement du texte HTML. Lors de la rception du texte de la page, il analyse le contenu et demande, ensuite, le chargement des lments ncessaires par d'autres CNAM- Anne 2007/2008 -79- Exercices Technologie client-serveur

requtes GET au serveur. On considre une page HTML contenant 4 images au format GIF, un script CGI dont le rsultat est une image au format GIF, un fichier son, 1 applet Java. 8.1) Quel est le nombre de requtes GET mises par le client vers le serveur? 8.2) Pourquoi les squences vido ne sont-elles pas charges automatiquement? 9) Les balises HTML suivantes dlimitent: - une image fixe : <IMG SRC = "...">, - une applet Java : <APPLET CODE = "..."> - le rsultat affichable d'un script <IMG SRC = "..."> La commande de chargement chez le client est: charger URL = http_URL. On souhaite dfinir l'automate du chargement d'une page partir de la commande charger mise par un client (comportement du navigateur) 9.1) Donnez la liste des tats que vous identifiez dans un tel automate ? 9.2) Donnez l'automate complet en le commentant Vous utiliserez les requtes et rponses appropries dfinies dans le protocole HTTP et traiterez ventuellement les cas d'erreur. 10) Le client utilise maintenant un cache local "client". Ce cache permet de garder des pages dj consultes pendant un certain temps (dfini par l'utilisateur). La place disponible sur disque pour ce cache client tant limite, les pages les plus anciennes sont remplaces au fur et mesure. Quels sont les avantages et les inconvnients de l'utilisation d'un cache client ? 11) On rappelle que, pour tenir compte du vieillissement d'une page, chaque page consulte contient un champ d'en-tte "date d'expiration". Par dfinition la date d'expiration du rsultat d'un script CGI est toujours dpasse. Modifiez l'automate prcdent pour prendre en compte l'utilisation du cache local du client. 12) L'utilisateur a modifi la configuration de son client navigateur de manire ne plus utiliser de cache local client mais un cache serveur sur son site. 12.1) Comment se comporte maintenant un client? 12.2) Quel est l'intrt de cette nouvelle organisation?

CNAM- Anne 2007/2008

-80-

Exercices Technologie client-serveur

Exercice 12 : DNS "Domain Name System" sujet 1


Un sous ensemble de la hirarchie de lespace de nommage Internet est donn par la figure suivante dans laquelle les ensembles encadrs dfinissent des zones d'administration. On trouve par exemple sur ce dessin une machine dont l'adresse IP est 163.171.128.2 et dont le nom est village.iie.cnam.fr .

edu

com

gov

fr

nl

vu

yale

Sun ens

cnam

cs mailhost mail

iie escpi

linda IP=128.37.16.112

village IP=163.171.128.2

ns

L'une des utilisations importantes du DNS est la dtermination de l'adresse IP d'un site Internet permettant d'envoyer du courrier lectronique l'un de ses usagers. Une personne possde l'adresse de courrier lectronique suivante: asterix@village.iie.cnam.fr. 1 2 Rappelez le nom du protocole Internet qui ralise la messagerie lectronique? Rappelez le rle du serveur de courrier dans un domaine Internet. Donnez le nom DNS de la machine qui est le serveur de courrier lectronique de l'usager asterix (le nom le plus probable sur le dessin)? Lorsque le client de messagerie de lutilisateur superman@linda.cs.yale.edu envoie un courrier au serveur de messagerie de lutilisateur asterix@village.iie.cnam.fr, que fait-il tout dabord?

CNAM- Anne 2007/2008

-81-

Exercices Technologie client-serveur

Rappelez le rle du serveur de noms dans un domaine Internet. Donnez le nom de la machine serveur de noms qui administre le sous domaine de la machine village (le nom le plus probable)? La dtermination des adresses IP partir des noms logiques est ralise sur requte d'un site demandeur (le rsolveur) son serveur de noms. Les serveurs dialoguent selon le protocole DNS. On rappelle qu'un serveur de noms DNS possde une base de donnes dont les enregistrements sont de la forme: Nom_de_domaine, Dure_de_vie, Type, Classe, Valeur - Nom_de_domaine est un nom DNS - Dure_de_vie dtermine en secondes, la dure de validit de linformation. - Classe indique le protocole concern. Elle est ici toujours gale IN pour Internet. - Valeur est une donne caractristique du type et du nom de domaine. - Type dfinit le type de l'enregistrement stock (resource record): A: la valeur est alors l'adresse IP de l'hte dsign dans le champ Nom_de_Domaine MX: la valeur est alors la priorit (entier dans 1..n) et le nom du serveur de courrier pour l'hte dsign dans le champ Nom_du_domaine (un hte peut avoir plusieurs serveurs de courrier). NS: la valeur est alors le nom de domaine dun serveur de noms DNS pour le domaine considr. Donnez deux enregistrements de la base de donnes DNS du domaine leur dure de vie est un jour ? iie sachant que

En pratique, les serveurs DNS envoient des messages qui contiennent plusieurs requtes ou plusieurs rponses. Quel est le nom de cette technique? Quel est son utilit ?

7 Lorsque quun serveur DNS apprend une information suite une requte utilisateur, il enregistre cette information en mmoire temporaire si elle ne concerne pas son domaine. 7.1 Quel est le nom de cette technique ? 7.2 Citez deux avantages importants de cette technique dans le cas du DNS ? 7.3 Pourquoi avoir introduit un champs Dure_de_vie associ chaque information DNS ? 8 Le client de messagerie de lutilisateur superman@linda.cs.yale.edu utilise la rsolution itrative du DNS pour atteindre lutilisateur asterix@village.iie.cnam.fr. Cette rsolution itrative dune requte concernant un nom de domaine par le DNS implique un ensemble de serveurs DNS. Rappelez la stratgie de rsolution utilise. Donnez pour lexemple prcdent les noms des domaines concerns et le schma de parcours. On amliore l'apprentissage des rsolutions de requtes par une seconde technique de rsolution baptise rsolution rcursive. Contrairement la rsolution itrative la rponse fait le chemin inverse de la requte et est donc apprise par tous les sites traverss. Dans le cadre de cette dernire solution, lorsque superman@ linda.cs.yale.edu envoie un courrier asterix@village.iie.cnam.fr, quelle est la liste des serveurs consults et quel est le parcours des messages ?

CNAM- Anne 2007/2008

-82-

Exercices Technologie client-serveur

Exercice 13 : DNS "Domain Name System" Sujet 2 1 Dans le rseau Internet le systme de gestion des noms de domaines DNS ( Domain Name System) joue un rle trs important. Quel est lobjectif gnral du DNS? Citez quatre services diffrents rendus par le DNS aux applications Internet. 2 Quest ce quun domaine DNS? A quel domaine appartient le nom pollux.escpi.cnam.fr? 3 Quest ce quune zone DNS? A quelle zone appartient probablement le nom pollux.escpi.cnam.fr? 4 Citez quelques rgles qui prsident la structuration des noms ( la faon dont les noms sont forms). 5 Les noms de domaines sont crs pour des besoins diffrents. Citez quelques rgles qui prsident au choix des noms par les usagers (les usagers peuvent-ils choisir nimporte quel nom pour un domaine ou pour un service)? 6 Dans des bases de donnes DNS on trouve des dfinitions denregistrements associs aux noms suivants : www.discount.com 6.17.173.163.in-addr.arpa ulysse.cnam.fr Quel est le motif le plus probable qui conduit la cration de ces noms de domaine? 7 Compte tenu de la signification propose la question prcdente citez le type dun enregistrement (RR Resource Records) dune base de donnes DNS associe chacun de ces noms. 8 La rsolution dune requte adresse au DNS par une application Internet seffectue via un rsolveur (cest dire une procdure prdfinie comme gethostbyaddr en UNIX appele dans un programme) et un ensemble de serveurs de noms. Quand on utilise une approche rcursive de rsolution de requte quel est le statut du rsolveur et quel est le statut dun serveur. Sont ils client, serveur ou les deux la fois? 9 Quel est le statut du rsolveur et quel est le statut dun serveur (client, serveur ou les deux la fois) dans une rsolution itrative. 10 Un utilisateur dun navigateur WEB dfinit lURL suivante : http://www. Quelle est la premire opration effectue par le navigateur sur la chane www? Que se passe til dans le cas prsent relativement cette chane? Le renforcement de la scurit du DNS est un problme dactualit qui a fait lobjet de plusieurs RFC. En effet un pirate peut par exemple remplacer ladresse du serveur de nom dun domaine par sa propre adresse (sil a pris par exemple le contrle dun routeur). Il peut ensuite faire croire ce quil veut au rsolveur en fabricant les rponses. 11 Quel mcanisme proposez vous pour garantir quune information obtenue par le DNS a bien t gnre par ladministrateur du domaine? 12 Comment intgrez vous au DNS un mcanisme de distribution de cls publiques ? CNAM- Anne 2007/2008 -83Exercices Technologie client-serveur

Exercice 14 : Services et protocoles d'annuaires rpartis


Norme LDAP et scurit des transactions Internet

DAP ("Directory Access Protocol") est un protocole de gestion rpartie de l'annuaire X500. LDAP ("LightWeight Directory Access Protocol") est un protocole simplifi driv de DAP permettant un accs un annuaire en mode client/serveur en utilisant TCP/IP. Question I.1 I.1.1 DNS "Domain Name System" est le service d'annuaire (ou de gestion de noms) de l'Internet. Rappelez quels sont les objectifs du DNS. I.1.2 DAP propose un protocole complet permettant d'accder de faon transparente un annuaire rparti partiellement dupliqu. Citez trois problmes que doit rsoudre un tel protocole en prcisant pour chacun d'eux clairement sa nature. Question I.2 LDAP est un protocole de niveau application de l'Internet (utilisant les services de TCP/IP). Il s'agit d'une version simplifie de DAP permettant un client LDAP d'accder, de modifier, d'ajouter des donnes un annuaire gr par un serveur LDAP. LDAP est dcrit en ASN1. On utilise les types suivants: LDAPString ::= OCTET STRING LDAPDN ::= LDAPString LDAPDN (LDAP "Distinguished Name") dfinit des chanes de caractres permettant de dsigner une personne physique ou morale au moyen de diffrents attributs selon une syntaxe dcrite dans la RFC 1779 (un exemple simple est donn plus loin). La PDU bindRequest permet d'ouvrir un dialogue entre le client et le serveur. Son contenu est dfini par la spcification ASN1 suivante: BindRequest ::= [APPLICATION 0] SEQUENCE { version INTEGER (1 .. 127), name LDAPDN, authentication CHOICE { simple [0] OCTET STRING, krbv42LDAP [1] OCTET STRING, krbv42DSA [2] OCTET STRING } }

CNAM- Anne 2007/2008

-84-

Exercices Technologie client-serveur

Le mode d'authentification 0 ne donne pas lieu authentification si la chane est vide. Une authentification par mot de passe est utilise si la chane n'est pas vide. Les deux autre modes sont lis l'utilisation de Kerberos ou de DSA ("Digital Signature Algorithm"). I.2.1 Que signifient dans la description prcdente les expressions APPLICATION 0, SEQUENCE, INTEGER, CHOICE? Un client envoie une PDU bindRequest avec les valeurs suivantes: version:: = 2 name:: = 'CN=James Hacker,L=Basingstoke, O=WidgetInc,C=GB' authentification simple (sans mot de passe) La zone name fournit ici un exemple de nom X500 ("distinguished name"). De nombreux attributs peuvent tre prciss. Ici on a prcis CN pour CommonName, L pour Localityname, O pour Organisation, C pour Country. Les questions qui suivent concernent le codage des donnes changes lors du transfert de la PDU bindRequest associe l'exemple prcdent. I.2.2 Rappeler les principes de la syntaxe de transfert associe ASN1? I.2.3 Donnez octet par octet la valeur binaire ou hexadcimale du codage du champs "version" transmis du client vers le serveur. Vous expliquerez pour chaque octet la raison de ce codage et la valeur numrique obtenue. 1.2.4 Donnez octet par octet la valeur binaire ou hexadcimale du codage du champs "name" transmis du client vers le serveur. Vous expliquerez pour chaque octet la raison de ce codage et la valeur numrique obtenue. Il n'est pas demand de convertir la chane de caractre en binaire. 1.2.5 Pour le codage de CHOICE on donne les indications suivantes. Le constructeur CHOICE n'est pas cod, mais on code directement la donne choisie. On remarque qu'elle est tiquete mais que cette tiquette n'est associe aucun mot cl. Elle est donc spcifique au contexte. Le mot cl IMPLICIT n'est pas prsent. Donnez octet par octet la valeur binaire ou hexadcimale du codage du champs "authentication" transmis du client vers le serveur. Vous expliquerez pour chaque octet la raison de ce codage et la valeur numrique obtenue. 1.2.6 Donnez la valeur hexadcimale (octet par octet) du codage du message complet transmis du client vers le serveur en expliquant pour chaque octet la raison de ce codage et la valeur numrique obtenue. Il n'est pas demand de convertir la chane de caractre en binaire. Question I.3 La spcification ASN1 suivante dcrit l'ensemble des messages (PDU) changs par le protocole LDAP. LDAPMessage ::= SEQUENCE { messageID MessageID, protocolOp CHOICE { bindRequest BindRequest, CNAM- Anne 2007/2008 -85- Exercices Technologie client-serveur

bindResponse BindResponse, unbindRequest UnbindRequest, searchRequest SearchRequest, searchResponse SearchResponse, modifyRequest ModifyRequest, modifyResponse ModifyResponse, addRequest AddRequest, addResponse AddResponse, delRequest DelRequest, delResponse DelResponse, modifyRDNRequest ModifyRDNRequest, modifyRDNResponse ModifyRDNResponse, compareDNRequest CompareRequest, compareDNResponse CompareResponse, abandonRequest AbandonRequest } } MessageID ::= INTEGER (0 .. maxInt) Dans la spcification prcdente la plupart des noms employs sont directement comprhensibles. A titre d'illustration on ajoute que: - unbindRequest est le message chang lors de la fermeture d'un dialogue du client vers le serveur. Il n'y a pas de rponse. - searchRequest est le message chang lors de la recherche et/ou de la lecture d'un sous ensemble d'un champs ou d'un attribut de l'annuaire. searchResponse est le message porteur de la rponse. - abandonRequest est un message gnr par un client dans le cas o il souhaite mettre fin une requte immdiatement sans attendre la rponse. Il n'y a pas de rponse. I.3.1 MessageID est un numro envoy par le client dans un message de requte et retourn par le serveur dans une rponse. A quoi sert ce numro? I.3.2 Rappelez la dfinition d'un automate de service. On souhaite maintenant tablir l'automate du service client LDAP (pour l'utilisateur du service LDAP) en tenant compte des indications suivantes. On suppose qu' chaque envoi d'une PDU est associ une primitive de service dont la liste est la suivante (chaque nom est driv simplement du nom de la PDU mise): bind_Req, bind_Resp, unbind_Req, search_Req, search_Resp, modify_Req, modify_Resp, add_Req, add_Resp, del_Req, del_Resp, modifyRDN_Req, modifyRDN_Resp, compare_DNReq, compare_DNResp, abandon_Req I.3.3 tablissez l'automate de service client LDAP d'ouverture de connexion (point de vue de l'utilisateur du service LDAP). On suggre pour l'automate de distinguer au moins un tat hors connexion, un tat connexion tablie. I.3.4 On suppose qu'un client doit avoir fini de traiter une requte d'accs l'annuaire avant de passer la suivante. tablissez l'automate de service client LDAP pour le traitement d'une requte d'accs l'annuaire. On pourra prendre pour exemple l'change search_Req, search_Resp. On se place toujours du point de vue de l'utilisateur du service LDAP. On CNAM- Anne 2007/2008 -86Exercices Technologie client-serveur

suggre pour l'automate de distinguer partir de l'tat connexion tablie, un tat pour le type de requte en cours.

CNAM- Anne 2007/2008

-87-

Exercices Technologie client-serveur

II - Scurit Internet- Certificats X509 L'Internet utilise des certificats dans de nombreux protocoles de scurit. Un certificat est une donne liant un nom, une clef publique associe ce nom et le tout est sign par une autorit de certification. Ces certificats ont un format dfini dans la norme X509 et sont transmis via le protocole LDAP La spcification suivante dfinit (partiellement) un certificat au format X509: Certificate ::= SIGNED { SEQUENCE{ version [0] Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueIdentifier [1] IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version must be v2 or v3 subjectUniqueIdentifier [2] IMPLICIT UniqueIdentifier OPTIONAL -- If present, version must be v2 or v3 extensions [3] Extensions OPTIONAL -- If present, version must be v3 -- } } Version ::= INTEGER { v1(0), v2(1), v3(2) } CertificateSerialNumber ::= INTEGER AlgorithmIdentifier ::= SEQUENCE { algorithm ALGORITHM.&id({SupportedAlgorithms}), parameters ALGORITHM.&Type ({SupportedAlgorithms} {@algorithm}) OPTIONAL } SupportedAlgorithms ALGORITHM ::= { ... } Validity ::= SEQUENCE { notBefore UTCTime, notAfter UTCTime } SubjectPublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, subjectPublicKey BIT STRING } Time ::= CHOICE { utcTime UTCTime, generalizedTime GeneralizedTime } SIGNED { ToBeSigned } ::= SEQUENCE { toBeSigned ToBeSigned, encrypted ENCRYPTED { HASHED {ToBeSigned }} }

CNAM- Anne 2007/2008

-88-

Exercices Technologie client-serveur

Question II.1 II.1.1 Qu'est ce qu'un algorithme de signature numrique. Quelles en sont les proprits? II.1.2 A quoi servent les champs suivants: serialNumber , signature , issuer, validity, subject, subjectPublicKeyInfo, issuerUniqueIdentifier II.1.3 Expliquez la spcification ASN1: SIGNED { ToBeSigned } d'une donne sign. Question II.2 Un serveur de certificats est accessible via LDAP pour obtenir des certificats X509. Supposons qu'une entit A veuille contrler la validit de la signature d'un document sign par une entit B. Il dispose au dpart de l'identifiant de B, de l'adresse du serveur de certificat et du certificat de l'autorit de certification qui a sign le certificat de B. II.2.1 Listez la suite des oprations que A doit raliser pour contrler la signature de B. II.2.2 Les certificats X509 sont maintenant frquemment utiliss dans l'Internet. En considrant des applications extrmement courantes de l'Internet, donnez deux domaines d'applications d'une telle procdure.

CNAM- Anne 2007/2008

-89-

Exercices Technologie client-serveur

Exercice 15 : Messagerie Internet SMTP


SMTP ('Simple Mail Transfer Protocol') est le nom d'ensemble donn la messagerie normalise par l'IETF ('Internet Engineering Task Force') pour le rseau Internet. I Architecture de la messagerie SMTP I.1) Une messagerie lectronique (comme SMTP) est une application rpartie. Dfinissez trs brivement les objectifs et les fonctions ralises par une messagerie. I.2) Une messagerie lectronique et un transfert de fichiers (comme FTP 'File Transfer Protocol') dfinissent des services applicatifs voisins. Rappelez trs brivement les fonctions ralises par un transfert de fichiers. Citez plusieurs similitudes et plusieurs diffrences entre une messagerie et un transfert de fichiers. I.3) Une messagerie lectronique et un service de files de messages (MOM 'Message Oriented Middlleware' comme le produit IBM MQ Series 'Message Queue Series') dfinissent galement des services applicatifs assez voisins. Rappelez trs brivement les fonctions ralises par des files de messages. Citez plusieurs similitudes et plusieurs diffrences entre une messagerie et un service de files de messages. I.4) Il existe deux grandes catgories d'architectures pour les messageries. La premire catgorie est base sur un principe de dlivrance de bout en bout ('end to end delivery'). La seconde catgorie est base sur une approche de stockage et retransmission ('store and forward delivery'). Rappelez les principes de ces deux modes d'acheminement. Pour chaque mode, donnez un schma avec les diffrents types de logiciels concerns. I.5) Dans quelle catgorie se place la messagerie SMTP? Pour rpondre vous devez absolument justifier votre rponse, en prsentant des lments d'architectures et de protocoles de la messagerie Internet? I.6) Quelles sont les diffrentes tapes de la transmission d'un courrier lectronique dans le cas habituel dun prestataire de service daccs Internet ou dune entreprise de taille significative. Prcisez les matriels (ordinateurs), les logiciels (agent utilisateur, serveur de messagerie, donnez des exemples de ces logiciels) et les protocoles utiliss? II Le protocole d'mission de courrier SMTP Le protocole SMTP est un protocole client/serveur entre un client de messagerie (un metteur de courrier) et un serveur de messagerie:

Commandes SMTP

Rponses SMTP
Archivages

CNAM- Anne 2007/2008

-90-

Exercices Technologie client-serveur

Le diagramme en flches d'change de messages suivant prsente un cas de transmission d'un courrier d'un client vers un serveur de messagerie. Client (metteur) Etablir une connexion 220 <domaine serveur> Service Ready HELO <domaine client> 250 <domaine serveur> OK MAIL FROM: <adr usager> 250 OK RCPT TO: <adr dest> 250 OK DATA 354 Start mail input, end with CRLF.CRLF Ligne 1 Ligne 2 . Dernire ligne CRLF.CRLF 250 OK QUIT 221 <serveur> Closing Connection Les messages du client vers le serveur comportent un type. HELO est une ouverture de session entre le client et le serveur (le message contient le nom de domaine du client). MAIL FROM: dfinit l'adresse mail de l'usager metteur pour le retour ventuel de diagnostics d'erreur. RCPT TO: dfinit l'adresse mail du destinataire, DATA dfinit l'enveloppe (l'entte) et le corps (le texte) du message. QUIT termine un courrier. Pour chaque message on a un code de rponse sous la forme habituelle dans l'Internet c'est dire avec un code numrique sur trois chiffres dcimaux et une explication complmentaire en clair. Un utilisateur souhaite faire fonctionner le protocole SMTP en gnrant par lui mme les messages en direction d'un serveur de courrier connu et non verrouill. Concrtement il cr un client de courrier (sous UNIX ou dans une fentre d'excution de commandes Windows) en tapant la commande : telnet cnam.fr 25 II.1) A quoi sert normalement l'utilitaire telnet? II.2) A quoi correspond la chane cnam.fr. Quelle information doit tre associe cette chane par un ingnieur systme pour que l'accs un serveur de messagerie soit possible? II.3) A quoi correspond le nombre 25? II.4) Quels sont les diffrents aspects des protocoles telnet et smtp qui permettent de faire manuellement de la messagerie avec telnet? II.5) L'utilisateur michel dans le domaine cnam.fr veut envoyer un courrier l'utilisateur pierre dans le mme domaine. Tout se passe bien. Donnez la liste des messages mis et des rponses reues (chaque message a une rponse). C'est galement la liste des lignes de textes qui s'affichent sur le terminal d'un essai manuel avec telnet (lignes de textes achemines par telnet dans le sens client vers le serveur et lignes de texte des rponses reues du serveur vers le client). CNAM- Anne 2007/2008 -91Exercices Technologie client-serveur Serveur (rcepteur)

II.6) Le protocole SMTP permet par ses diffrentes commandes un serveur de messagerie de relayer du courrier. Expliquez pourquoi? III Protocoles de rception de courrier III.1) Un protocole de rception de courrier fonctionne entre un agent utilisateur et un serveur de messagerie et permet l'utilisateur de lire son courrier. On distingue gnralement trois modes de lecture du courrier. Rappelez les trois modes possibles ? III.2) Les deux modes les plus utiliss sont le mode hors ligne associ au protocole POP et le mode en ligne associ au protocole IMAP. Citez pour chacun des deux protocoles des avantages et des inconvnients. En dduire les domaines d'application des deux protocoles? III.3) Dans un outil implantant un client POP on trouve les paramtres suivants. A quoi servent ces paramtres? SMTP server smtp.cnam.fr POP server pop.cnam.fr Mail account: natkin Mail adress: natkin@cnam.fr Reply adress: natkin@cnam.fr Le protocole POP fonctionne en mode connect avec TCP. Aprs avoir fourni un message d'acceuil aprs la connexion, chaque connexion POP passe par trois phases successives . La phase d'authentification ('Authorization' en anglais) La phase de transaction ('Transaction' en anglais) La phase mise jour ('Update' en anglais). Cette phase consiste modifier dfinitivement l'archive de courrier gre par le serveur en fonction des directives donnes par l'usager pendant le session (en particulier c'est ce moment que sont dtruites les copies indsirables). Le client et le serveur POP dialoguent en utilisant des messages de commandes et de rponses. La syntaxe des principales commandes et rponses est donne par la BNF suivante: client_commands::="USER" mailbox CRLF/ "PASS" string CRLF/ "STAT" string CRLF/ "RETR" msg CRLF/ "DELE" msg CRLF/ "QUIT" CRLF server_response::= simpleresponse / statresponse/ errorresponse simpleresponse::= "+0K" [" "*text] CRLF [multiline CRLF "." CRLF] statresponse::= "+0K" [" "1*DIGIT" "1*DIGIT] errorresponse ::="-ERR"[" "*text] CNAM- Anne 2007/2008 -92Exercices Technologie client-serveur

multiline::=1*<n'importe quelle chane caractre ASCII ne comprenant pas la chane CRLF"."CRLF> maibox::=string string::=1*<n'importe quelle chane caractre ASCII ne comprenant pas les caractres SP, TAB et CRLF> msg::=1*DIGIT text::=1*<n'importe quelle chane caractre ASCII ne comprenant pas le caractre CRLF > On retrouve ces trois phases dans l'exemple suivant du fonctionnement de POP N sens PDU change 1 S->C +OK pop.cnam.fr server ready 2 C->S USER natkin 3 S->C +OK password required for natkin 4 C->S PASS monpacs 5 S->C -ERR password supplied for natkin is incorrect 6 C->S USER natkin 7 S->C +OK password required for natkin 8 C->S PASS monpass 9 10 11 12 13 14 15 16 17 18 S->C C->S S->C C->S S->C S->C C->S S->C C->S S->C +OK maildrop has 1 messages (600 octets) STAT +OK 1 600 RETR 1 +OK <contenu du message> DELE 1 +OK QUIT +OK pop.cnam.fr signing off

Le contenu du message est le suivant: X-Mailer: Microsoft Outlook Express Macintosh Edition - 4.5 (0410) Date: Sat, 02 Jun 2001 15:26:38 +0200 Subject: Publi From: "gerard" <gerard@cnam.fr > To: natkin@cnam.fr Mime-version: 1.0 X-Priority: 3 Content-type: multipart/mixed; boundary="MS_Mac_OE_3074340399_15662732_MIME_Part" --MS_Mac_OE_3074340399_15662732_MIME_Part Content-type: text/plain; charset="ISO-8859-1" Content-transfer-encoding: quoted-printable Ci joint les publications. -CNAM- Anne 2007/2008 -93Exercices Technologie client-serveur

G=E9rard Florin --MS_Mac_OE_3074340399_15662732_MIME_Part Content-type: application/msword; name="publi.doc"; x-mac-creator="4D535744"; x-mac-type="5738424E" Content-disposition: attachment Content-transfer-encoding: base64 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAA AARQAAAA AAAAEAAARwAAAAEAAAD+////AAAAAEQAAAD/////////////////////////// //////// --MS_Mac_OE_3074340399_15662732_MIME_Part-III.4) Donner pour chaque message chang (chaque PDU change) dans lexemple dchange prcdent la phase laquelle il appartient? III.5) Pourquoi y a t'il une syntaxe spcifique pour la rponse la commande RETR? III.6) Dans l'exemple prcdent dans quelle PDU et quel usage est utilis la dfinition de multiline? III.7) Pourquoi la chane CRLF"."CRLF est-elle interdite dans la dfinition de multiline? III.8) Expliquez ce que signifient Content-type: multipart/mixed; Content-type: application/msword; name="publi.doc"; Content-disposition: attachment Content-transfer-encoding: base64 III.9) On souhaite dfinir lautomate de protocole dun client POP capable de traiter la squence de rception de courrier donne prcdemment en exemple. On identifie les cinq tats suivants: 1. En attente 2. Prparation des donnes et ouverture de la connexion TCP vers le serveur 3. Authentification 4. Transaction: rception des messages et mise en forme 5. Mise jour du serveur et fin des transferts. Reprsentez lautomate possdant les cinq tats. III.10) Sur une machine donne on dispose des appels de procdure suivants qui sont fournis par diffrents logiciels rseau. gethostbyname(in:nom_de_machine, out:IP, out, statut) listen() connect() send() receive() close() convertbase64asciitobin(in:multiline, out : nom_de_fichier,out:statut) Rappelez quels sont les diffrents logiciels qui fournissent les services prcdents ? III.11) Expliquez simplement ce qui est ralis dans chaque tat de l'automate (procdures de la liste prcdente et commandes POP utilises).

CNAM- Anne 2007/2008

-94-

Exercices Technologie client-serveur

Exercice 16 : DNS et messagerie Internet/l'approche SPF


Dans ce problme nous tudions deux mthodes de lutte contre le courrier non sollicit (spam), qui sont bases sur les relations entre la messagerie SMTP et le service de nom de domaines DNS. De nombreuses autres mthodes ont t proposes que nous n'tudions pas ici, en particulier des mthodes de filtrage visant slectionner les courriers sur le contenu. Dans ce texte, une entreprise connecte lInternet possde un nom de domaine (comme par exemple fai.com..). Cette entreprise gre un service de courrier lectronique au moyen de diffrents serveurs de messagerie SMTP. Un hte de lInternet, dont ladresse IP est par exemple a.b.c.d et dont le nom de domaine DNS est par exemple hote.domaine.. , utilise le protocole SMTP pour envoyer un courrier lectronique un destinataire dadresse usager@fai.com. 1) Dans le DNS rappelez la dfinition de la notion denregistrement ressource (RR Resource record) ? 2) A quoi servent les types denregistrements A et MX ? 3) Quelles sont les actions que doit raliser un client SMTP (qui tourne par exemple ici sur hote.domaine..) pour localiser le serveur de courrier (par exemple de usager@fai.com..) avant de commencer les changes SMTP (actions DNS et interface transport)? Pour viter une partie des courriers non sollicits (spam) certaines entreprises, pour effectuer une premire vrification simple, imposent les deux rgles suivantes. a) Tout hte de lInternet qui expdie des courriers lectroniques un serveur de courrier doit avoir obligatoirement un enregistrement ressource de type PTR dans sa base de donne DNS permettant deffectuer une recherche inverse. b) Le nom de domaine dun hte metteur de courrier doit possder un enregistrement ressource de type A. 4) Comment lenregistrement ressource de type PTR est il utilis dans le DNS pour raliser une recherche inverse? 5) En utilisant uniquement les informations changes dans le cadre des protocoles SMTP et TCP, quelles sont les informations dont dispose un serveur SMTP pour identifier lmetteur dun courrier lectronique quil vient de recevoir (trois informations) ? 6) Quelle sont les vrifications que veut effectuer un serveur SMTP dune entreprise comme fai.com qui impose aux metteurs de courriers les deux rgles a) et b) (quelles sont les requtes DNS utilises) ? 7) Ladministrateur dun site metteur de courrier, souhaite vrifier que son DNS est correctement configur pour que ses courriers ne soient pas rejets par une entreprise comme fai.com.. qui applique les rgles a) et b). Il utilise loutil nslookup disponible sous Unix ou Windows. Quelles commandes doit-il taper pour vrifier quil satisfait les deux rgles a) et b) (expliquez la formation des noms de domaines utiliss pour les lignes de commande) ? Pour exprimer votre rponse vous pouvez utiliser aussi dig ou host si vous les connaissez mieux.

CNAM- Anne 2007/2008

-95-

Exercices Technologie client-serveur

Cependant les deux rgles a) et b) nvitent plus beaucoup de courriers non sollicits car les entreprises qui font du spam le font, non pas partir de machines dans leur domaine, mais partir de machines appartenant dautres domaines de lInternet qui ont t infestes par des virus chargs dmettre les courriers indsirables. Une proposition de vrification qui amliore les rgles a) et b) a t rcemment accepte par lIETF. Lensemble des nouveaux mcanismes est baptis SPF pour Sender Policy Framework. La nouvelle vrification est base sur la cration dans le DNS dun nouveau type denregistrement ressource qui contient pour un domaine les machines habilites mettre du courrier. 8) Le nouvel enregistrement ressource a dabord t dfini en utilisant le type existant TXT. Pourquoi avoir utilis ce type existant ? Il existe de nombreuses directives en SPF pour spcifier une machine habilite mettre du courrier. Une faon trs simple dappliquer une politique SPF, consiste crer dans le DNS lenregistrement suivant :
domaine. IN TXT "v=spf1 mx all"

domaine. : le nom de domaine concern par lenregistrement ressource IN TXT : enregistrement ressource type TXT pour le rseau Internet "v=spf1" : une valeur obligatoire pour indiquer une utilisation du RR TXT en SPF version 1 "mx" "-all" : spcifie que tous les serveurs de courrier du domaine sont des metteurs autoriss : indique que tous les courriers qui ne satisfont pas la contrainte sont rejets

9) Quelles sont les vrifications qui sont effectues par un serveur SMTP dune entreprise qui applique la politique SPF vis--vis dun metteur ayant insr dans son DNS lenregistrement ressource prcdent (quelles sont les requtes DNS utilises) ? Il existe diffrentes autres variantes permettant de spcifier des metteurs de courrier autoriss que nous n'tudions pas ici: directement par le nom de domaine dun hte ou par une plage dadresses IP autorises etc 10) Supposons que la politique SPF soit gnralise, c'est--dire qu'on applique des vrifications d'autorisation d'mission, alors le volume des courriers non sollicits pourrait tre mieux contrl. Quels mcanismes additionnels les fournisseurs d'accs Internet peuventils mettre en oeuvre (selon quels critres) pour effectuer ce contrle ?

CNAM- Anne 2007/2008

-96-

Exercices Technologie client-serveur

Exercice 17 : Messagerie Internet: Analyse du contenu d'un courrier


La messagerie Internet a dlivr un courrier de publicit commerciale. Vous souhaitez analyser diffrents aspects concernant ce courrier au moyen des informations quil contient pour rechercher dventuels problmes. Vous disposez d'un client de messagerie qui vous permet dafficher le dtail des informations contenues dans ce courrier et vous obtenez la liste suivante:
Return-Path: <infos@topachat.com> X-Original-To: gerard@cnam.fr Delivered-To: gerard@cnam.fr Received: from brangien.cnam.fr (brangien.cnam.fr [163.173.128.20]) by copernic.cnam.fr (Postfix) with ESMTP id D0E5DEB172 for <gerard@cnam.fr>; Thu, 8 Mar 2007 06:34:09 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by brangien.cnam.fr (Postfix) with ESMTP id C46AD12390B for <gerard@cnam.fr>; Thu, 8 Mar 2007 06:34:09 +0100 (CET) X-Virus-Scanned: amavisd-new at cnam.fr Received: from brangien.cnam.fr ([127.0.0.1]) by localhost (brangien.cnam.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id iJMgWyOys9h3 for <gerard@cnam.fr>; Thu, 8 Mar 2007 06:34:08 +0100 (CET) Received: from mta1.topachat-clust.com (mta1.topachat-clust.com [195.167.228.242]) by brangien.cnam.fr (Postfix) with ESMTP id 3584B123AD0 for <gerard@cnam.fr>; Thu, 8 Mar 2007 06:34:06 +0100 (CET) Received: from topachat.com (localhost [127.0.0.1]) by mta1.topachat-clust.com (8.12.9+Sun/8.12.9) with ESMTP id l285Y1Vg001884 for <gerard@cnam.fr>; Thu, 8 Mar 2007 06:34:05 +0100 (MET) Content-Transfer-Encoding: binary Content-Type: multipart/alternative; boundary="_-la-cesure=_1173332045212331209" MIME-Version: 1.0 Organization: infos@topachat.com Reply-To: infos@topachat.com X-Comment: CODEOP=20070307-1-39,QOS=1,ID=Z2VyYXJkQGNuYW0uZnI= X-Mailer: mailing.1.8.0 by FG Date: Thu, 8 Mar 2007 05:34:05 UT From: infos@topachat.com To: gerard@cnam.fr Subject: =?ISO-8859-1?Q?Le compte =E0 rebours a commenc=E9 ...?= Message-Id: <1173332045.Z2VyYXJkQGNuYW0uZnI=.1.20070307-1-39@topachat.com> This is a multi-part message in MIME format. --_-la-cesure-=_1173332045212331209 Content-Disposition: inline Content-Length: 198 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="iso-8859-1" MIME-Version: 1.0 Date: Thu, 8 Mar 2007 05:34:05 UT Bonjour, La newsletter au format Html se trouve ici: http://www.topachat.com/mail/07032007.htm L'Anim'Team infos@topachat.com

CNAM- Anne 2007/2008

-97-

Exercices Technologie client-serveur

Pour vous dsinscrire: http://www.topachat.com/pages/black.php --_-la-cesure-=_1173332045212331209 Content-Disposition: inline Content-Length: 10830 Content-Transfer-Encoding: 8bit Content-Type: text/html; charset="iso-8859-1" MIME-Version: 1.0 Date: Thu, 8 Mar 2007 05:34:05 UT <html> <head> <title>Le compte &agrave; rebours &agrave; commencer ...</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style> deco { background-repeat: no-repeat; } v12 { font-size: 14px;} </style> </head> <body bgcolor="#FFFFFF" text="#000000" background="http://promo.topachat.com/mail/images/fond2px.gif"> <center> <p><font face="arial" style="font-size: 9px; color: #000000" >Si ce message ne s'affiche pas correctement, suivez ce lien: <a href="http://www.topachat.com/mail/07032007.htm">http://www.topachat.com/ma il/07032007.htm</a><br> ----- Ici se poursuit un document HTML beaucoup trop long pour tre conserv. --------Le courrier lectronique se termine par les lignes suivantes : ----</body> </html> --_-la-cesure-=_1173332045212331209

1) Le courrier prcdent est dfini la base par les spcifications de la RFC 822. Rappelez les grandes lignes de cette spcification (rappelez les principes gnraux qui gouvernent la structure des messages dans la messagerie Internet). Vous illustrerez votre rponse en prenant pour chaque point cit un exemple dans le contenu du courrier prcdent. 2) Ce message est galement gouvern par les spcifications de lextension MIME. Rappelez les grandes lignes de cette extension. Donnez des exemples significatifs de lincidence des extensions apportes par le format MIME sur le courrier prcdent. 3) On trouve au dbut du courrier plusieurs lignes dinformations commenant par received. Prenons par exemple la premire : Received: from brangien.cnam.fr (brangien.cnam.fr [163.173.128.20]) by copernic.cnam.fr (Postfix) with ESMTP id D0E5DEB172 for <gerard@cnam.fr>; Thu, 8 Mar 2007 06:34:09 +0100 (CET) A quoi sert cette information ? Commentez les diffrents champs dans cette directive ? 4) Pouvez vous retracer lhistoire de lacheminement de ce courrier (lieux par lesquels il est pass et heures) ? Utilisez cette trace pour expliquer le mieux possible les diffrents traitements que ce courrier a subi. 5) Expliquez la directive suivante. Subject: =?ISO-8859-1?Q?Le compte =E0 rebours a commenc=E9 ...?= Indications : Quel est son objectif ? Pourquoi cette forme de prsentation bizarre ? CNAM- Anne 2007/2008 -98Exercices Technologie client-serveur

6) Expliquez la ligne dentte suivante : Content-Type: multipart/alternative; boundary="_-la-cesure-=_1173332045212331209"

7) Finalement, ce courrier vous parait-il prsenter un problme ou est-il normal (son metteur est-il connu, le message a til t relay un nombre anormal de fois, son contenu est-il suspect) ?

CNAM- Anne 2007/2008

-99-

Exercices Technologie client-serveur

Exercice 18 : Utilisation d'un rsolveur DNS


Pour mieux comprendre les diffrents noms et adresses utiliss dans un courrier, un rsolveur interactif DNS a t lanc depuis un poste de travail. Loutil utilis ici est nslookup qui est activ sous Microsoft Windows 2000 dans la fentre invite de commande par lchange suivant. Le rsultat est le copi coll de la fentre, fautes dorthographes dans nslookup francis Windows comprises.
Microsoft Windows 2000 [Version 5.00.2195] (C) Copyright 1985-2000 Microsoft Corp. C:\>nslookup Serveur par dfaut : dns2.proxad.net Address: 212.27.54.252

La premire recherche effectue concerne le nom de domaine topachat.com selon le type A. Nous allons voir dans les exemples que nos recherches dans le DNS effectues avec nsloolup sont toujours prcdes dune directive qui fixe le type des enregistrements ressources recherchs (les RR ou Resources Records). La commande set q=xxxx est une abrviation pour set querytype=xxxx.
> set q=a > topachat.com Serveur : dns2.proxad.net Address: 212.27.54.252 R'ponse ne faisant pas autorit': Nom : topachat.com Addresses: 213.41.42.206, 213.41.42.210, 195.167.228.246, 213.41.42.216 213.41.42.202, 213.41.42.207, 213.41.42.203, 195.167.228.245, 195.167. 228.247

1) Commentez cette recherche a) A quoi correspondent les lignes Serveur et Address ? b) Pourquoi cette rponse a comme statut : Rponse ne faisant pas autorit ? c) Pourquoi le nom de domaine topachat.com est-il associ ces nombreuses adresses IP (dans quel but) ? La seconde recherche effectue concerne le nom de domaine topachat.com selon le type MX. On avait aussi vu apparatre dans le courrier du problme prcdent lhte mta1.topachat-clust.com qui jouait un rle dans le courrier de cette entreprise.
> set q=mx > topachat.com Serveur : dns1.proxad.net Address: 212.27.53.252 R'ponse ne faisant topachat.com MX topachat.com MX topachat.com MX pas autorit': preference = 10, mail exchanger = ns2.topachat-clust.com preference = 20, mail exchanger = ns4.topachat.com preference = 40, mail exchanger = ns0.topachat-clust.com internet address = 195.167.228.241 internet address = 213.41.42.199 internet address = 213.41.42.198

ns4.topachat.com ns0.topachat-clust.com ns2.topachat-clust.com > set q=a

CNAM- Anne 2007/2008

-100- Exercices Technologie client-serveur

> mta1.topachat-clust.com Serveur : dns2.proxad.net Address: 212.27.54.252 R'ponse ne faisant pas autorit': Nom : mta1.topachat-clust.com Addresses: 213.41.42.197, 195.167.228.242

2) Commentez ces recherches a) Pourquoi selon le type MX, le nom de domaine topachat.com correspond un ensemble de noms de domaines ? b) Le nom de domaine mta1.topachat-clust.com ne figure pas dans la liste de rsultat pour le domaine topachat.com avec le type MX. Comment expliquer cela ? La troisime recherche concerne le domaine cnam.fr.
> set q=mx > cnam.fr Serveur : dns1.proxad.net Address: 212.27.53.252 R'ponse ne faisant pas autorit': cnam.fr MX preference = 10, mail exchanger = brangien.cnam.fr brangien.cnam.fr internet address = 163.173.128.20 > set q=cname > imap.cnam.fr Serveur : dns1.proxad.net Address: 212.27.53.252 R'ponse ne faisant pas autorit': imap.cnam.fr canonical name = copernic.cnam.fr > set q=a > copernic.cnam.fr Serveur : dns2.proxad.net Address: 212.27.54.252 R'ponse ne faisant pas autorit': Nom : copernic.cnam.fr Address: 163.173.128.12

3) Commentez ces recherches effectues pour confirmer des hypothses relatives au courrier lectronique du CNAM dduites du courrier utilis au problme prcdent. a) Rappelez la dfinition dun RR (enregistrement ressource) de type cname ? b) On peut confirmer les informations relatives au rle de brangien.cnam.fr et de copernic.cnam.fr vues dans le courrier lectronique. Lesquelles ? Une quatrime recherche concerne un courrier non sollicit dans lequel est apparu comme adresse source du courrier 66.63.190.176. Cette adresse est mentionne comme inconnue dans ce courrier concernant une offre de cartouches dencre (courrier non cit dans le sujet parce que trop volumineux). La recherche qui a t effectue est la suivante :
> set q=ptr > 176.190.63.66.in-addr.arpa.. Serveur : dns1.proxad.net Address: 212.27.53.252

CNAM- Anne 2007/2008

-101- Exercices Technologie client-serveur

R'ponse ne faisant pas autorit': 176.190.63.66.in-addr.arpa name = 66.63.190.176.oc3networks.com > set q=any > oc3networks.com.. Serveur : dns1.proxad.net Address: 212.27.53.252 R'ponse ne faisant pas autorit': oc3networks.com internet address = 66.63.160.51 oc3networks.com nameserver = ns2.oc3networks.com oc3networks.com nameserver = ns1.oc3networks.com oc3networks.com primary name server = ns1.oc3networks.com responsible mail addr = hostmaster.oc3networks.com serial = 9 refresh = 86400 (1 day) retry = 3600 (1 hour) expire = 432000 (5 days) default TTL = 3600 (1 hour) oc3networks.com MX preference = 10, mail exchanger = mail.oc3networks.com mail.oc3networks.com ns2.oc3networks.com ns1.oc3networks.com > internet address = 66.63.164.163 internet address = 66.63.164.173 internet address = 66.63.160.6

4) Commentez ces recherches. a) Pourquoi fait-on une recherche de type ptr sur un nom de domaine de la forme 176.190.63.66.in-addr.arpa..? b) Pourquoi l'adresse IP 66.63.190.176 avait elle t mentionne dans le courrier lectronique comme inconnue ('unknown') ? c) Linformation obtenue sur la source du courrier est quil provient dun domaine dont le nom est oc3networks.com. Quels RR obtient-on en fait par la recherche sur le type any sur linformation obtenue sur la source du courrier oc3networks.com ?

CNAM- Anne 2007/2008

-102- Exercices Technologie client-serveur

Exercice 19 : IMAP Internet Message Access Protocol


Le dialogue suivant est un test du protocole IMAP (Internet Message Access Protocol en version 4 RFC1730 IMAP4 de dcembre 1994). De manire faciliter la lecture, les ensembles cohrents (une commande suivie dune rponse) ont t espacs par des lignes blanches. En IMAP4, chaque commande est prfixe par un identificateur alphanumrique (une tiquette ou tag) qui est reprise dans la rponse. Normalement une tiquette diffrente doit tre utilises pour chaque commande de manire associer commandes et rponses. Ici nous avons utilis chaque fois les mmes deux caractres . (caractre point suivi de caractre espace).
Microsoft Windows 2000 [Version 5.00.2195] (C) Copyright 1985-2000 Microsoft Corp. C:\>telnet imap.cnam.fr.. 143 Trying 163.173.128.12... Connected to imap.cnam.fr. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE] Courier-IMAP ready. Copyright 1998-2005 Double Precision, Inc. See COPYING for distribution informaotion. . LOGIN gerard le_mot_de_passe_secret_a_t_donn_ici . OK LOGIN Ok. . * * * * * * . SELECT INBOX FLAGS (\Draft \Answered \Flagged \Deleted \Seen \Recent) OK [PERMANENTFLAGS (\* \Draft \Answered \Flagged \Deleted \Seen)] Limited 24 EXISTS 24 RECENT OK [UIDVALIDITY 1025189503] Ok OK [MYRIGHTS "acdilrsw"] ACL OK [READ-WRITE] Ok

. SEARCH since 1-july-2007 * SEARCH . OK SEARCH done. . FETCH 1 (BODY.PEEK[HEADER.FIELDS (SUBJECT)]) * 1 FETCH (BODY[HEADER.FIELDS ("SUBJECT")] {25} Subject: Re: Valeur C ) . OK FETCH completed. . FETCH 6 (BODY.PEEK[HEADER.FIELDS (SUBJECT)]) * 6 FETCH (BODY[HEADER.FIELDS ("SUBJECT")] {33} Subject: GRIDtoday Daily News ) . OK FETCH completed. . LOGOUT * BYE Courier-IMAP server shutting down . OK LOGOUT completed Perte de la connexion l'hte.

CNAM- Anne 2007/2008

-103- Exercices Technologie client-serveur

Appuyez sur une touche pour continuer...

1) Pourquoi peut-on simuler un client IMAP en utilisant la commande suivante ? C:\>telnet imap.cnam.fr.. 143 2) Pourquoi en IMAP doit-on sauthentifier ? . LOGIN gerard le_mot_de_passe_secret_a_t_donn_ici . OK LOGIN Ok. 3) Pourquoi doit-on obligatoirement slectionner un dossier de courrier (une boite lettre) pour travailler en IMAP
. SELECT INBOX

4) La commande FETCH permet comme en POP3, de rcuprer un courrier selon un filtrage perfectionn. Qu'est ce qui a t rcupr ici ? Pourquoi IMAP est-il prsent comme conomisant la bande passante du rseau ?
. FETCH 1 (BODY.PEEK[HEADER.FIELDS (SUBJECT)])

5) Il y a longtemps on a pu raliser la relve du courrier en utilisant le protocole SMTP. On voit que IMAP est driv de SMTP mais il en est maintenant trs loign. Pourquoi (quel avantage a-t-on en utilisant IMAP) ?

CNAM- Anne 2007/2008

-104- Exercices Technologie client-serveur

Exercice 20 : WAP ('Wireless Application Protocol')


Le WAP (Wireless Application Protocol) a pour objectif de permettre laccs des ressources de lInternet (informations ou services) au moyen de clients mobiles lgers qui sont essentiellement des tlphones portables ou des organiseurs (PDA 'Portable Document Assistant'). Les applications vises sont voisines de celles du Web en diminuant les fonctionnalits attendues : recherches simples (numros de tlphone, adresses, horaires de transports), accs des informations courtes (conditions mto, cours de bourse, trafic routier ), transactions simples (achat de billets, ). Le WAP est dfini par un ensemble de normes labores par le Wapforum (regroupement de constructeurs comme Ericsson, Motorola, Nokia, ) partir de 1997. Le WAP drive des standards Internet du Web (TCP/IP, HTML, XML, HTTP) en les adaptant lunivers des tlphones portables cest dire de petits terminaux sans fils. En particulier le WAP dfinit la notion de micro navigateur (micro browser) qui minimise la demande en ressources matrielles (mmoire, puissance processeur, dbit de communication) sur un poste client.

Premire partie : le langage WML (Wireless Markup Language)


Un micro navigateur WAP peut afficher des informations des lors quelles sont spcifies dans le langage de balise WML pour Wireless Markup Language. WML est un langage de balises qui ralise une partie des fonctionnalits offertes par HTML. Les ensembles dinformations changes en WML sont appels des decks. Un deck est dfini par la balise wml. Les decks sont composs dunits daffichage baptises cartes (dfinies par la balise card). Sur un poste client on affiche une carte la fois. Une carte peut contenir du texte, des liens (en particulier sur dautres cartes), des images. Par exemple un texte affich est encadr par la balise p (pour paragraphe). Quand un deck WML est accd, lensemble des cartes quil contient est charg partir du serveur WAP. Une navigation entre cartes est alors possible, sous le contrle du micro navigateur local, sans aucun accs au serveur distant. Voici un exemple trs simple de document wml (un deck avec une carte). Dans cet exemple on voit que WML est dfini comme un dialecte XML version 1.0 (un document WML est tout dabord un document XML 1.0).
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="Bourse" title="A la bourse de Paris"> <p> A louverture ce matin le CAC40 .. </p> </card> </wml>

Le rsultat affich sur un micro navigateur pour le source prcdent pourrait ressembler :

CNAM- Anne 2007/2008

-105- Exercices Technologie client-serveur

-- A la bourse de Paris A louverture ce matin le CAC 40 ..

La forme graphique prcdente ne correspond pas un micro navigateur rel et est donne titre purement indicatif pour comprendre lexemple. 1) A quoi correspondent les trois premires lignes du document ?
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

2) Le document XML prcdent est-il bien form ? 3) Que devrait-on faire pour vrifier que ce document est valide ? Le second exemple suivant montre un document wml un peu plus compliqu avec un deck et deux cartes (carte1 et carte2) qui senchanent. La premire carte permet de slectionner une seule rponse parmi un ensemble de rponses possibles au moyen de boutons. Le rsultat est pass dans une variable code_reponse la seconde carte qui affiche la slection ralise.
<?xml version="1.0"?> <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml"> <wml> <card id="carte1" title="Menu"> <do type="accept" label="Choisissez"> <go href="#carte2"/> </do> <p> <select name="code_reponse"> <option value="Meteo"> Infos Meteo </option> <option value="Trafic"> Infos Trafic </option> <option value="Bourse"> Infos Bourse </option> </select> </p> </card> <card id="carte2" title="Choix"> <p> Vous avez selectionne : $(code_reponse) </p> </card> </wml>

La premire carte affiche, aprs avoir slectionn Infos mto, pourrait tre :

CNAM- Anne 2007/2008

-106- Exercices Technologie client-serveur

----- Menu ---------Infos Meteo Infos Trafic Infos Bourse Choisissez

La seconde carte affiche pourrait tre :


----- Choix ---------Vous avez selectionne : Meteo

4) Quels sont les lments et les attributs prsents dans lexemple prcdent ? Ce document possde til des lments vides ? 5) Quel est larbre rsultant de lanalyse syntaxique du document prcdent ? 6) Quels sont les principaux avantages du choix de XML pour dfinir WML? La discussion ne doit pas consister recopier tous les avantages de XML mais discuter des avantages dune solution XML par rapport une solution de type HTML, dans le cas prcis du WAP. Par exemple on aurait pu choisir une version simplifie de HTML qui aurait limit dans HTML les balises utilisables pour des terminaux simples.

Seconde partie : les protocoles de communication du WAP


La suite des protocoles de communication du WAP a pour objectif de raliser des fonctionnalits similaires celles de la suite des protocoles Internet. Cette suite a t dfinie en deux tapes. Dans les versions 1 (1.0 , 1.1, etc.) les protocoles (voir plus loin WDP, WTLS, WTP, WSP) sont compltement spcifiques des appareils aux possibilits limites que sont les tlphones portables ou les PDA. Ils sont incompatibles avec les protocoles de la suite Internet/Web. A partir de la version 2 le standard WAP inclut, en plus des protocoles de la version 1, la suite des protocoles standards de l'Internet et du web (WWW World Wide Web). Pour dialoguer avec un serveur Web habituel, les communications WAP en version 1 doivent donc tout d'abord tre ralises entre un appareil WAP version 1 et une passerelle qui transforme les messages et les formats spcifiques WAP version 1 en messages et formats habituels de l'Internet et du Web.

CNAM- Anne 2007/2008

-107- Exercices Technologie client-serveur

Client WAP Version 1

Passerelle WDP, WTLS, WTP,WSP WAP TCP/IP, HTTP

Serveur Web

Dans la version 1 les protocoles du WAP comportent quatre couches principales qui utilisent les services d'un protocole de communication de rseau sans fil:

WSP ('Wap Session Protocol')

WTP ('Wap Transaction Protocol')

WTLS ('Wap Transaction Layer Security')

WDP ('Wap Datagram Protocol')

GSM, Bluetooth, . (Protocoles de communication du rseau sans fils)

7) WDP ('Wap Datagram Protocol') est un protocole qui ralise au dessus du protocole de communication du rseau sans fil (par exemple le protocole GSM des tlphones portables) un mode de communication trs analogue celui du protocole UDP. En fonction des caractristiques de la couche UDP que vous connaissez quel est l'objectif poursuivi par la couche WDP dans la pile des protocoles WAP ? 8) WTLS est un protocole optionnel qui ralise dans l'univers WAP des fonctions similaires au protocole Internet SSL/TLS. Selon les principales fonctions ralises par SSL/TLS que vous rappellerez pourquoi avoir introduit cette couche dans la pile des protocoles WAP en version 1.1 ? 9) WTP ('Wap Transaction Protocol') n'est pas un protocole transactionnel au sens de la gestion de l'accs concurrent aux donnes et de la validation atomique. WTP dans le mode 1 de fonctionnement ralise essentiellement un contrle d'erreur par acquittement positif et CNAM- Anne 2007/2008 -108- Exercices Technologie client-serveur

temporisateur sur les messages achemin par WDP. Dans le mode 2 , WTP implante un mode client serveur trois messages mission, acquittement positif, rponse. Par ailleurs WTP effectue galement la fragmentation et le rassemblage des messages longs. Quelle est dans le monde Internet/Web le protocole de transport utilis par le protocole HTTP? Pourquoi avoir dans le WAP introduit le protocole WTP avec les fonctionnalits prcdentes succinctement dcrites de contrle d'erreur et de fragmentation ? 10) WSP ('Wap Session Protocol') possde deux modalits: avec et sans connexion. Dans sa modalit WSP/B , WSP est un protocole sans connexion, sans tat qui ralise un sous ensemble du protocole HTTP 1.1 . Il comporte pour cela des messages de requte et de rponse et achemine des informations similaires HTTP 1.1 (ligne initiale, enttes, corps de message). Une diffrence essentielle de WSP avec HTTP 1.1 est que les diffrents champs caractristiques d'une requte ou d'une rponse WSP sont cods en binaire alors qu'ils sont en format texte en HTTP. De mme, il a t dfini un format WML binaire baptis WBXML ('Wap Binary XML') qui encode en binaire au moyen d'un ensemble de rgles d'encodage les documents WML changs dans les messages WSP. Un document WML encod en WBXML possde un format standard avec une entte, un dictionnaire de chanes de caractres avec leur encodage et un ensemble d'lments encods. Pourquoi avoir dfini WSP/B comme un sous ensemble de HTTP 1.1 cod en binaire de mme qu'un codage binaire des documents WML ?

CNAM- Anne 2007/2008

-109- Exercices Technologie client-serveur

Exercice 21 : Services sur la toile ('Web Services')


Les services sur la toile WEB Services forment une nouvelle approche de communication de programme programme entre des applications clientes et des services en ligne sur la toile mondiale (WWW World Wide Web ). Lobjectif de base des services sur la toile, est donc damliorer les communications entre des programmes fonctionnant sur des sites clients distribus dans lInternet mondial et des applications serveuses. Les domaines dapplication viss sont principalement ceux du commerce lectronique. Il sagit en fait de la dfinition dun nouveau type dintergiciel (middleware) client serveur qui se place en rival de propositions comme CORBA, DCOM, ou Java RMI. Comme tout intergiciel les services WEB sont dfinis avec un outil central qui est le protocole de communication et de nombreux outils complmentaires qui traitent des nombreux problmes annexes (annuaire rparti, scurit, transactionnel, coordination, ). Les deux ides essentielles la base de cette nouvelle approche sont dune part de faire raliser les communications entre applications en utilisant le protocole HTTP et dautre part de spcifier toutes les normes (structures de donnes, formats de messages) en utilisant le langage XML. Cette approche est soutenue activement par de trs nombreux diteurs de logiciels. Les entreprises intresses par les services web et leur processus de normalisation sont runies au sein de consortiums dont le plus important est le W3C (World Wide Web Consortium). SOAP (Simple Object Access Protocol) est le protocole de communication des services Web. Il dfinit deux modes de communications entre programmes : un protocole de communication en mode message et un protocole de communication en mode appel de procdure distante (RPC). SOAP utilise XML pour reprsenter les donnes changes. Les normes SOAP sont gnralement dcrites en supposant lutilisation de HTTP comme protocole sous-jacent (pour acheminer les messages SOAP) mais il est aussi indiqu dans les documents SOAP que des protocoles comme SMTP ou dautres protocoles comme des MOM peuvent galement tre utiliss. 1) SOAP a pour objectif de fournir un mode de communications par messages asynchrones et un mode de communication par RPC. Rappelez les grandes lignes de ces catgories de mode de communication ? 2) Quel est l'usage actuel de HTTP. Soap propose d'utiliser HTTP comme un moyen de communications entre programmes. Quels avantages et quels inconvnients voyez vous la ralisation de communications entre programmes en utilisant le protocole HTTP ? 3) On rappelle que le protocole HTTP est prsent dans ses RFC comme offrant une communication au niveau des objets. HTTP utilise dans son vocabulaire la notion de mthodes. Quelles sont les diffrentes mthodes offertes en http ? 4) HTTP vous semble til correspondre un protocole d'appel de procdure distante (justifiez votre rponse) ? 5) Les concepteurs de SOAP ont choisi XML comme outil de reprsentation de la structure des messages. Quel est le principal langage, utilis avant XML, pour reprsenter les diffrents types de donnes manipuls par des programmes et changs par messages ?

CNAM- Anne 2007/2008

-110- Exercices Technologie client-serveur

6) Quels sont les avantages et quels sont les inconvnients de lutilisation de XML pour reprsenter la structure des messages changs dans un protocole comme SOAP ? Dans le fonctionnement de SOAP en mode RPC, voici un exemple de message dappel (extrait du document W3C SOAP primer). Lobjectif de lchange est de confirmer une rservation prcdemment faite et deffectuer le paiement.
POST /Reservations HTTP/1.1 Host: travelcompany.example.org Content-Type: application/soap+xml; charset="utf-8" Content-Length: nnnn <?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" > <env:Header> </env:Header> <env:Body> <m:chargeReservation env:encodingStyle="http://www.w3.org/2003/05/soap-encoding" xmlns:m="http://travelcompany.example.org/"> <m:reservation xmlns:m="http://travelcompany.example.org/reservation"> <m:code>FT35ZBQ</m:code> </m:reservation> <o:creditCard xmlns:o="http://mycompany.example.com/financial"> <n:name xmlns:n="http://mycompany.example.com/employees"> ke Jgvan yvind </n:name> <o:number>123456789099999</o:number> <o:expiration>2005-02</o:expiration> </o:creditCard> </m:chargeReservation> </env:Body> </env:Envelope>

Le message rsultat correspondant au message de requte prcdent a la forme suivante (la plupart des dtails sont omis pour limiter le volume de lexemple) :
HTTP/1.1 200 OK Content-Type: application/soap+xml; charset="utf-8" Content-Length: nnnn <?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" > <env:Header> ... ... </env:Header> <env:Body> ... ... </env:Body> </env:Envelope>

7) A quoi correspondent les cinq premires lignes du message dappel. Commentez les informations qui se trouvent dans chacune des cinq lignes ? 8) Le document XML qui encode lappel est compos dune entte vide et dun corps qui contient le nom de la mthode excuter et les paramtres dappel. Quel est larbre rsultant de lanalyse syntaxique du document prcdent ? CNAM- Anne 2007/2008 -111- Exercices Technologie client-serveur

Lexemple suivant montre un fonctionnement de SOAP avec SMTP. Le message de requte est alors le suivant:
From: a.oyvind@mycompany.example.com To: reservations@travelcompany.example.org Subject: Travel to LA Date: Thu, 29 Nov 2001 13:20:00 EST Message-Id: <EE492E16A090090276D208424960C0C@mycompany.example.com> Content-Type: application/soap+xml <?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Header> ... </env:Header> <env:Body> ... </env:Body> </env:Envelope>

9) Expliquez comment fonctionne le protocole soap avec SMTP (est ce que reservations@travelcompany.example.org est le nom du programme qui excute lappel) ? 10) Quel(s) avantage(s) peut-on trouver lutilisation de SMTP comme protocole de transport des messages SOAP ? 11) WSDL (Web Service Definition Language) est le langage de dfinition dinterfaces des services web (IDL Interface Definition Language). Rappelez le rle dun tel langage dans le cadre dun protocole de communication en approche objets rpartis (par exemple dans le standard CORBA) ? Comme tous les outils dfinis dans le cadre des services sur la toile, WSDL est un dialecte XML. La structure dune dclaration WSDL est dcrite dans ses grandes lignes comme suit. WSDL commence par permette un utilisateur de dcrire de nouveaux types de donnes dans un langage baptis xmlschma (cette possibilit est dcrite par les trois lignes suivante dans la description gnrale de la structure d'un document WSDL) <wsdl:types> <xsd:schema> </xsd:schema> </wsdl:types> WSDL propose ensuite de dcrire la structure dun ensemble de messages qui sont en fait des messages de requtes et de rponse utiliss dans le cadre de RPC. <wsdl:message name="nmtoken"> <part name="nmtoken" element="qname"? type="qname"?/> </wsdl:message> Ensuite WSDL dfinit un lment type de port comme un ensemble doprations. Une opration est dfinie par un message dappel (input) et un message rsultat (output). Le standard prvoit aussi la description dune structure de donnes associe aux erreurs. <wsdl:portType name="nmtoken"> <wsdl:operation name="nmtoken"> <wsdl:input name="nmtoken"? message="qname"> </wsdl:input> <wsdl:output name="nmtoken"? message="qname">? CNAM- Anne 2007/2008 -112- Exercices Technologie client-serveur

</wsdl:output> <wsdl:fault name="nmtoken" message="qname"> </wsdl:fault> </wsdl:operation> </wsdl:portType> Llment binding (liaison) dfinit ensuite concrtement comment accder un service en indiquant son type de port, le protocole utilis pour y accder (c'est principalement Soap en mode HTTP mais on a vu que dautres possibilits sont prvues) et la localisation dans la toile de ce service (URI de lendroit ou se trouve le service web). <wsdl:binding name="nmtoken" type="qname"> <wsdl:operation name="nmtoken"> <wsdl:input> </wsdl:input> <wsdl:output> </wsdl:output> <wsdl:fault name="nmtoken"> </wsdl:fault> </wsdl:operation> </wsdl:binding> Finalement le service rendu sur le Web par une entreprise peut tre compos de plusieurs ports cest dire de plusieurs applications accessibles sur le web (correspondant des liaisons ou 'binding' que nous venons de voir) et donc localises ventuellement sur des serveurs diffrents. <wsdl:service name="nmtoken"> <wsdl:port name="nmtoken" binding="qname"> </wsdl:port> </wsdl:service> 12) Comparez ce langage de dfinition d'interface celui de Corba. Suggestions pour construire la rponse : Pourquoi dcrire des types de donnes ( quoi correspond cette possibilit en IDL CORBA) ? Pourquoi dcrire des types de ports qui regroupent des oprations ( quoi correspond cette possibilit en IDL CORBA) ? Pourquoi dcrire des ports qui dfinissent des points d'accs concrets des services ( quoi correspond cette possibilit en IDL CORBA).

CNAM- Anne 2007/2008

-113- Exercices Technologie client-serveur

Exercice 22 : Protocole SIP ('Session Initiation Protocol')


Le protocole SIP (Session Initiation Protocol) a t conu partir de 1996 par le groupe de travail de lIETF MMUSIC (Multiparty MUltimedia Session Control), une manation du groupe de travail sur la diffusion dans lInternet Mbone (Multicast backBONE). Il a ensuite t dvelopp jusqu ce jour. SIP est destin la cration, la modification et la terminaison de sessions dchanges de donnes multimdias entre usagers du rseau Internet. Ses domaines dapplications principaux sont donc ceux de louverture et de la fermeture des sessions dchanges de textes (messagerie instantane), audio (communications tlphoniques), audio/vido (confrences multimdia, diffusion de films, jeux vidos en rseau). De manire gnrale tout change de donnes multimdia temps rel en pair pair peut tre supervis en utilisant SIP. SIP est assez largement diffus depuis 2001 surtout dans le domaine de la tlphonie. La RFC initiale est de 1999 et les principales RFC actuelles sont les RFC 3261 3266 parues en 2002. SIP est un protocole client serveur de niveau application. Il sert pour la signalisation c'est--dire la mise en relation dentits distantes et lchange dinformations dfinissant le contexte dune communication multimdia (protocole de transport utilis, codage utilis, ). SIP doit tre clairement distingu de la transmission proprement dite des donnes multimdia (paquets dchantillons de son, dimages ou de donnes informatiques). On utilise gnralement alors le protocole de transport de donnes multimdia temps rel RTP/RTCP (Real-time Transport Protocol et son contrle Real-time Control Protocol) et/ou tous les autres protocoles associs aux communications avec qualit de service RTSP (Real-time Streaming Protocol), RSVP (Resource Reservation Protocol) . Pour faire de la signalisation, SIP rutilise et tend de trs nombreux aspects existants dans des protocoles Internet : HTTP (les formats de messages), DNS (la gestion des noms et adresses), SMTP (adressage, enttes et codage MIME des donnes multimdia). SIP utilise aussi un protocole moins connu SDP (Session Description Protocol) spcialis dans la ngociation de paramtres dchanges de donnes multimdia. SIP peut fonctionner soit sur TCP soit sur UDP (on peut utiliser UDP pour des raisons d'efficacit). 1) Rappelez la diffrence entre le fonctionnement des communications en mode connect et en mode non connect ? 2) Ltablissement des connexions au niveau application a t vu par exemple dans TELNET ou dans SMTP. C'est aussi un problme majeur dans une communication multimdia. Pourquoi ? Donnez le maximum de raisons (de tches accomplir) qui justifient un protocole particulier de connexion pour des communications multimdia interactives ?

SIP et DNS
Pour raliser des oprations SIP deux utilisateurs (user agent) dialoguent en changeant des messages selon un protocole client serveur de sorte que chaque utilisateur possde une partie client UAC (User Agent Client) et une partie UAS (User Agent Server). Par ailleurs, pour arriver se mettre en relation, les utilisateurs SIP utilisent des serveurs SIP. Un serveur SIP peut jouer diffrents rles : a) Mandataire (proxy server). Cest un relais des messages de signalisation SIP qui ralise des fonctions associes un proxy. Par exemple pour trouver le destinataire effectif dun message SIP, un serveur proxy SIP utilise un serveur dannuaires (serveur de localisation location server). CNAM- Anne 2007/2008 -114- Exercices Technologie client-serveur

b) Redirection des appels (redirect server). Cest un serveur qui est capable de rediriger des appels vers des serveurs mieux appropris pour rendre le service (par exemple aprs le dplacement du correspondant dans le rseau Internet). c) Enregistrement dune adresse (registar server). Ce type de serveur accepte des requtes denregistrement de localisation de la part des usagers (correspondance nom logique adresse IP). Il utilise pour cela une gestion dannuaires de correspondants (location server). Sauf sil est capable dtablir seul une communication avec un correspondant car il a toutes les informations ncessaires, un utilisateur SIP doit en gnral tout dabord trouver un serveur SIP dans un domaine pour raliser les fonctions qui viennent dtre dcrites. Un utilisateur utilise pour cela le DNS. Lenregistrement ressource du DNS utilis ici est de type SRV qui est un raccourci pour serveur. SRV sert dfinir, pour un domaine, le nom dun hte qui rend un service donn. Un tel outil peut concerner tous les services offerts dans linternet. Ceux qui correspondent des ports biens connus comme http, ftp, mais aussi des services commerciaux propritaires nayant pas de port bien connu ou mme des services non ouverts dfinis en interne dans une entreprise. La structure de lenregistrement SRV est la suivante : srvce.prot.name ttl class rr pri weight port target srvce : dfinit le type du service. Le nom du service doit tre prcd selon la dernire RFC dun soulignement _ (le caractre underscore sert distinguer les services des autres noms de domaine). Il existe une liste de services autoriss (http, ftp, ldap, ). prot : le nom du protocole de transport utilis prcd de soulignement _ (TCP , UDP, ). name : le nom du domaine dans lequel on veut trouver le serveur (par exemple cnam.fr). pri : la priorit du serveur (un entier positif partir de 0, les priorits les plus leves sont les plus petites valeurs). weight : la capacit du serveur pour la rpartition de charge (par exemple si lon a deux serveurs avec valeurs 1 et 4 le second serveur est quatre fois plus puissant que le premier). port : le numro du port permettant daccder au service target : le nom de domaine du serveur (de lhte qui rend le service). Un point indique que le service en question nest pas rendu pour ce domaine. Un exemple de dfinition dun service pourrait tre au CNAM : _http._tcp.cnam.fr. 86400 IN SRV 0 5 80 www.cnam.fr. 3) Dans le DNS, sans utiliser SRV, on peut obtenir des informations de localisation de serveurs. Pouvez vous citer deux enregistrements ressources utilisables cette fin? 4) Sachant que le port imap est le 143, quel enregistrement ressource devrait dfinir le CNAM pour indiquer ses usagers que son serveur imap sappelle imap.cnam.fr (1 point) ? Quel enregistrement ressource devrait tre dfini pour indiquer quil ny a pas de serveur pop3 (si le CNAM navait pas de serveur pop) ? 5) Voici par exemple, ce qui concerne SIP dans le fichier de zone du serveur DNS du dpartement informatique de luniversit de Columbia (cs.columbia.edu):
_sip._tcp.cs.columbia.edu _sip._tcp.cs.columbia.edu _sip._tcp.cs.columbia.edu _sip._udp.dynamicsoft.com SRV SRV SRV SRV 20 0 5060 backbay.cs.columbia.edu 0 0 5060 conductor.cs.columbia.edu 10 0 5060 erlang.cs.columbia.edu 0 0 5060 dyn-tx-app-006.dfw.dynamicsoft.com

Une application SIP interroge le DNS sur les serveurs dannuaires SIP en TCP de cs.columbia.edu. Elle obtient trois rponses. Quel serveur doit normalement tre choisi en premier (justifiez votre rponse) ? 6) Dans quels cas et selon quelles stratgies doit-on utiliser un autre serveur ? 7) Est-ce que le serveur dune application pour un domaine se trouve dans ce domaine ? CNAM- Anne 2007/2008 -115- Exercices Technologie client-serveur

Adressage SIP
Le schma dadressage associ au protocole SIP permet dattribuer tout utilisateur SIP dans lInternet un nom global. Dans la norme SIP ce nom dutilisateur final est dfini dans le cadre des URL comme lensemble des champs suivants : sip:user:password@host:port;uri-parameters?headers Ce qui donne comme exemples : sip:jean:secret@hote.cnam.fr:9950;transport=tcp?subject=RV&priority=urgent sip:+1-212-555-1212:1234@gateway.com;user=phone User: cest lidentificateur dun usager sur lhte adress. Il sagit dune chane de caractre quelconque. Elle peut aussi tre dfinie dans le cadre de lune des applications utilisatrices de SIP : un numro de tlphone selon la numrotation habituelle, un identificateur dans un logiciel de messagerie instantane (chat) User peut tre omis si lhte nhberge quun unique destinataire (exemple un tlphone IP). Password : un mot de passe en clair (optionnel). Host : un nom DNS absolu (FQDN) ou une adresse IPV4 ou IPV6. Port : un numro de port (le port par dfaut SIP en TCP ou UDP est le port 5060). Uri-parameters : une liste de couples nom_paramtre=valeur_parametre spars par des point virgules qui prcisent linterprtation de lURI (on voit comme exemple le transport utilis, la nature de la zone usager qui peut tre un numro de tlphone, ). Headers : une liste de couples type_entete=valeur spars par des & (et commerciaux). Ces dfinitions sont destines tre transformes en des lignes dentte dans la requte SIP (analogue dune requte http). Voir par exemple subject=rendezvous qui est transform en une ligne dentte Subject : rendezvous 8) La structure gnrale dune URL dans le schma SIP reprend certains aspects dune adresse de courrier lectronique Internet SMTP (dans les URL le schma des adresses lectroniques sappelle MAILTO). Quels sont les aspects hrits de ladressage du courrier lectronique (MAILTO). 9) La structure gnrale dune adresse dans le schma SIP hrite certains aspects des adresses de la toile mondiale WWW (schma HTTP). Quels sont les aspects hrits de ladressage de la toile (HTTP)? 10) La partie Host permet de dfinir une adresse IP, ou un nom de domaine DNS. On peut alors dfinir un hte prcis, un service ou un domaine de niveau intermdiaire dans la hirarchie de dsignation du DNS. Quel usage peut-on faire de ces diffrents moyens de dsignation ?

Protocole SIP
De manire gnrale le protocole SIP est visiblement driv du protocole HTPP. Mais, comme ses objectifs sont diffrents, il prsente en fait des diffrences significatives. En particulier, il implante des mthodes diffrentes dont les principales sont les suivantes : INVITE : initie des sessions dont la description est incluse dans le corps. ACK : est une rponse linvite et confirme ltablissement dune session. CNAM- Anne 2007/2008 -116- Exercices Technologie client-serveur

BYE : termine une session CANCEL : arrte un dialogue douverture de session en cours. OPTIONS : permet de dfinir les fonctions ralises par une implantation. REGISTER : relie une adresse SIP une localisation (adresse IP). Un change de base caractristique en SIP est le suivant (exemple tir de D.Sisalem et J. Kutan 'Understanding SIP'). Il sagit dune ouverture de session SIP russie entre deux usagers distants (un agent client UAC et un agent serveur UAS) : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 INVITE sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy<sip:UserA@here.com> To: LittleGuy<sip:UserB@there.com> Call-ID: 12345600@here.com CSeq: 1 INVITE Subject: Happy Christmas Contact: BigGuy<sip:UserA@here. com> Content-Type: application/sdp Content-Length: 147 v=0 o=UserA 2890844526 2890844526 IN IP4 here. com s=Session SDP c=IN IP4 100.101.102.103 t=0 0 m=audio 49172 RTP/AVP 0 a=rtpmap: 0 PCMU/8000

La rponse est la suivante (comme en HTTP on peut aussi avoir des rponses intermdiaires comme par exemple '100 Trying' ou '180 Ringing') : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 SIP/2.0 200 OK Via: SIP/2.0/ UDP here.com:5060 From: BigGuy<sip:UserA@here.com> To: LittleGuy<sip:UserB@there.com>; tag=65a35 Call-ID: 12345601@here.com CSeq: 1 INVITE Subject: Happy Christmas Contact: LittleGuy <sip:UserB@there.com> Content-Type: application/sdp Content-Length: 134 v=0 o=UserB 2890844527 2890844527 IN IP4 there. com s=Session SDP c=IN IP4 110.111.112.113 t=0 0 m=audio 3456 RTP/AVP 0 a=rtpmap:0 PCMU/8000 Le message qui termine lchange douverture de session est un acquittement positif : CNAM- Anne 2007/2008 -117- Exercices Technologie client-serveur

1 2 3 4 5 6 7 8

ACK sip:UserB@there.com SIP/2.0 Via: SIP/2.0/UDP here.com:5060 From: BigGuy<sip:UserA@here.com> To: LittleGuy<sip:UserB@there.com> Call-ID: 12345600@here.com CSeq: 1 ACK Content-Length: 0

11) Dans un document sur SIP, on parle propos de la requte INVITE didempotence. Rappelez la dfinition de lidempotence. 12) La raction d'un utilisateur distant une demande d'ouverture de connexion peut-tre longue. Pourquoi lINVITE doit plutt tre implante en tant idempotente ? 13) Quest ce qui pourrait faire que linvite ne soit pas considre comme idempotente ? 14) En utilisant vos connaissances des protocoles SMTP et HTTP, commentez les lignes 1, 3, 4, 5, 7, 9, 10, 11 de la requte INVITE. Que pouvez vous interprter des lignes 12 18 de la requte INVITE? 15) Lentte VIA (dans l'INVITE en ligne 2 Via: SIP/2.0/UDP here.com:5060) indique le chemin que doit emprunter la requte (un relais qui doit tre visit par la requte). Quel est le mcanisme analogue dans SMTP. 16) Lentte CSeq (ligne 6 abrviation de Command Sequence) dfinit le numro de squence dune requte. Par exemple ici, on en est trs naturellement la premire requte INVITE. L'entte Cseq apparat aussi dans la rponse. Pourquoi avoir rajout cette entte ? 17) Dfinissez un automate de protocole pour la partie SIP client (UAC) concernant uniquement louverture de session INVITE en ne mentionnant sur lautomate que le nom des mthodes (sans les enttes ni les corps). Vous introduirez les aspects suivants : le client tente sept fois douvrir la session avant dabandonner. Il peut exister des rponses 100 xxx ou 200 xxx ou des erreurs ou des rejets (400 xxx, 500 xxx). Le message final est un ACK. Indiquez la liste des tats que vous utilisez en donnant leur signification.

CNAM- Anne 2007/2008

-118- Exercices Technologie client-serveur

Exercice 23 : Protocole UPnP ('Universal Plug and Play)


Introduction : UPnP (Universal Plug and Play) est la runion de plusieurs protocoles sexcutant au niveau application de larchitecture de rseaux Internet. Dvelopp depuis 1999, son objectif est de dfinir des mcanismes, qui permettent des appareils numriques UPnP, de sinterconnecter automatiquement, c'est--dire sans intervention humaine dadministration (do le nom plug and play). Un appareil UPnP peut donc, sans intervention humaine, dcouvrir les autres appareils UPnP accessibles dans son environnement rseau, dcouvrir les services quils peuvent rendre et se connecter ces appareils pour crer un rseau la demande. On parle alors de rseau adhoc c'est--dire dun rseau de circonstance cr par la mise en prsence, dun ensemble dappareils qui peuvent communiquer. Domaine d'application : Le domaine des appareils UPnP est pour linstant celui de linformatique individuelle et domestique: ordinateurs personnels, tlphones portables, organiseurs, appareils audio/vido (dcodeurs de tlvision, lecteurs de disques, amplificateurs, projecteurs), appareils photos mais aussi appareils mnagers, appareils de domotique (alarmes, chauffage). Pour excuter UPnP, ces dispositifs doivent donc disposer dun minimum dintelligence: un processeur avec des fonctions systmes de base, un coupleur de communication rseau et une pile de protocoles Internet. Un exemple type denvironnement systme en Java pour un appareil est donn par OSGi ('Open Service Gateway initiative') qui est un complment naturel de UPnP. Un exemple type de rseau local utilisable en relation avec UPnP est celui du rseau sans fil Wifi. Cependant, tout type de rseau filaire ou sans fil avec la pile des protocoles Internet peut permettre dutiliser UPnP: Ethernet, rseau tlphonique avec ou sans fil, infrarouge, courants porteurs, IEEE1394 Firewire, rseau radio frquences Bluetooth etc. Dans la suite de ce texte, nous considrons que cest un rseau local sans fil Wifi qui supporte les communications aux niveaux physique et liaison. Une utilisation typique de ce protocole est alors de fournir un oprateur humain la liste des diffrents appareils quil peut atteindre dans son environnement rseau et lui permettre dactiver diffrents services offerts par ces appareils au moyen dune interface ergonomique. Par exemple un tlphone portable (ou un ordinateur ou une tlcommande universelle UPnP) peuvent tre utiliss comme point de contrle UPnP permettant de tlcommander des appareils priphriques. Un utilisateur son domicile, pourrait commander la fermeture des volets lectriques dune pice o il se trouve, rgler la temprature de la pice, lancer un lecteur de flux vido vers le rseau et de manire coordonne lancer la projection du flux vido partir du rseau. Il pourrait enfin commander lextinction de la lumire. Description gnrale : UPnP propose des mcanismes pour : - lautoconfiguration des appareils (sans intervention humaine), en particulier tout ce qui concerne la configuration automatique des adresses. - la possibilit pour un appareil UPnP dannoncer aux autres sa prsence dans un rseau. Cette annonce est diffuse afin d'atteindre tous les destinataires UPnP potentiels. - la dcouverte automatique dautres appareils UPnP, sils sont connects au mme rseau. Une requte de dcouverte, (une demande vers tous les autres appareils UPnP de signaler leur existence) est galement diffuse. - la transmission vers les autres appareils UPnP des diffrents services que peut rendre un appareil (en fait la description des diffrentes interfaces applicatives API que peut possder cet appareil). De mme, un appareil doit pouvoir obtenir sur demande les diffrents services des autres appareils. Il doit pouvoir interprter et utiliser ces dfinitions de services. Les CNAM- Anne 2007/2008 -119- Exercices Technologie client-serveur

possibilits dannonce de la prsence dun appareil et des services quil peut rendre, ou dinterrogation des autres appareils sur leur prsence et leurs services, constituent la principale contribution de UPnP associe la dcouverte de la configuration dun rseau. - la mise en connexion entre appareils, le contrle commande distance dun appareil. UPnP utilise pour le contrle commande dun appareil, les services Webs avec les protocoles SOAP ('Simple Object Access Protocol' et le langage de description d'interfaces WSDL 'Web Service Description Language'). - la possibilit de gnrer et de recevoir des vnements (des messages exceptionnels asynchrones) signalant des changements de variable d'tat (changement de mode de fonctionnement ou problmes sur un appareil). UPnP utilise un protocole de gestion dvnements baptis GENA ('General Event Notification Architecture'). UPnP sappuie sur des standards Internet trs rpandus avec principalement HTTP et XML. Pour lactivation des services distants dun appareil, UPnP propose lutilisation des services Webs avec SOAP et WSDL. Les protocoles UDP et TCP fournissent linfrastructure de communication de niveau transport (voir le diagramme d'ensemble des protocoles UPnP figure 1). Les communications en UPnP sont structures en mode client-serveur. - Un appareil client est appel en UPnP un point de contrle (en anglais CP Control Point). Trs souvent, il contrle pour un utilisateur final (une personne) diffrents priphriques au moyen dune interface graphique. Le logiciel UPnP point de contrle est donc typiquement excut sur un ordinateur personnel, un tlphone portable, un organiseur ou une tlcommande. - Un appareil serveur est appel en UPnP un priphrique (en anglais CD Controlled Device). Un priphrique offre un ou plusieurs services susceptibles dtre dcouverts et activs par un point de contrle. Diffusion industrielle : UPnP est soutenu par un consortium de plus de 800 entreprises ou organisations (UPnP Forum) avec un rle moteur jou par Microsoft qui a install UPnP en standard dans Windows XP. Dans la version Vista, UPnP a t rebaptis Network Discovery. Il existe plusieurs autres propositions concurrentes de protocoles diffrents qui rsolvent plus ou moins le mme problme : Jini dans lunivers SUN/Java, Salutation, SLP ('Service Location Protocol'), Zeroconf. UPnP Vendor Defined UPnP Forum Working Committee Defined UPnP Device Architecture Defined SSDP GENA SSDP HTTPU
(Discovery)

HTTPMU
(Discovery)

SOAP (Control) HTTP


(Description

HTTP GENA
(Events)

) TCP

UDP IP Figure 1. Pile des protocoles UPnP

CNAM- Anne 2007/2008

-120- Exercices Technologie client-serveur

Problmes dadressage
Les communications en UPnP sont drives des communications en http de sorte que les structures de deux protocoles sont trs voisines. On tudie les aspects d'adressage en UPnP en commenant par revenir sur ladressage en HTTP. Pour communiquer en HTTP, un client HTTP doit connatre ou obtenir par un moyen ou un autre diffrents noms ou adresses le concernant et concernant le serveur auquel il s'adresse. 1) Rappelez les lments principaux du systme dadressage utilis par un client HTTP pour dsigner un serveur HTTP. Indication : vous donnerez son nom. Puis vous dfinirez les diffrentes informations de dsignation (noms et adresses) obligatoires ou facultatives que le client HTTP (lhte metteur dune requte HTTP) doit connatre pour ce qui concerne le serveur. Ces adresses ou ces noms sont associs aux diffrentes couches de larchitecture OSI qui sont galement celles de l'Internet (aux diffrents protocoles Internet). Vous en donnerez une liste complte classe par couches, en prcisant les noms ou adresses qui sont obligatoires et ceux qui sont optionnels c'est--dire obtenus par des valeurs par dfaut ou par des moyens divers automatiques (valeurs pr configures ou obtenues par utilisation de protocoles). 2) Quelles sont les diffrentes informations de dsignation (adresses ou noms symboliques) que le client HTTP (lhte metteur dune requte HTTP) doit connatre pour ce qui le concerne. Mmes indications que pour la question prcdente. Les adresses ou les noms sont analyser niveau par niveau. Ces adresses ou ces noms concernent le client en distinguant les noms ou adresses obligatoirement fournies de ceux ou celles qui sont optionnelles. 3) On se place maintenant dans le cas du protocole UPnP, dont le but est dauto configurer un rseau compos d'appareils d'informatique individuelle ou domestique, en utilisant des communications de type HTTP. Les adresses ou les noms utiliss sont de mme nature que ceux de HTTP. Dans certains cas le rseau peut-tre correctement administr avec des serveurs caractristiques d'un bon rseau d'entreprise (serveurs DNS, DHCP). Dans d'autres cas le rseau dans lequel se trouvent les appareils UPnP n'est pas du tout administr et il n'existe aucun serveur pr install. De plus les appareils UPnP peuvent tre par nature trs simples (comme une commande dclairage dune pice). Dans le cas dun protocole comme UPnP, quels sont les noms ou adresses qui sont indispensables ? Indications : vous utiliserez les rponses aux questions prcdentes concernant le client et le serveur en vous proccupant principalement des noms ou adresses indispensables pour atteindre un serveur HTTP distant. Vous proposerez ventuellement des solutions pour obtenir ces noms ou adresses.

Dcouverte des services disponibles dans un rseau : SSDP (Simple Service Discovery Protocol)
SSDP est dans lensemble UPnP, le protocole qui permet un appareil UPnP de dtecter tous les autres appareils UPnP connects un rseau. Pour dcouvrir un rseau, un appareil peut mettre des requtes lui permettant de connatre la liste des appareils dj connects et pour chaque appareil la liste des services quil peut fournir. Par ailleurs un appareil qui vient dtre initialis doit envoyer des requtes annonant son arrive dans le rseau et dfinissant les services quil peut fournir. Quand un appareil est arrt normalement, il doit mettre une requte indiquant sa sortie du rseau. En ce sens SSDP entre dans la CNAM- Anne 2007/2008 -121- Exercices Technologie client-serveur

catgorie des protocoles dappartenance un groupe dont le rle est de suivre la composition dun groupe en univers rparti (Group Membership Protocol). Avec SSDP, pour chaque appareil, le suivi de la composition du groupe des appareils accessibles doit tre ralis tant que lappareil reste oprationnel. Donc, pour maintenir sa vision jour aprs la phase initiale dapprentissage, chaque appareil SSDP met des requtes de dcouverte, traite les rponses et reoit priodiquement des messages dannonce SSDP ce qui gnre un flux de messages permanent. SSDP est une adaptation de HTTP au problme de la dcouverte de rseau. Il conserve de HTTP sa structure gnrale, ses formats de messages, mais, comme ses objectifs sont diffrents il utilise des mthodes nouvelles et des mcanismes nouveaux. 4) Quels sont les avantages et les inconvnients de prendre comme base le protocole HTTP pour un nouveau protocole (par exemple ici un protocole de dcouverte de rseau comme SSDP) ? Une caractristique importante de SSDP est dutiliser deux versions modifies de HTTP qui ont t baptises HTTPU pour HTTP Unicast over UDP et HTTPMU pour HTTP Multicast over UDP. Une diffrence importante entre HTTPU et HTTP est donc que HTTPU utilise le transport UDP comme protocole de transport sous jacent et non pas TCP. Cependant, comme en HTTP, les communications en HTTPU sont point point entre un seul client et un seul serveur. Le protocole HTTPMU tend HTTP des communications en diffusion sur groupe ('multicast'). C'est--dire que pour un client, il existe n destinataires dune requte. Ces destinataires appartiennent un groupe (un sous ensemble des sites, par exemple ici ceux qui sont UPnP). Selon les cas, tous les destinataires ou un sous ensemble des destinataires ou aucun destinataire fournissent une rponse la requte. En HTTPU comme en HTTPMU les requtes et les rponses ont un format similaire celui de HTTP. HTTPMU utilise galement comme protocole de transport sous-jacent UDP. 5) Pourquoi HTTP utilise til TCP comme protocole de transport (quels sont les avantages et les inconvnients du choix de TCP comme protocole de transport sous jacent au protocole HTTP)? 6) Quelles sont les raisons qui motivent le concepteur dun protocole de dcouverte de rseau comme SSDP substituer UDP comme transport sous jacent TCP. Indication, examinez les caractristiques que vous connaissez des deux protocoles TCP et UDP en relation avec les objectifs poursuivis par SSDP ? Le protocole HTTPU a reu un nom de schma dadressage dans le cadre des URL, diffrent de HTTP. Cest naturellement HTTPU qui a t retenu. Une URL HTTPU commence donc par la chane de caractres HTTPU:. En dehors du changement de nom de schma, les URL HTTPU ont sensiblement la mme structure (la mme grammaire) que les URL HTTP. 7) Puisque la structure des URL est la mme, pourquoi ne pas avoir conserv comme nom de schma HTTP (quelles sont les raisons qui motivent le changement du nom de schma) ? Dans le protocole SSDP, NOTIFY est le nom de lune des mthodes (comme GET, HEAD ou POST en HTTP). Une requte NOTIFY est toujours transmise en diffusion au CNAM- Anne 2007/2008 -122- Exercices Technologie client-serveur

moyen de HTTPMU tous les autres appareils UPnP accessibles. NOTIFY est dcrit dans la norme UPnP comme un avertissement (advertisement) en ce sens que cette mthode avertit les autres appareils UPnP de lexistence de lmetteur de la requte NOTIFY. Une telle requte est donc naturellement transmise la mise sous tension dun appareil ou lors dune modification de configuration ou encore priodiquement pour rafrachir les caches des autres appareils. Dans la terminologie UPnP, le cache est en fait la table gre par chaque appareil qui reprsente sa vision de lensemble des autres appareils. Lmetteur dun NOTIFY apporte simplement une information aux autres et nattend aucune rponse des autres appareils. La description des principales enttes dune requte NOTIFY est donne dans la liste suivante (extraite de la norme UPnP) : NOTIFY * HTTP/1.1 HOST: 239.255.255.250:1900 CACHE-CONTROL: max-age = seconds until advertisement expires LOCATION: URL for UPnP description for root device NT: notification type SERVER: OS/version UPnP/1.0 product/version NTS: ssdp:alive ou ssdp:byebye USN: unique service name Explications complmentaires: LOCATION : Dfinit une URL du WEB o lon peut trouver une ressource (une page) contenant une description dtaille de lappareil metteur de la requte. Cest cette information qui est essentielle car cette description peut tre tlcharge de manire obtenir les informations ncessaires au contrle distance dun appareil. NT (Notification Type) : Dfinit le type de linformation apporte. Un appareil (device) peut comporter des sous appareils (sub devices), chacun pouvant offrir des services diffrents. Le type dans un avertissement permet de sparer ce qui concerne lappareil principal (root device) ou lun des sous appareils ou lun des services de cet appareil ou lun des services de lun des sous appareils. SERVER : identifie le nom du systme dexploitation (Linux, Windows) de lappareil et sa version. On trouve ensuite la version de UPnP utilise (actuellement 1.0) puis le nom et la version donn par le constructeur pour lappareil qui effectue lannonce. NTS Notification Sub Type : Dans cette entte, la chane ssdp:alive indique que lappareil ou le service est oprationnel, ssdp:byebye indique larrt du fonctionnement oprationnel dun appareil ou de lun de ses services quand il en offre plusieurs. USN Unique Service Name : cest un identifiant unique pour un service. Voici un exemple concret de requte NOTIFY, extrait dune documentation Microsoft :
NOTIFY * HTTP/1.1\r\n Host:239.255.255.250:1900\r\n NT:urn:schemas-upnp-org:service:ConnectionManager:1\r\n NTS:ssdp:alive\r\n Location:http://192.168.1.100:2869/upnphost/udhisapi.dll?content= uuid:224e2bb9-6961-4d79-b05f-f72cb415dc6c\r\ns USN:uuid:224e2bb9-6961-4d79-b05f-f72cb415dc6c::urn:schemas-upnporg:service:ConnectionManager:1\r\n Cache-Control:max-age=1800\r\n Server:Microsoft-Windows-NT/5.1 UPnP/1.0 UPnP-Device-Host/1.0\r\n \r\n

8) Dans la requte NOTIFY, on voit dans les deux premires lignes les aspects dadressage dans une forme qui est celle de HTTP 1.1. Associ au nom de la mthode on a le CNAM- Anne 2007/2008 -123- Exercices Technologie client-serveur

chemin vers la ressource et la seconde ligne est une entte HOST. Pourquoi en HTTP/1.1 a-ton introduit de manire obligatoire lentte HOST ? 9) Le chemin vers la ressource est dfini par *. Lentte HOST a pour valeur 239.255.255.250:1900. Pourquoi en SSDP a-t-on dfini ladresse cible de la requte de cette faon ? Indication : lobjectif est celui dune diffusion vers tous les appareils UPnP dun avertissement et on a souhait respecter les conventions de HTTP/1.1 ? 10) Il existe une ligne dentte CACHE-CONTROL dont le paramtre principal maxage dfinit la dure en seconde jusqu expiration de lavertissement (cest dire de linformation apporte par la requte NOTIFY). Pourquoi dfinir une telle dure de validit dans les caches ? M-SEARCH est une seconde mthode dfinie en SSDP pour enquter sur la prsence dappareils dun certain type. Elle est comme NOTIFY transmise en diffusion HTTPMU tous les autres appareils UPnP. M-SEARCH * HTTP/1.1 HOST: 239.255.255.250:1900 MAN: "ssdp:discover" MX: seconds to delay response ST: search target Lentte MAN contient la chane ssdp:discover pour indiquer une requte de dcouverte de configuration rseau. Une rponse positive, obtenue lorsquune information est retourne correctement sur une requte M-SEARCH, a la forme suivante. Cest une rponse point point transmise en HTTPU. Les enttes ont la mme signification que dans notify. HTTP/1.1 200 OK CACHE-CONTROL: max-age = seconds until advertisement expires LOCATION: URL for UPnP description for root device ST: search target USN: unique service name 11) On remarque parmi les enttes une entte nouvelle MX obligatoire dfinissant une valeur en secondes. Un appareil qui rpondra une requte M-SEARCH doit attendre un dlai distribu alatoirement entre 0 et MX secondes pour envoyer sa rponse. Quand un rseau UPnP augmente en taille, la norme recommande daugmenter progressivement la valeur de MX. Selon vous, dans quel but lentte MX a-t-elle t dfinie ? Eventuellement dfinissez quelles classes de mcanisme dans les rseaux, correspond l'entte MX.

Spcification dun appareil et de ses services


Il existe diffrents documents XML pour la description des appareils et de leurs services : description physique densemble d'un appareil, description logique, description dtaille des services rendus, description des variables dtat quun appareil gre, description des vnements gnrs. Le principal document (la description densemble) a la forme gnrale suivante : CNAM- Anne 2007/2008 -124- Exercices Technologie client-serveur

<?xml version="1.0"?> <root xmlns="urn:schemas-upnp-org:device-1-0"> <URLBase>base URL for all relative URLs</URLBase> <device> <friendlyName>short user-friendly title</friendlyName> <manufacturer>manufacturer name</manufacturer> <manufacturerURL>URL to manufacturer site</manufacturerURL> <modelDescription>long user-friendly title</modelDescription> <modelName>model name</modelName> <modelNumber>model number</modelNumber> <modelURL>URL to model site</modelURL> <serialNumber>manufacturer's serial number</serialNumber> <UDN>uuid:UUID</UDN> <UPC>Universal Product Code</UPC> <deviceType>urn:chemas-upnp-or:device:deviceType</deviceType> <serviceList> <service> <serviceType>urn:schemas-upnp-org:service:serviceType:v</serviceType> <serviceId>urn:upnp-org:serviceId:serviceID</serviceId> <SCPDURL>URL to service description</SCPDURL> <controlURL>URL for control</controlURL> <eventSubURL>URL for eventing</eventSubURL> </service> Declarations for other services (if any) go here </serviceList> <deviceList>Description of embedded devices (if any) go here</deviceList> <iconList> <icon> <mimetype>image/format</mimetype> <width>horizontal pixels</width> <height>vertical pixels</height> <depth>color depth</depth> <url>URL to icon</url> </icon> XML to declare other icons, if any, go here </iconList> <presentationURL>URL for presentation</presentationURL> </device> <specVersion><major>1</major><minor>0</minor></specVersion> </root> 12) Lecture du document XML. En vous limitant aux quatre premires lignes du document, donnez des explications concernant ces lignes. Indications : commentez les enttes, les lments, les attributs. Quelles sont les informations apportes par ces quatre lignes ? 13) Quel est larbre associ llment servicelist. Que reflte cette structure (pourquoi avoir retenu cette structure) ? 14) Dans une interface graphique ergonomique, chaque appareil on associe une icne dont le graphisme doit tre familier lutilisateur. Quels sont les lments qui ont t retenus CNAM- Anne 2007/2008 -125- Exercices Technologie client-serveur

pour prciser lune des icnes associe un appareil (pouvez vous expliquer leur signification).

UPnP et services dannuaires


15) Une autre approche possible pour rsoudre le problme de dcouverte de la configuration dun rseau rsolu par UPnP est dutiliser une approche dannuaire comme celle du DNS (Domain Name System). Mais de manire similaire les annuaires LDAP (Lightweight Directory Access Protocol) ou UDDI des services Webs (Universal Description Discovery and Integration) seraient aussi utilisables. Rappelez brivement les principes gnraux darchitecture et les principales fonctions d'un service d'annuaire ? 16) Comment pourrait-on utiliser un service d'annuaire pour fournir un service de dcouverte de la configuration dun rseau ? On rappelle quun appareil peut annoncer sa prsence et envoyer des requtes de dcouverte des autres appareils accessibles et des services qu'ils peuvent rendre. 17) Discutez des avantages et des inconvnients dune approche compltement rpartie (pair pair 'peer to peer') comme celle de UPnP ou lon fait jouer le mme rle tous les appareils plutt que de faire grer ces informations par un service dannuaire centralis. En UPnP chaque appareil gre ses propres caractristiques, les fournit sur demande. Il apprend les caractristiques de tous les autres appareils. Indications : vous pourrez examiner les aspects dadministration, de performances, de tolrances aux pannes, de conception et de dveloppement de lapplication.

Complment hors sujet Vocabulaire : UPnP participe la construction d'un rseau adhoc c'est dire un rseau qui s'auto organise selon les machines en prsence. Lapproche UPnP est dveloppe entre des appareils considrs comme gaux. UPnP entre donc dans la catgorie des approches pair pair (peer to peer). Par ailleurs, UPnP est lun des moyens de linformatique omniprsente ou ambiante ou encore ubiquitaire, c'est--dire prsente dans de plus en plus daspects (des appareils) de la vie courante. On parle en anglais dinformatique pervasive (en franais ominiprsente) ou encore ubiquitous (ubiquitaire) ou encore ambient (ambiante). Les personnes voluent de plus en plus dans une ambiance de technologie informatique et rseau.

CNAM- Anne 2007/2008

-126- Exercices Technologie client-serveur