Sujets des exercices dirigés - Département Informatique - Cnam
Exercice 12 : Etude du système de chiffrement à clé publique RSA. Exercice 13 :
Kerberos ... Exercice 13 : DNS ('Domain Name System') Sujet 2. Exercice 14 :
Services et ... Exercice 22 : Protocole SIP ('Session Initiation Protocol'). Exercice
23 ...
part of the document
Sujets des exercices dirigés
Technologie pour les applications
client-serveur
UE RSX 102
Année 2007-2008
G. Florin, S. Natkin, E. Gressier,
L. Duchien, J.M. Farinone
Table des matières
TOC \o "1-3" PREMIER CHAPITRE PAGEREF _Toc190074228 \h 4
EXERCICES CONTROLE REPARTI PAGEREF _Toc190074229 \h 4
Série d'exercices mode message PAGEREF _Toc190074230 \h 4
Exercice 1: Automate de connexion TCP PAGEREF _Toc190074231 \h 4
Série d'exercices : Appel de procédure distante PAGEREF _Toc190074232 \h 6
Exercice 2 : Traitement des pertes de messages PAGEREF _Toc190074233 \h 6
Exercice 3 : Exécutions très longues. PAGEREF _Toc190074234 \h 6
Exercice 4 : Appels en parallèle (redondance massive) PAGEREF _Toc190074235 \h 6
Exercice 5 : Serveurs multiples (redondance sélective) PAGEREF _Toc190074236 \h 6
Exercice 6 : Parallélisme et performance des communications en RPC PAGEREF _Toc190074237 \h 7
Série d'exercices : Etudes de cas PAGEREF _Toc190074238 \h 9
Exercice 7 : Conception d'une application de niveau session PAGEREF _Toc190074239 \h 9
Exercice 8 : Comparaison de la programmation d'applications réparties avec TCP et avec CORBA PAGEREF _Toc190074240 \h 11
Exercice 9 : Objets répartis en CORBA PAGEREF _Toc190074241 \h 16
SECOND CHAPITRE PAGEREF _Toc190074242 \h 18
EXERCICES PRÉSENTATION DES DONNEES PAGEREF _Toc190074243 \h 18
Série d'exercices conversions PAGEREF _Toc190074244 \h 18
Exercice 1 : Optimisation des conversions PAGEREF _Toc190074245 \h 18
Exercice 2 : Problème des formats de mémoire (petit boutiste, grand boutiste) PAGEREF _Toc190074246 \h 18
Exercice 3 : Définition de syntaxe ASN1 PAGEREF _Toc190074247 \h 19
Exercice 4 : Définition de format de transfert ASN1 PAGEREF _Toc190074248 \h 20
Exercice 5 : Définition de données en ASN1 et de leur format de transfert. PAGEREF _Toc190074249 \h 20
Exercice 6 : Problème général ASN1 PAGEREF _Toc190074250 \h 21
Exercice 7 : Définition d'une traduction du langage IDL de CORBA vers le langage Pascal PAGEREF _Toc190074251 \h 22
Exercice 8 : CORBA PAGEREF _Toc190074252 \h 24
Série d'exercices sécurité PAGEREF _Toc190074253 \h 29
Exercice 9 : Cryptogramme 1 PAGEREF _Toc190074254 \h 29
Exercice 10 : Cryptogramme n° 2 PAGEREF _Toc190074255 \h 29
Exercice 11 : Cryptogramme n° 3 PAGEREF _Toc190074256 \h 29
Exercice 12 : Etude du système de chiffrement à clé publique RSA PAGEREF _Toc190074257 \h 30
Exercice 13 : Kerberos PAGEREF _Toc190074258 \h 31
Exercice 14 : Partage d'un secret PAGEREF _Toc190074259 \h 34
Exercice 15 : Problème de notarisation PAGEREF _Toc190074260 \h 34
Exercice 16 : Gestion d'une connexion sécurisée PAGEREF _Toc190074261 \h 36
Exercice 17 : Changement périodique de clés en cryptographie à clés publiques. PAGEREF _Toc190074262 \h 38
Exercice 18 : Commerce électronique sur Internet: SET ("Secure Electronic Transactions") PAGEREF _Toc190074263 \h 41
Exercice 19 : Authentification des usagers et autorisation des requêtes dans le WEB PAGEREF _Toc190074264 \h 45
Exercice 21 : Sécurisation des communications en Internet avec SSL-TLS PAGEREF _Toc190074265 \h 49
Exercice 22 : Protocole de micro-paiement sur Internet PAGEREF _Toc190074266 \h 52
Exercice 23 : Sécurisation du DNS : les normes DNSSEC-1 PAGEREF _Toc190074267 \h 55
TROISIEME CHAPITRE PAGEREF _Toc190074268 \h 59
EXERCICES APPLICATIONS REPARTIES PAGEREF _Toc190074269 \h 59
Exercice 1 : Système de fichiers répartis NFS et réplication PAGEREF _Toc190074270 \h 59
Exercice 2 :Désignation des fichiers dans le système de fichiers répartis NFS PAGEREF _Toc190074271 \h 60
Exercice 3 : Messagerie X400 PAGEREF _Toc190074272 \h 62
Exercice 4 : Transactionnel réparti OSI-TP PAGEREF _Toc190074273 \h 64
Exercice 5 : Transactionnel réparti PAGEREF _Toc190074274 \h 65
Exercice 6 : Système transactionnel réparti PAGEREF _Toc190074275 \h 66
Exercice 7 : CORBA et le transactionnel PAGEREF _Toc190074276 \h 68
Exercice 8 : Administration de réseaux avec SNMP PAGEREF _Toc190074277 \h 70
Exercice 9 : Échange de données informatisées EDI PAGEREF _Toc190074278 \h 75
Exercice 10 : XML PAGEREF _Toc190074279 \h 77
Exercice 11 : Étude du protocole HTTP PAGEREF _Toc190074280 \h 79
Exercice 12 : DNS ('Domain Name System') sujet 1 PAGEREF _Toc190074281 \h 82
Exercice 13 : DNS ('Domain Name System') Sujet 2 PAGEREF _Toc190074282 \h 84
Exercice 14 : Services et protocoles d'annuaires répartis PAGEREF _Toc190074283 \h 85
Exercice 15 : Messagerie Internet SMTP PAGEREF _Toc190074284 \h 91
Exercice 16 : DNS et messagerie Internet/l'approche SPF PAGEREF _Toc190074285 \h 96
Exercice 17 : Messagerie Internet: Analyse du contenu d'un courrier PAGEREF _Toc190074286 \h 98
Exercice 18 : Utilisation d'un résolveur DNS PAGEREF _Toc190074287 \h 101
Exercice 19 : IMAP (Internet Message Access Protocol) PAGEREF _Toc190074288 \h 104
Exercice 20 : WAP ('Wireless Application Protocol') PAGEREF _Toc190074289 \h 106
Exercice 21 : Services sur la toile ('Web Services') PAGEREF _Toc190074290 \h 111
Exercice 22 : Protocole SIP ('Session Initiation Protocol') PAGEREF _Toc190074291 \h 115
Exercice 23 : Protocole UPnP ('Universal Plug and Play) PAGEREF _Toc190074292 \h 120
PREMIER CHAPITRE
EXERCICES CONTROLE REPARTI
Série d'exercices mode message
Exercice 1: Automate de connexion TCP
1) Citez différentes 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 réalisées par TCP?).
3) Une vision partielle de l'automate de l'ouverture de connexion et de la fermeture de connexion en TCP est donnée par la figure page suivante. Déterminez les éléments de service et les éléments de protocole utilisés dans cet automate?
4) Examinez lautomate en suivant les transitions portées en traits gras. Il sagit dune ouverture de connexion suivie dune fermeture. Analysez les principales options de conception de cette séquence de connexion déconnexion en TCP.
5) Complétez la lecture de lautomate en examinant dautres états et dautres transitions (ouverture passive,
).
EMBED Word.Picture.8
Série d'exercices : Appel de procédure distante
Exercice 2 : Traitement des pertes de messages
On souhaite réaliser très efficacement des appels de procédure distants en se plaçant non pas au dessus d'une couche transport fiable mais au dessus d'une couche réseau sans contrôle d'erreur.
Proposez des solutions efficaces au problème des pertes de messages d'appel et de réponse.
Exercice 3 : Exécutions très longues.
On souhaite exécuter en mode appel de procédure distante des traitements de durée non prévisible (par exemple des interrogations distantes de bases de données dont les réponses peuvent prendre des durées très variables et très longues).
Proposez une solution pour le contrôle de l'exécution distante, en particulier pour pouvoir distinguer une panne de serveur d'une exécution longue.
Exercice 4 : Appels en parallèle (redondance massive)
L'appel distant active une seule procédure à distance à chaque fois. Un utilisateur peut souhaiter faire réaliser n exécutions à distance simultanément en lançant en diffusion une requête.
Explicitez le schéma du fonctionnement ainsi défini.
Utilisez le dans le cas de données répliquées. On suppose que l'on a n serveurs de données en copies multiples (pour la sécurité) qui peuvent réaliser les mêmes opérations lire et écrire. Comment sont réalisées les lectures, les écritures. Quelle propriété minimum doivent satisfaire les requêtes pour maintenir la cohérence des données si l'on considére qu'il n'y a pas de partage de données entre plusieurs activités?
Exercice 5 : Serveurs multiples (redondance sélective)
Dans certains types de service on souhaite disposer de plusieurs instances du même service sur plusieurs machines différentes (par exemple pour un service de compilation). L'appel distant active une seule exécution à distante à chaque fois.
Dans quel but utiliserait-on de tels services à instances multiples?
Proposez une organisation pour rendre efficacement un tel service.
Exercice 6 : Parallélisme et performance des communications en RPC
Un appel de procédure distante présente les caractéristiques temporelles suivantes (valeurs données à titre d'exemple):
Traitements client de préparation d'appel: 5 ms
- Traitements RPC émission de la requête coté client
Traitements de la souche client: 0,5 ms
Traitements logiciels réseaux coté client: 0,3 ms
- Réseau
Acheminement dun message entre le client et le serveur 3 ms
- Traitements RPC réception de la requête coté serveur
Traitements logiciels réseaux coté serveur: 0,3 ms.
Traitements de la souche serveur: 0,5 ms
Traitements serveur de lappel (exécution de la procédure): 10 ms
- Traitements RPC émission de la réponse coté serveur
Traitements de la souche serveur: 0,5 ms
Traitements logiciels réseaux coté serveur: 0,3 ms
- Réseau
Acheminement dun message entre le serveur et le client 3 ms
- Traitements RPC réception de la réponse coté client
Traitements logiciels réseaux coté client: 0,3 ms.
Traitements de la souche client: 0,5 ms
Un client souhaite exécuter sur un même serveur deux appels de procédures distantes indépendantes (non reliées) ayant les caractéristiques temporelles précédentes.
1) On fait l'hypothèse que les RPC sont synchrones. Rappelez la définition dun RPC synchrone.
2) On fait l'hypothèse que client et serveur travaillent séquentiellement. Le client exécute les deux appels au moyen dun seul processus séquentiel. La procédure distante est exécutée pour les deux fois par le même processus. Quelle est la durée totale nécessaire à la réalisation des deux appels?
3) On cherche maintenant une exécution parallèle efficace en utilisant le parallélisme chez le client et chez le serveur . La procédure 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 réalisés sur le client au moyen de deux processus parallèles associés aux deux appels indépendants. Les traitements sont réalisés sur le serveur au moyen de deux processus lancés en parallèle associés à chaque appel de procédure distante. On néglige les temps de commutation de contexte entre les processus. On se place dans le cas de machines mono processeur cest à dire que les exécutions lancées en parallèles sont exécutées par un seul processeur (pseudo parallélisme).
Dessinez le diagramme dordonnancement des opérations dans le cas de lordonnancement parallèle le plus efficace des opérations client et serveur. Représentez par des segments verticaux sur un dessin les différentes opérations selon les quatre fils dexécution associés aux quatre processus Représentez également les messages de requête et de réponse? Quelle est la durée totale du traitement des deux appels?
4) On suppose maintenant que l'on dispose d'un RPC asynchrone. Rappelez la définition dun RPC asynchrone ?
5) Le RPC asynchrone ne suppose pas lexistence de parallélisme sur le site client pour améliorer les performances. On considère dans cette question, que les clients et serveurs sont purement séquentiels. Le processus client réalise deux appels en RPC asynchrone et le processus serveur réalise les deux traitements des appels asynchrones. Dessinez lordonnancement le plus efficace des opérations pour les deux processus associés au client et au serveur. Représentez les messages échangés entre les deux processus. Quelle est la durée totale du traitement des deux appels ?
Série d'exercices : Etudes de cas
Exercice 7 : Conception d'une application de niveau session
Une application de longue durée (de type traitement par lots ou transfert de fichier) est réalisée à distance à partir d'un calculateur émetteur E sur un calculateur récepteur R. Le site E émet des suites de messages correspondant à des données à transmettre (par exemple des articles d'un fichier). La conception de l'application doit prendre en compte des objectifs de reprise et amène donc à transmettre les données 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 définie dans la couche session OSI et utilisable par les applications au moyen des protocoles RTS et présentation OSI.
Rappelez la définition et l'usage des différentes notions de synchronisation mineure, majeure, dialogue de session, activité de session.
Le service de synchronisation majeure comporte quatre unités 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'unités de service et des arrivées d'unités de service.
On suppose que l'émetteur possède 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'intéresse qu'au mode de fonctionnement normal dans lequel aucune panne n'intervient (ni panne de site, d'entité distante, ...).
Pour chaque état on définira clairement en une phrase la situation à laquelle correspond cet état. Pour chaque transition on donnera la condition et l'action associée en les justifiant.
2 On souhaite ajouter au mécanisme précédent l'acquisition du jeton de synchronisation majeure et d'activité lorsque le site n'en dispose pas (par exemple au début de l'échange).
Les unités de service pour la demande du jeton sont:
S-TOKEN-PLEASE.request
S-TOKEN-PLEASE.indication
Les unités de service pour la cession du jeton sont:
S-TOKEN-GIVE.request
S-TOKEN-GIVE.indication
On suppose l'existence d'une variable booléenne "jeton_majeur" indiquant la présence du jeton majeur. Donnez l'automate du service de demande de cession et d'obtention du jeton majeur. Là encore on ne s'intéresse qu'au fonctionnement sans pannes.
3 On souhaite enfin définir le comportement de l'émetteur qui transmet entre deux synchronisations majeures 100 messages de données normales au moyen de:
S-DATA.request
S-DATA.indication
Donnez l'automate de ce dernier comportement (dans les mêmes conditions que précédemment).
4 En déduire l'automate complet comprenant vos réponses aux questions 2, 3, 4.
Exercice 8 : Comparaison de la programmation d'applications réparties 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 boursière. La solution en mode message utilise le niveau transport TCP avec linterface socket et la solution en mode RPC utilise lapproche objets répartis CORBA.
Ce problème ne traite que des comportements dun client. Il nest pas nécessaire de comprendre très en détail les codes présentés en C ou en C++ pour répondre aux questions dordre général concernant les aspects réseaux des deux solutions.
A) Utilisation du niveau transport TCP avec linterface Socket
Lapplication considérée est celle dun mode client serveur basique avec un message requête de demande de cotation et un message réponse contenant le cours de bourse. On identifie donc comme premier élément du protocole (message et donnée à échanger dans le message) une requête qui comporte un nom de valeur boursière à coter. Cest une chaîne de caractères de longueur variable. La longueur est codée sur un entier long (valeur maximum 100 octets). La réponse comporte la cotation demandée (codée pour simplifier sous la forme dun entier long). Elle comporte aussi un code réponse entier au cas ou des erreurs auraient rendu lopération impossible. Les structures de données échangées dans les messages en langage C sont donc décrites comme suit :
#define MAXSTOCKNAMELEN 100
struct Quote_Request
{
long len; /* Longueur de la requête */
char name[MAXSTOCKNAMELEN]; /* Nom de la valeur à coter */
};
struct Quote_Response
{
long value; /* Cours de la valeur */
long errno; /* 0 si succès, code derreur sinon */
};
On rassemble, dans une procédure utilisée par le client (connect_quote_server), les instructions nécessaires pour la mise en connexion du client avec le serveur, selon les primitives de linterface socket.
En entrée de la procédure, server est une chaîne de caractères qui définit le nom du service de cotation.
En entrée de la procédure, port contient le numéro de port du service de cotation.
En résultat HANDLE est un entier qui contient la référence du descriptif de la socket.
typedef int HANDLE;
HANDLE connect_quote_server (const char server[], u_short port)
{
struct sockaddr_in addr;
struct hostent *hp;
HANDLE sd;
/* Création de la terminaison locale */
sd = socket (AF_INET, SOCK_STREAM, 0);
/* Détermination adresse du serveur */
hp = gethostbyname(server);
/* Remise à zéro 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 paramètre AF-INET ? Pourquoi utiliser le paramètre SOCK-STREAM ?
2) A quoi sert la primitive gethostbyname. Quel est le nom de lapplication Internet qui est utilisée par la primitive gesthostbyname. Quel doit donc être le format dun nom de service ?
3) Quel est le rôle de la primitive connect ?
Une seconde procédure utilisée par le client send_request rassemble toutes les instructions nécessaires pour la transmission de la requête.
En paramètre entrée de la procédure, sd est le descriptif de la socket.
En paramètre entrée stock_name contient le nom de la valeur boursière à coter.
Il ny a pas de résultat (void).
void send_request (HANDLE sd ,const char stock_name[])
{
struct Quote_Request req;
size_t w_bytes;
size_t packet_len;
int n;
/* Détermination longueur du nom de valeur boursière et */
/* recopie du nom de valeur boursière dans la requête */
packet_len = strlen (stock_name);
if (packet_len > MAXSTOCKNAMELEN)
packet_len = MAXSTOCKNAMELEN;
strncpy (req.name, stock_name, packet_len);
/* Calcul longueur totale de la requête et conversion vers lordre des octets réseau */
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 procédure précédente send_request la primitive htonl est appliquée à la longueur du paquet packet_len pour fabriquer la zone req.len (longueur de la requête). Htonl (littéralement host to network long integer) convertit lordre des octets de la machine client dans lordre réseau. Pourquoi effectuer une telle conversion. Sous quel nom est connu le problème résolu par htonl?
On rassemble dans la procédure client recv_response la collecte dun message de réponse à une requête de cotation. La structure de donnée dun message de réponse Quote_Response a été définie 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 { /* Succès */
*value = ntohl (res.value);
return 0;
}
}
5) A quoi servent les primitives ntohl utilisées dans le code recv_response ?
6) On souhaite évaluer la solution proposée de programmation client-serveur en mode message avec les sockets relativement à lassemblage des données dans les messages. Quel est le point de vue adopté relativement aux conversions dans ce programme (quel est le niveau dinteropérabilité de la solution) ?
B) Utilisation de lapproche objets répartis avec Corba
On se propose détudier la solution au problème de cotation précédent en utilisant lapproche objet réparti CORBA.
7) Rappelez les principes généraux de lapproche CORBA ? Comment est réalisée linvocation à distance en CORBA ?
Le code IDL suivant décrit laccès 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 déclaration interface Quoter. A quoi sert la déclaration 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
// nécessaires sont résumés par une procédure bind_service)
Object_var obj = bind_service (argc, argv, service_name);
int result = 1;
try {
// Obtention dune référence q sur obj (avec vérification 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 résultat et traitement des erreurs
cout
msg::=1*DIGIT
text::=1*C+OK pop.cnam.fr server ready2C->SUSER natkin3S->C+OK password required for natkin4C->SPASS monpacs5S->C-ERR password supplied for natkin is incorrect6C->SUSER natkin7S->C+OK password required for natkin8C->SPASS monpass9S->C+OK maildrop has 1 messages (600 octets)10C->SSTAT11S->C+OK 1 60012C->SRETR 113S->C+OK14S->C15C->SDELE 116S->C+OK17C->SQUIT18S->C+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"
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.
--
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/CQAGAAAAAAAAAAAAAAABAAAARQAAAA
AAAAEAAARwAAAAEAAAD+////AAAAAEQAAAD///////////////////////////////////
--MS_Mac_OE_3074340399_15662732_MIME_Part--
III.4) Donner pour chaque message échangé (chaque PDU échangée) dans lexemple déchange précédent la phase à laquelle il appartient?
III.5) Pourquoi y a t'il une syntaxe spécifique pour la réponse à la commande RETR?
III.6) Dans l'exemple précédent dans quelle PDU et à quel usage est utilisé la définition de multiline?
III.7) Pourquoi la chaîne CRLF"."CRLF est-elle interdite dans la définition 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 définir lautomate de protocole dun client POP capable de traiter la séquence de réception de courrier donnée précédemment en exemple. On identifie les cinq états suivants:
1. En attente
Préparation des données et ouverture de la connexion TCP vers le serveur
Authentification
Transaction: réception des messages et mise en forme
Mise à jour du serveur et fin des transferts.
Représentez lautomate possédant les cinq états.
III.10) Sur une machine donnée on dispose des appels de procédure suivants qui sont fournis par différents logiciels réseau.
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 différents logiciels qui fournissent les services précédents ?
III.11) Expliquez simplement ce qui est réalisé dans chaque état de l'automate (procédures de la liste précédente et commandes POP utilisées).
Exercice 16 : DNS et messagerie Internet/l'approche SPF
Dans ce problème nous étudions deux méthodes de lutte contre le courrier non sollicité (spam), qui sont basées sur les relations entre la messagerie SMTP et le service de nom de domaines DNS. De nombreuses autres méthodes ont été proposées que nous n'étudions pas ici, en particulier des méthodes de filtrage visant à sélectionner les courriers sur le contenu.
Dans ce texte, une entreprise connectée à lInternet possède un nom de domaine (comme par exemple fai.com..). Cette entreprise gère un service de courrier électronique au moyen de différents serveurs de messagerie SMTP. Un hôte 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 définition 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 réaliser 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 sollicités (spam) certaines entreprises, pour effectuer une première vérification simple, imposent les deux règles suivantes.
a) Tout hôte de lInternet qui expédie des courriers électroniques à un serveur de courrier doit avoir obligatoirement un enregistrement ressource de type PTR dans sa base de donnée DNS permettant deffectuer une recherche inverse.
b) Le nom de domaine dun hôte émetteur de courrier doit posséder un enregistrement ressource de type A.
4) Comment lenregistrement ressource de type PTR est il utilisé dans le DNS pour réaliser une recherche inverse?
5) En utilisant uniquement les informations échangées dans le cadre des protocoles SMTP et TCP, quelles sont les informations dont dispose un serveur SMTP pour identifier lémetteur dun courrier électronique quil vient de recevoir (trois informations) ?
6) Quelle sont les vérifications que veut effectuer un serveur SMTP dune entreprise comme fai.com qui impose aux émetteurs de courriers les deux règles a) et b) (quelles sont les requêtes DNS utilisées) ?
7) Ladministrateur dun site émetteur de courrier, souhaite vérifier que son DNS est correctement configuré pour que ses courriers ne soient pas rejetés par une entreprise comme fai.com.. qui applique les règles a) et b). Il utilise loutil nslookup disponible sous Unix ou Windows.
Quelles commandes doit-il taper pour vérifier quil satisfait les deux règles a) et b) (expliquez la formation des noms de domaines utilisés pour les lignes de commande) ?
Pour exprimer votre réponse vous pouvez utiliser aussi dig ou host si vous les connaissez mieux.
Cependant les deux règles a) et b) névitent plus beaucoup de courriers non sollicités 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é infestées par des virus chargés démettre les courriers indésirables. Une proposition de vérification qui améliore les règles a) et b) a été récemment acceptée par lIETF. Lensemble des nouveaux mécanismes est baptisé SPF pour Sender Policy Framework. La nouvelle vérification est basée sur la création dans le DNS dun nouveau type denregistrement ressource qui contient pour un domaine les machines habilitées à émettre du courrier.
8) Le nouvel enregistrement ressource a dabord été défini en utilisant le type existant TXT. Pourquoi avoir utilisé ce type existant ?
Il existe de nombreuses directives en SPF pour spécifier une machine habilitée à émettre du courrier. Une façon très simple dappliquer une politique SPF, consiste à créer 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 réseau Internet
"v=spf1" : une valeur obligatoire pour indiquer une utilisation du RR TXT en SPF version 1
"mx" : spécifie que tous les serveurs de courrier du domaine sont des émetteurs autorisés
"-all" : indique que tous les courriers qui ne satisfont pas la contrainte sont rejetés
9) Quelles sont les vérifications qui sont effectuées par un serveur SMTP dune entreprise qui applique la politique SPF vis-à-vis dun émetteur ayant inséré dans son DNS lenregistrement ressource précédent (quelles sont les requêtes DNS utilisées) ?
Il existe différentes autres variantes permettant de spécifier des émetteurs de courrier autorisés que nous n'étudions pas ici: directement par le nom de domaine dun hôte ou par une plage dadresses IP autorisées etc
10) Supposons que la politique SPF soit généralisée, c'est-à-dire qu'on applique des vérifications d'autorisation d'émission, alors le volume des courriers non sollicités pourrait être mieux contrôlé. Quels mécanismes additionnels les fournisseurs d'accès Internet peuvent-ils mettre en oeuvre (selon quels critères) pour effectuer ce contrôle ?
Exercice 17 : Messagerie Internet: Analyse du contenu d'un courrier
La messagerie Internet a délivré un courrier de publicité commerciale. Vous souhaitez analyser différents aspects concernant ce courrier au moyen des informations quil contient pour rechercher déventuels problèmes. Vous disposez d'un client de messagerie qui vous permet dafficher le détail des informations contenues dans ce courrier et vous obtenez la liste suivante:
Return-Path: X-Original-To: gerard@cnam.frDelivered-To: gerard@cnam.frReceived: from brangien.cnam.fr (brangien.cnam.fr [163.173.128.20]) by copernic.cnam.fr (Postfix) with ESMTP id D0E5DEB172 for ; 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 ; Thu, 8 Mar 2007 06:34:09 +0100 (CET)X-Virus-Scanned: amavisd-new at cnam.frReceived: 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 ; 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 ; 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 ; Thu, 8 Mar 2007 06:34:05 +0100 (MET)Content-Transfer-Encoding: binaryContent-Type: multipart/alternative; boundary="_-la-cesure-=_1173332045212331209"MIME-Version: 1.0Organization: infos@topachat.comReply-To: infos@topachat.comX-Comment: CODEOP=20070307-1-39,QOS=1,ID=Z2VyYXJkQGNuYW0uZnI=X-Mailer: mailing.1.8.0 by FGDate: Thu, 8 Mar 2007 05:34:05 UTFrom: infos@topachat.comTo: gerard@cnam.frSubject: =?ISO-8859-1?Q?Le compte =E0 rebours a commenc=E9 ...?=Message-Id: This is a multi-part message in MIME format.
--_-la-cesure-=_1173332045212331209 Content-Disposition: inlineContent-Length: 198Content-Transfer-Encoding: 8bitContent-Type: text/plain; charset="iso-8859-1"MIME-Version: 1.0Date: Thu, 8 Mar 2007 05:34:05 UT
Bonjour,La newsletter au format Html se trouve ici:http://www.topachat.com/mail/07032007.htmL'Anim'Teaminfos@topachat.comPour vous désinscrire:http://www.topachat.com/pages/black.php
--_-la-cesure-=_1173332045212331209 Content-Disposition: inlineContent-Length: 10830Content-Transfer-Encoding: 8bitContent-Type: text/html; charset="iso-8859-1"MIME-Version: 1.0Date: Thu, 8 Mar 2007 05:34:05 UT
Le compte à rebours à commencer ... deco { background-repeat: no-repeat; }v12 { font-size: 14px;}Si ce messagene s'affiche pas correctement, suivez ce lien: http://www.topachat.com/mail/07032007.htm ----- Ici se poursuit un document HTML beaucoup trop long pour être conservé. -----
----- Le courrier électronique se termine par les lignes suivantes : -----
--_-la-cesure-=_1173332045212331209
1) Le courrier précédent est défini à la base par les spécifications de la RFC 822. Rappelez les grandes lignes de cette spécification (rappelez les principes généraux qui gouvernent la structure des messages dans la messagerie Internet). Vous illustrerez votre réponse en prenant pour chaque point cité un exemple dans le contenu du courrier précédent.
2) Ce message est également gouverné par les spécifications de lextension MIME. Rappelez les grandes lignes de cette extension. Donnez des exemples significatifs de lincidence des extensions apportées par le format MIME sur le courrier précédent.
3) On trouve au début du courrier plusieurs lignes dinformations commençant par received. Prenons par exemple la première :
Received: from brangien.cnam.fr (brangien.cnam.fr [163.173.128.20]) by copernic.cnam.fr (Postfix) with ESMTP id D0E5DEB172 for ; Thu, 8 Mar 2007 06:34:09 +0100 (CET)
A quoi sert cette information ? Commentez les différents 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 différents 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 présentation bizarre ?
6) Expliquez la ligne dentête suivante :
Content-Type: multipart/alternative; boundary="_-la-cesure-=_1173332045212331209"
7) Finalement, ce courrier vous parait-il présenter un problème 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) ?
Exercice 18 : Utilisation d'un résolveur DNS
Pour mieux comprendre les différents noms et adresses utilisés dans un courrier, un résolveur interactif DNS a été lancé depuis un poste de travail. Loutil utilisé ici est nslookup qui est activé sous Microsoft Windows 2000 dans la fenêtre invite de commande par léchange suivant. Le résultat est le copié collé de la fenêtre, fautes dorthographes dans nslookup francisé Windows comprises.
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
C:\>nslookup
Serveur par défaut : dns2.proxad.net
Address: 212.27.54.252
La première recherche effectuée concerne le nom de domaine topachat.com selon le type A. Nous allons voir dans les exemples que nos recherches dans le DNS effectuées avec nsloolup sont toujours précédées dune directive qui fixe le type des enregistrements ressources recherchés (les RR ou Resources Records). La commande set q=xxxx est une abréviation 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 réponse a comme statut : Réponse 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 effectuée concerne le nom de domaine topachat.com selon le type MX. On avait aussi vu apparaître dans le courrier du problème précédent lhôte mta1.topachat-clust.com qui jouait un rôle dans le courrier de cette entreprise.
> set q=mx
> topachat.com
Serveur : dns1.proxad.net
Address: 212.27.53.252
R'ponse ne faisant pas autorit'ÿ:
topachat.com MX preference = 10, mail exchanger = ns2.topachat-clust.com
topachat.com MX preference = 20, mail exchanger = ns4.topachat.com
topachat.com MX preference = 40, mail exchanger = ns0.topachat-clust.com
ns4.topachat.com internet address = 195.167.228.241
ns0.topachat-clust.com internet address = 213.41.42.199
ns2.topachat-clust.com internet address = 213.41.42.198
> set q=a
> 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 résultat pour le domaine topachat.com avec le type MX. Comment expliquer cela ?
La troisième 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 effectuées pour confirmer des hypothèses relatives au courrier électronique du CNAM déduites du courrier utilisé au problème précédent.
a) Rappelez la définition dun RR (enregistrement ressource) de type cname ?
b) On peut confirmer les informations relatives au rôle de brangien.cnam.fr et de copernic.cnam.fr vues dans le courrier électronique. Lesquelles ?
Une quatrième recherche concerne un courrier non sollicité dans lequel est apparu comme adresse source du courrier 66.63.190.176. Cette adresse est mentionnée 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é effectuée est la suivante :
> set q=ptr
> 176.190.63.66.in-addr.arpa..
Serveur : dns1.proxad.net
Address: 212.27.53.252
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 internet address = 66.63.164.163
ns2.oc3networks.com internet address = 66.63.164.173
ns1.oc3networks.com 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é mentionnée 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 ?
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 décembre 1994).
De manière à faciliter la lecture, les ensembles cohérents (une commande suivie dune réponse) ont été espacés par des lignes blanches.
En IMAP4, chaque commande est préfixée par un identificateur alphanumérique (une étiquette ou tag) qui est reprise dans la réponse. Normalement une étiquette différente doit être utilisées pour chaque commande de manière à associer commandes et réponses. Ici nous avons utilisé à chaque fois les mêmes deux caractères . (caractère point suivi de caractère 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'hôte.
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 sélectionner un dossier de courrier (une boite à lettre) pour travailler en IMAP
. SELECT INBOX
4) La commande FETCH permet comme en POP3, de récupérer un courrier selon un filtrage perfectionné. Qu'est ce qui a été récupéré ici ? Pourquoi IMAP est-il présenté comme économisant la bande passante du réseau ?
. FETCH 1 (BODY.PEEK[HEADER.FIELDS (SUBJECT)])
5) Il y a longtemps on a pu réaliser la relève du courrier en utilisant le protocole SMTP. On voit que IMAP est dérivé de SMTP mais il en est maintenant très éloigné. Pourquoi (quel avantage a-t-on en utilisant IMAP) ?
Exercice 20 : WAP ('Wireless Application Protocol')
Le WAP (Wireless Application Protocol) a pour objectif de permettre laccès à des ressources de lInternet (informations ou services) au moyen de clients mobiles légers qui sont essentiellement des téléphones portables ou des organiseurs (PDA 'Portable Document Assistant'). Les applications visées sont voisines de celles du Web en diminuant les fonctionnalités attendues : recherches simples (numéros de téléphone, adresses, horaires de transports
), accès à des informations courtes (conditions météo, cours de bourse, trafic routier
), transactions simples (achat de billets,
).
Le WAP est défini par un ensemble de normes élaborées par le Wapforum (regroupement de constructeurs comme Ericsson, Motorola, Nokia,
) à partir de 1997. Le WAP dérive des standards Internet du Web (TCP/IP, HTML, XML, HTTP) en les adaptant à lunivers des téléphones portables cest à dire à de petits terminaux sans fils. En particulier le WAP définit la notion de micro navigateur (micro browser) qui minimise la demande en ressources matérielles (mémoire, puissance processeur, débit de communication) sur un poste client.
Première partie : le langage WML (Wireless Markup Language)
Un micro navigateur WAP peut afficher des informations des lors quelles sont spécifiées dans le langage de balise WML pour Wireless Markup Language. WML est un langage de balises qui réalise une partie des fonctionnalités offertes par HTML. Les ensembles dinformations échangées en WML sont appelés des decks. Un deck est défini par la balise wml. Les decks sont composés dunités daffichage baptisées cartes (définies 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 accédé, lensemble des cartes quil contient est chargé à partir du serveur WAP. Une navigation entre cartes est alors possible, sous le contrôle du micro navigateur local, sans aucun accès au serveur distant.
Voici un exemple très simple de document wml (un deck avec une carte). Dans cet exemple on voit que WML est défini comme un dialecte XML version 1.0 (un document WML est tout dabord un document XML 1.0).
A louverture ce matin le CAC40 ..
Le résultat affiché sur un micro navigateur pour le source précédent pourrait ressembler à :
-- A la bourse de Paris -
A louverture ce matin le CAC 40 ..
La forme graphique précédente ne correspond pas à un micro navigateur réel et est donnée à titre purement indicatif pour comprendre lexemple.
1) A quoi correspondent les trois premières lignes du document ?
2) Le document XML précédent est-il bien formé ?
3) Que devrait-on faire pour vérifier 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 senchaînent. La première carte permet de sélectionner une seule réponse parmi un ensemble de réponses possibles au moyen de boutons. Le résultat est passé dans une variable code_reponse à la seconde carte qui affiche la sélection réalisée.
Infos Meteo
Infos Trafic
Infos Bourse
Vous avez selectionne : $(code_reponse)
La première carte affichée, après avoir sélectionné Infos météo, pourrait être :
Top of Form 1
----- Menu ----------
Infos Meteo
Infos Trafic
Infos Bourse
Choisissez
La seconde carte affichée pourrait être :
----- Choix ----------
Vous avez selectionne : Meteo
4) Quels sont les éléments et les attributs présents dans lexemple précédent ? Ce document possède til des éléments vides ?
5) Quel est larbre résultant de lanalyse syntaxique du document précédent ?
6) Quels sont les principaux avantages du choix de XML pour définir 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 précis du WAP. Par exemple on aurait pu choisir une version simplifiée 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 réaliser des fonctionnalités similaires à celles de la suite des protocoles Internet. Cette suite a été définie en deux étapes. Dans les versions 1 (1.0 , 1.1, etc.) les protocoles (voir plus loin WDP, WTLS, WTP, WSP) sont complètement spécifiques des appareils aux possibilités limitées que sont les téléphones 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 réalisées entre un appareil WAP version 1 et une passerelle qui transforme les messages et les formats spécifiques WAP version 1 en messages et formats habituels de l'Internet et du Web.
Dans la version 1 les protocoles du WAP comportent quatre couches principales qui utilisent les services d'un protocole de communication de réseau sans fil:
7) WDP ('Wap Datagram Protocol') est un protocole qui réalise au dessus du protocole de communication du réseau sans fil (par exemple le protocole GSM des téléphones portables) un mode de communication très analogue à celui du protocole UDP. En fonction des caractéristiques 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 réalise dans l'univers WAP des fonctions similaires au protocole Internet SSL/TLS. Selon les principales fonctions réalisées 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'accès concurrent aux données et de la validation atomique. WTP dans le mode 1 de fonctionnement réalise essentiellement un contrôle d'erreur par acquittement positif et temporisateur sur les messages acheminé par WDP. Dans le mode 2 , WTP implante un mode client serveur à trois messages émission, acquittement positif, réponse. Par ailleurs WTP effectue également la fragmentation et le réassemblage 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 fonctionnalités précédentes succinctement décrites de contrôle d'erreur et de fragmentation ?
10) WSP ('Wap Session Protocol') possède deux modalités: avec et sans connexion. Dans sa modalité WSP/B , WSP est un protocole sans connexion, sans état qui réalise un sous ensemble du protocole HTTP 1.1 . Il comporte pour cela des messages de requête et de réponse et achemine des informations similaires à HTTP 1.1 (ligne initiale, entêtes, corps de message). Une différence essentielle de WSP avec HTTP 1.1 est que les différents champs caractéristiques d'une requête ou d'une réponse WSP sont codés en binaire alors qu'ils sont en format texte en HTTP. De même, il a été défini un format WML binaire baptisé WBXML ('Wap Binary XML') qui encode en binaire au moyen d'un ensemble de règles d'encodage les documents WML échangés dans les messages WSP. Un document WML encodé en WBXML possède un format standard avec une entête, un dictionnaire de chaînes de caractères avec leur encodage et un ensemble d'éléments encodés. Pourquoi avoir défini WSP/B comme un sous ensemble de HTTP 1.1 codé en binaire de même qu'un codage binaire des documents WML ?
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 daméliorer les communications entre des programmes fonctionnant sur des sites clients distribués dans lInternet mondial et des applications serveuses. Les domaines dapplication visés sont principalement ceux du commerce électronique.
Il sagit en fait de la définition 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 définis avec un outil central qui est le protocole de communication et de nombreux outils complémentaires qui traitent des nombreux problèmes annexes (annuaire réparti, sécurité, transactionnel, coordination,
).
Les deux idées essentielles à la base de cette nouvelle approche sont dune part de faire réaliser les communications entre applications en utilisant le protocole HTTP et dautre part de spécifier toutes les normes (structures de données, formats de messages) en utilisant le langage XML.
Cette approche est soutenue activement par de très nombreux éditeurs de logiciels. Les entreprises intéressées par les services web et leur processus de normalisation sont réunies 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 définit deux modes de communications entre programmes : un protocole de communication en mode message et un protocole de communication en mode appel de procédure distante (RPC). SOAP utilise XML pour représenter les données échangées. Les normes SOAP sont généralement décrites 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 utilisés.
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 catégories 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 inconvénients voyez vous à la réalisation de communications entre programmes en utilisant le protocole HTTP ?
3) On rappelle que le protocole HTTP est présenté dans ses RFC comme offrant une communication au niveau des objets. HTTP utilise dans son vocabulaire la notion de méthodes. Quelles sont les différentes méthodes offertes en http ?
4) HTTP vous semble til correspondre à un protocole d'appel de procédure distante (justifiez votre réponse) ?
5) Les concepteurs de SOAP ont choisi XML comme outil de représentation de la structure des messages. Quel est le principal langage, utilisé avant XML, pour représenter les différents types de données manipulés par des programmes et échangés par messages ?
6) Quels sont les avantages et quels sont les inconvénients de lutilisation de XML pour représenter la structure des messages échangés 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 léchange est de confirmer une réservation précédemment 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
FT35ZBQ
Åke Jógvan Øyvind
123456789099999
2005-02
Le message résultat correspondant au message de requête précédent a la forme suivante (la plupart des détails sont omis pour limiter le volume de lexemple) :
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset="utf-8"
Content-Length: nnnn
...
...
...
...
7) A quoi correspondent les cinq premières 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 entête vide et dun corps qui contient le nom de la méthode à exécuter et les paramètres dappel. Quel est larbre résultant de lanalyse syntaxique du document précédent ?
Lexemple suivant montre un fonctionnement de SOAP avec SMTP. Le message de requête 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:
Content-Type: application/soap+xml
...
...
9) Expliquez comment fonctionne le protocole soap avec SMTP (est ce que HYPERLINK "mailto:reservations@travelcompany.example.org" reservations@travelcompany.example.org est le nom du programme qui exécute 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 définition dinterfaces des services web (IDL Interface Definition Language). Rappelez le rôle dun tel langage dans le cadre dun protocole de communication en approche objets répartis (par exemple dans le standard CORBA) ?
Comme tous les outils définis dans le cadre des services sur la toile, WSDL est un dialecte XML. La structure dune déclaration WSDL est décrite dans ses grandes lignes comme suit.
WSDL commence par permette à un utilisateur de décrire de nouveaux types de données dans un langage baptisé xmlschéma (cette possibilité est décrite par les trois lignes suivante dans la description générale de la structure d'un document WSDL)
WSDL propose ensuite de décrire la structure dun ensemble de messages qui sont en fait des messages de requêtes et de réponse utilisés dans le cadre de RPC.
Ensuite WSDL définit un élément type de port comme un ensemble dopérations. Une opération est définie par un message dappel (input) et un message résultat (output). Le standard prévoit aussi la description dune structure de données associée aux erreurs.
?
Lélément binding (liaison) définit ensuite concrètement comment accéder à un service en indiquant son type de port, le protocole utilisé pour y accéder (c'est principalement Soap en mode HTTP mais on a vu que dautres possibilités sont prévues) et la localisation dans la toile de ce service (URI de lendroit ou se trouve le service web).
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 localisées éventuellement sur des serveurs différents.
12) Comparez ce langage de définition d'interface à celui de Corba.
Suggestions pour construire la réponse :
Pourquoi décrire des types de données (à quoi correspond cette possibilité en IDL CORBA) ?
Pourquoi décrire des types de ports qui regroupent des opérations (à quoi correspond cette possibilité en IDL CORBA) ?
Pourquoi décrire des ports qui définissent des points d'accès concrets à des services (à quoi correspond cette possibilité en IDL CORBA).
Exercice 22 : Protocole SIP ('Session Initiation Protocol')
Le protocole SIP (Session Initiation Protocol) a été conçu à 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é développé jusquà ce jour.
SIP est destiné à la création, la modification et la terminaison de sessions déchanges de données multimédias entre usagers du réseau Internet. Ses domaines dapplications principaux sont donc ceux de louverture et de la fermeture des sessions déchanges de textes (messagerie instantanée), audio (communications téléphoniques), audio/vidéo (conférences multimédia, diffusion de films, jeux vidéos en réseau). De manière générale tout échange de données multimédia temps réel en pair à pair peut être supervisé en utilisant SIP. SIP est assez largement diffusé depuis 2001 surtout dans le domaine de la téléphonie. 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 dentités distantes et léchange dinformations définissant le contexte dune communication multimédia (protocole de transport utilisé, codage utilisé,
). SIP doit être clairement distingué de la transmission proprement dite des données multimédia (paquets déchantillons de son, dimages ou de données informatiques). On utilise généralement alors le protocole de transport de données multimédia temps réel RTP/RTCP (Real-time Transport Protocol et son contrôle Real-time Control Protocol) et/ou tous les autres protocoles associés aux communications avec qualité de service RTSP (Real-time Streaming Protocol), RSVP (Resource Reservation Protocol)
.
Pour faire de la signalisation, SIP réutilise et étend de très nombreux aspects existants dans des protocoles Internet : HTTP (les formats de messages), DNS (la gestion des noms et adresses), SMTP (adressage, entêtes et codage MIME des données multimédia). SIP utilise aussi un protocole moins connu SDP (Session Description Protocol) spécialisé dans la négociation de paramètres déchanges de données multimédia. SIP peut fonctionner soit sur TCP soit sur UDP (on peut utiliser UDP pour des raisons d'efficacité).
1) Rappelez la différence entre le fonctionnement des communications en mode connecté et en mode non connecté ?
2) Létablissement des connexions au niveau application a été vu par exemple dans TELNET ou dans SMTP. C'est aussi un problème majeur dans une communication multimédia. Pourquoi ? Donnez le maximum de raisons (de tâches à accomplir) qui justifient un protocole particulier de connexion pour des communications multimédia interactives ?
SIP et DNS
Pour réaliser des opérations SIP deux utilisateurs (user agent) dialoguent en échangeant des messages selon un protocole client serveur de sorte que chaque utilisateur possède 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 différents rôles :
a) Mandataire (proxy server). Cest un relais des messages de signalisation SIP qui réalise des fonctions associées à 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).
b) Redirection des appels (redirect server). Cest un serveur qui est capable de rediriger des appels vers des serveurs mieux appropriés pour rendre le service (par exemple après le déplacement du correspondant dans le réseau Internet).
c) Enregistrement dune adresse (registar server). Ce type de serveur accepte des requêtes 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 détablir seul une communication avec un correspondant car il a toutes les informations nécessaires, un utilisateur SIP doit en général tout dabord trouver un serveur SIP dans un domaine pour réaliser les fonctions qui viennent dêtre décrites. 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 à définir, pour un domaine, le nom dun hôte 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 propriétaires nayant pas de port bien connu ou même des services non ouverts définis en interne dans une entreprise. La structure de lenregistrement SRV est la suivante :
srvce.prot.name ttl class rr pri weight port target
srvce : définit le type du service. Le nom du service doit être précédé selon la dernière RFC dun soulignement _ (le caractère underscore sert à distinguer les services des autres noms de domaine). Il existe une liste de services autorisés (http, ftp, ldap,
).
prot : le nom du protocole de transport utilisé précédé 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 priorités les plus élevées sont les plus petites valeurs).
weight : la capacité du serveur pour la répartition 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 numéro du port permettant daccéder au service
target : le nom de domaine du serveur (de lhôte qui rend le service). Un point indique que le service en question nest pas rendu pour ce domaine.
Un exemple de définition 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 définir le CNAM pour indiquer à ses usagers que son serveur imap sappelle imap.cnam.fr (1 point) ? Quel enregistrement ressource devrait être défini 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 département informatique de luniversité de Columbia (cs.columbia.edu):
_sip._tcp.cs.columbia.edu SRV 20 0 5060 backbay.cs.columbia.edu
_sip._tcp.cs.columbia.edu SRV 0 0 5060 conductor.cs.columbia.edu
_sip._tcp.cs.columbia.edu SRV 10 0 5060 erlang.cs.columbia.edu
_sip._udp.dynamicsoft.com SRV 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 réponses. Quel serveur doit normalement être choisi en premier (justifiez votre réponse) ?
6) Dans quels cas et selon quelles stratégies doit-on utiliser un autre serveur ?
7) Est-ce que le serveur dune application pour un domaine se trouve dans ce domaine ?
Adressage SIP
Le schéma dadressage associé au protocole SIP permet dattribuer à tout utilisateur SIP dans lInternet un nom global. Dans la norme SIP ce nom dutilisateur final est défini 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 lhôte adressé. Il sagit dune chaîne de caractère quelconque. Elle peut aussi être définie dans le cadre de lune des applications utilisatrices de SIP : un numéro de téléphone selon la numérotation habituelle, un identificateur dans un logiciel de messagerie instantanée (chat)
User peut être omis si lhôte nhéberge quun unique destinataire (exemple un téléphone IP).
Password : un mot de passe en clair (optionnel).
Host : un nom DNS absolu (FQDN) ou une adresse IPV4 ou IPV6.
Port : un numéro de port (le port par défaut SIP en TCP ou UDP est le port 5060).
Uri-parameters : une liste de couples nom_paramètre=valeur_parametre séparés par des point virgules qui précisent linterprétation de lURI (on voit comme exemple le transport utilisé, la nature de la zone usager qui peut être un numéro de téléphone,
).
Headers : une liste de couples type_entete=valeur séparés par des & (et commerciaux). Ces définitions sont destinées à être transformées en des lignes dentête dans la requête SIP (analogue dune requête http). Voir par exemple subject=rendezvous qui est transformé en une ligne dentête Subject : rendezvous
8) La structure générale dune URL dans le schéma SIP reprend certains aspects dune adresse de courrier électronique Internet SMTP (dans les URL le schéma des adresses électroniques sappelle MAILTO). Quels sont les aspects hérités de ladressage du courrier électronique (MAILTO).
9) La structure générale dune adresse dans le schéma SIP hérite certains aspects des adresses de la toile mondiale WWW (schéma HTTP). Quels sont les aspects hérités de ladressage de la toile (HTTP)?
10) La partie Host permet de définir une adresse IP, ou un nom de domaine DNS. On peut alors définir un hôte précis, un service ou un domaine de niveau intermédiaire dans la hiérarchie de désignation du DNS. Quel usage peut-on faire de ces différents moyens de désignation ?
Protocole SIP
De manière générale le protocole SIP est visiblement dérivé du protocole HTPP. Mais, comme ses objectifs sont différents, il présente en fait des différences significatives. En particulier, il implante des méthodes différentes dont les principales sont les suivantes :
INVITE : initie des sessions dont la description est incluse dans le corps.
ACK : est une réponse à linvite et confirme létablissement dune session.
BYE : termine une session
CANCEL : arrête un dialogue douverture de session en cours.
OPTIONS : permet de définir les fonctions réalisées par une implantation.
REGISTER : relie une adresse SIP à une localisation (adresse IP).
Un échange de base caractéristique en SIP est le suivant (exemple tiré de D.Sisalem et J. Kutan 'Understanding SIP'). Il sagit dune ouverture de session SIP réussie entre deux usagers distants (un agent client UAC et un agent serveur UAS) :
1 INVITE sip:UserB@there.com SIP/2.0
2 Via: SIP/2.0/UDP here.com:5060
3 From: BigGuy
4 To: LittleGuy
5 Call-ID: 12345600@here.com
6 CSeq: 1 INVITE
7 Subject: Happy Christmas
8 Contact: BigGuy
9 Content-Type: application/sdp
10 Content-Length: 147
11
12 v=0
13 o=UserA 2890844526 2890844526 IN IP4 here. com
14 s=Session SDP
15 c=IN IP4 100.101.102.103
16 t=0 0
17 m=audio 49172 RTP/AVP 0
18 a=rtpmap: 0 PCMU/8000
La réponse est la suivante (comme en HTTP on peut aussi avoir des réponses intermédiaires comme par exemple '100 Trying' ou '180 Ringing') :
1 SIP/2.0 200 OK
2 Via: SIP/2.0/ UDP here.com:5060
3 From: BigGuy
4 To: LittleGuy; tag=65a35
5 Call-ID: 12345601@here.com
6 CSeq: 1 INVITE
7 Subject: Happy Christmas
8 Contact: LittleGuy
9 Content-Type: application/sdp
10 Content-Length: 134
11
12 v=0
13 o=UserB 2890844527 2890844527 IN IP4 there. com
14 s=Session SDP
15 c=IN IP4 110.111.112.113
16 t=0 0
17 m=audio 3456 RTP/AVP 0
18 a=rtpmap:0 PCMU/8000
Le message qui termine léchange douverture de session est un acquittement positif :
1 ACK sip:UserB@there.com SIP/2.0
2 Via: SIP/2.0/UDP here.com:5060
3 From: BigGuy
4 To: LittleGuy
5 Call-ID: 12345600@here.com
6 CSeq: 1 ACK
7 Content-Length: 0
8
11) Dans un document sur SIP, on parle à propos de la requête INVITE didempotence. Rappelez la définition de lidempotence.
12) La réaction d'un utilisateur distant à une demande d'ouverture de connexion peut-être longue. Pourquoi lINVITE doit plutôt être implantée en étant idempotente ?
13) Quest ce qui pourrait faire que linvite ne soit pas considérée 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 requête INVITE. Que pouvez vous interpréter des lignes 12 à 18 de la requête INVITE?
15) Lentête VIA (dans l'INVITE en ligne 2 Via: SIP/2.0/UDP here.com:5060) indique le chemin que doit emprunter la requête (un relais qui doit être visité par la requête). Quel est le mécanisme analogue dans SMTP.
16) Lentête CSeq (ligne 6 abréviation de Command Sequence) définit le numéro de séquence dune requête. Par exemple ici, on en est très naturellement à la première requête INVITE. L'entête Cseq apparaît aussi dans la réponse. Pourquoi avoir rajouté cette entête ?
17) Définissez 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 méthodes (sans les entêtes ni les corps). Vous introduirez les aspects suivants : le client tente sept fois douvrir la session avant dabandonner. Il peut exister des réponses 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.
Exercice 23 : Protocole UPnP ('Universal Plug and Play)
Introduction : UPnP (Universal Plug and Play) est la réunion de plusieurs protocoles sexécutant au niveau application de larchitecture de réseaux Internet. Développé depuis 1999, son objectif est de définir des mécanismes, qui permettent à des appareils numériques 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, découvrir les autres appareils UPnP accessibles dans son environnement réseau, découvrir les services quils peuvent rendre et se connecter à ces appareils pour créer un réseau à la demande. On parle alors de réseau « adhoc » c'est-à-dire dun réseau de circonstance créé par la mise en présence, 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, téléphones portables, organiseurs, appareils audio/vidéo (décodeurs de télévision, lecteurs de disques, amplificateurs, projecteurs), appareils photos mais aussi appareils ménagers, appareils de domotique (alarmes, chauffage)
. Pour exécuter UPnP, ces dispositifs doivent donc disposer dun minimum dintelligence: un processeur avec des fonctions systèmes de base, un coupleur de communication réseau et une pile de protocoles Internet. Un exemple type denvironnement système en Java pour un appareil est donné par OSGi ('Open Service Gateway initiative') qui est un complément naturel de UPnP. Un exemple type de réseau local utilisable en relation avec UPnP est celui du réseau sans fil Wifi. Cependant, tout type de réseau filaire ou sans fil avec la pile des protocoles Internet peut permettre dutiliser UPnP: Ethernet, réseau téléphonique avec ou sans fil, infrarouge, à courants porteurs, IEEE1394 Firewire, réseau radio fréquences Bluetooth etc
. Dans la suite de ce texte, nous considérons que cest un réseau local sans fil Wifi qui supporte les communications aux niveaux physique et liaison.
Une utilisation typique de ce protocole est alors de fournir à un opérateur humain la liste des différents appareils quil peut atteindre dans son environnement réseau et lui permettre dactiver différents services offerts par ces appareils au moyen dune interface ergonomique. Par exemple un téléphone portable (ou un ordinateur ou une télécommande universelle UPnP) peuvent être utilisés comme point de contrôle UPnP permettant de télécommander des appareils périphériques. Un utilisateur à son domicile, pourrait commander la fermeture des volets électriques dune pièce où il se trouve, régler la température de la pièce, lancer un lecteur de flux vidéo vers le réseau et de manière coordonnée lancer la projection du flux vidéo à partir du réseau. Il pourrait enfin commander lextinction de la lumière.
Description générale : UPnP propose des mécanismes 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 présence dans un réseau. Cette annonce est diffusée afin d'atteindre tous les destinataires UPnP potentiels.
- la découverte automatique dautres appareils UPnP, sils sont connectés au même réseau. Une requête de découverte, (une demande vers tous les autres appareils UPnP de signaler leur existence) est également diffusée.
- la transmission vers les autres appareils UPnP des différents services que peut rendre un appareil (en fait la description des différentes interfaces applicatives API que peut posséder cet appareil). De même, un appareil doit pouvoir obtenir sur demande les différents services des autres appareils. Il doit pouvoir interpréter et utiliser ces définitions de services. Les possibilités dannonce de la présence dun appareil et des services quil peut rendre, ou dinterrogation des autres appareils sur leur présence et leurs services, constituent la principale contribution de UPnP associée à la découverte de la configuration dun réseau.
- la mise en connexion entre appareils, le contrôle commande à distance dun appareil. UPnP utilise pour le contrôle 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 générer et de recevoir des événements (des messages exceptionnels asynchrones) signalant des changements de variable d'état (changement de mode de fonctionnement ou problèmes sur un appareil). UPnP utilise un protocole de gestion dévénements baptisé GENA ('General Event Notification Architecture').
UPnP sappuie sur des standards Internet très répandus 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 structurées en mode client-serveur.
- Un appareil client est appelé en UPnP un point de contrôle (en anglais CP Control Point). Très souvent, il contrôle pour un utilisateur final (une personne) différents périphériques au moyen dune interface graphique. Le logiciel UPnP point de contrôle est donc typiquement exécuté sur un ordinateur personnel, un téléphone portable, un organiseur ou une télécommande.
- Un appareil serveur est appelé en UPnP un périphérique (en anglais CD Controlled Device). Un périphérique offre un ou plusieurs services susceptibles dêtre découverts et activés par un point de contrôle.
Diffusion industrielle : UPnP est soutenu par un consortium de plus de 800 entreprises ou organisations (UPnP Forum) avec un rôle 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 différents qui résolvent plus ou moins le même problème : Jini dans lunivers SUN/Java, Salutation, SLP ('Service Location Protocol'), Zeroconf
.
SHAPE \* MERGEFORMAT
Figure 1. Pile des protocoles UPnP
Problèmes dadressage
Les communications en UPnP sont dérivées des communications en http de sorte que les structures de deux protocoles sont très voisines. On étudie les aspects d'adressage en UPnP en commençant par revenir sur ladressage en HTTP. Pour communiquer en HTTP, un client HTTP doit connaître ou obtenir par un moyen ou un autre différents noms ou adresses le concernant et concernant le serveur auquel il s'adresse.
1) Rappelez les éléments principaux du système dadressage utilisé par un client HTTP pour désigner un serveur HTTP. Indication : vous donnerez son nom. Puis vous définirez les différentes informations de désignation (noms et adresses) obligatoires ou facultatives que le client HTTP (lhôte émetteur dune requête HTTP) doit connaître pour ce qui concerne le serveur. Ces adresses ou ces noms sont associés aux différentes couches de larchitecture OSI qui sont également celles de l'Internet (aux différents protocoles Internet). Vous en donnerez une liste complète classée par couches, en précisant les noms ou adresses qui sont obligatoires et ceux qui sont optionnels c'est-à-dire obtenus par des valeurs par défaut ou par des moyens divers automatiques (valeurs pré configurées ou obtenues par utilisation de protocoles).
2) Quelles sont les différentes informations de désignation (adresses ou noms symboliques) que le client HTTP (lhôte émetteur dune requête HTTP) doit connaître pour ce qui le concerne. Mêmes indications que pour la question précédente. 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 réseau composé d'appareils d'informatique individuelle ou domestique, en utilisant des communications de type HTTP. Les adresses ou les noms utilisés sont de même nature que ceux de HTTP. Dans certains cas le réseau peut-être correctement administré avec des serveurs caractéristiques d'un bon réseau d'entreprise (serveurs DNS, DHCP). Dans d'autres cas le réseau 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 très simples (comme une commande déclairage dune pièce). Dans le cas dun protocole comme UPnP, quels sont les noms ou adresses qui sont indispensables ? Indications : vous utiliserez les réponses aux questions précédentes concernant le client et le serveur en vous préoccupant principalement des noms ou adresses indispensables pour atteindre un serveur HTTP distant. Vous proposerez éventuellement des solutions pour obtenir ces noms ou adresses.
Découverte des services disponibles dans un réseau : SSDP (Simple Service Discovery Protocol)
SSDP est dans lensemble UPnP, le protocole qui permet à un appareil UPnP de détecter tous les autres appareils UPnP connectés à un réseau. Pour découvrir un réseau, un appareil peut émettre des requêtes lui permettant de connaître la liste des appareils déjà connectés et pour chaque appareil la liste des services quil peut fournir. Par ailleurs un appareil qui vient dêtre initialisé doit envoyer des requêtes annonçant son arrivée dans le réseau et définissant les services quil peut fournir. Quand un appareil est arrêté normalement, il doit émettre une requête indiquant sa sortie du réseau. En ce sens SSDP entre dans la catégorie des protocoles dappartenance à un groupe dont le rôle est de suivre la composition dun groupe en univers réparti (Group Membership Protocol). Avec SSDP, pour chaque appareil, le suivi de la composition du groupe des appareils accessibles doit être réalisé tant que lappareil reste opérationnel. Donc, pour maintenir sa vision à jour après la phase initiale dapprentissage, chaque appareil SSDP émet des requêtes de découverte, traite les réponses et reçoit périodiquement des messages dannonce SSDP ce qui génère un flux de messages permanent.
SSDP est une adaptation de HTTP au problème de la découverte de réseau. Il conserve de HTTP sa structure générale, ses formats de messages, mais, comme ses objectifs sont différents il utilise des méthodes nouvelles et des mécanismes nouveaux.
4) Quels sont les avantages et les inconvénients de prendre comme base le protocole HTTP pour un nouveau protocole (par exemple ici un protocole de découverte de réseau comme SSDP) ?
Une caractéristique importante de SSDP est dutiliser deux versions modifiées de HTTP qui ont été baptisées HTTPU pour HTTP Unicast over UDP et HTTPMU pour HTTP Multicast over UDP.
Une différence 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 requête. 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 réponse à la requête. En HTTPU comme en HTTPMU les requêtes et les réponses 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 inconvénients 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 découverte de réseau comme SSDP à substituer UDP comme transport sous jacent à TCP. Indication, examinez les caractéristiques que vous connaissez des deux protocoles TCP et UDP en relation avec les objectifs poursuivis par SSDP ?
Le protocole HTTPU a reçu un nom de schéma dadressage dans le cadre des URL, différent de HTTP. Cest naturellement HTTPU qui a été retenu. Une URL HTTPU commence donc par la chaîne de caractères HTTPU:. En dehors du changement de nom de schéma, les URL HTTPU ont sensiblement la même structure (la même grammaire) que les URL HTTP.
7) Puisque la structure des URL est la même, pourquoi ne pas avoir conservé comme nom de schéma HTTP (quelles sont les raisons qui motivent le changement du nom de schéma) ?
Dans le protocole SSDP, NOTIFY est le nom de lune des méthodes (comme GET, HEAD ou POST en HTTP). Une requête NOTIFY est toujours transmise en diffusion au moyen de HTTPMU à tous les autres appareils UPnP accessibles. NOTIFY est décrit dans la norme UPnP comme un avertissement (advertisement) en ce sens que cette méthode avertit les autres appareils UPnP de lexistence de lémetteur de la requête NOTIFY. Une telle requête est donc naturellement transmise à la mise sous tension dun appareil ou lors dune modification de configuration ou encore périodiquement pour rafraîchir les caches des autres appareils. Dans la terminologie UPnP, le cache est en fait la table gérée par chaque appareil qui représente sa vision de lensemble des autres appareils. Lémetteur dun NOTIFY apporte simplement une information aux autres et nattend aucune réponse des autres appareils.
La description des principales entêtes dune requête NOTIFY est donnée 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 complémentaires:
LOCATION : Définit une URL du WEB où lon peut trouver une ressource (une page) contenant une description détaillée de lappareil émetteur de la requête. Cest cette information qui est essentielle car cette description peut être téléchargée de manière à obtenir les informations nécessaires au contrôle à distance dun appareil.
NT (Notification Type) : Définit le type de linformation apportée. Un appareil (device) peut comporter des sous appareils (sub devices), chacun pouvant offrir des services différents. Le type dans un avertissement permet de séparer 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 système dexploitation (Linux, Windows
) de lappareil et sa version. On trouve ensuite la version de UPnP utilisée (actuellement 1.0) puis le nom et la version donné par le constructeur pour lappareil qui effectue lannonce.
NTS Notification Sub Type : Dans cette entête, la chaîne ssdp:alive indique que lappareil ou le service est opérationnel, ssdp:byebye indique larrêt du fonctionnement opérationnel 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 requête 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-upnp-org: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 requête NOTIFY, on voit dans les deux premières lignes les aspects dadressage dans une forme qui est celle de HTTP 1.1. Associé au nom de la méthode on a le chemin vers la ressource et la seconde ligne est une entête HOST. Pourquoi en HTTP/1.1 a-t-on introduit de manière obligatoire lentête HOST ?
9) Le chemin vers la ressource est défini par *. Lentête HOST a pour valeur 239.255.255.250:1900. Pourquoi en SSDP a-t-on défini ladresse cible de la requête de cette façon ? 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 dentête CACHE-CONTROL dont le paramètre principal max-age définit la durée en seconde jusquà expiration de lavertissement (cest à dire de linformation apportée par la requête NOTIFY). Pourquoi définir une telle durée de validité dans les caches ?
M-SEARCH est une seconde méthode définie en SSDP pour enquêter sur la présence 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
Lentête MAN contient la chaîne ssdp:discover pour indiquer une requête de découverte de configuration réseau.
Une réponse positive, obtenue lorsquune information est retournée correctement sur une requête M-SEARCH, a la forme suivante. Cest une réponse point à point transmise en HTTPU. Les entêtes ont la même 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 entêtes une entête nouvelle MX obligatoire définissant une valeur en secondes. Un appareil qui répondra à une requête M-SEARCH doit attendre un délai distribué aléatoirement entre 0 et MX secondes pour envoyer sa réponse. Quand un réseau UPnP augmente en taille, la norme recommande daugmenter progressivement la valeur de MX. Selon vous, dans quel but lentête MX a-t-elle été définie ? Eventuellement définissez à quelles classes de mécanisme dans les réseaux, correspond l'entête MX.
Spécification dun appareil et de ses services
Il existe différents documents XML pour la description des appareils et de leurs services : description physique densemble d'un appareil, description logique, description détaillée des services rendus, description des variables détat quun appareil gère, description des événements générés. Le principal document (la description densemble) a la forme générale suivante :
base URL for all relative URLs
short user-friendly title
manufacturer name
URL to manufacturer site
long user-friendly title
model name
model number
URL to model site
manufacturer's serial number
uuid:UUIDUniversal Product Code
urn:chemas-upnp-or:device:deviceType
urn:schemas-upnp-org:service:serviceType:vurn:upnp-org:serviceId:serviceIDURL to service description
URL for control
URL for eventing
Declarations for other services (if any) go here
Description of embedded devices (if any) go here
image/format
horizontal pixels
vertical pixels
color depth
URL to icon
XML to declare other icons, if any, go here
URL for presentation
10
12) Lecture du document XML. En vous limitant aux quatre premières lignes du document, donnez des explications concernant ces lignes. Indications : commentez les entêtes, les éléments, les attributs. Quelles sont les informations apportées par ces quatre lignes ?
13) Quel est larbre associé à lélément servicelist. Que reflète cette structure (pourquoi avoir retenu cette structure) ?
14) Dans une interface graphique ergonomique, à chaque appareil on associe une icône dont le graphisme doit être familier à lutilisateur. Quels sont les éléments qui ont été retenus pour préciser lune des icônes associée à un appareil (pouvez vous expliquer leur signification).
UPnP et services dannuaires
15) Une autre approche possible pour résoudre le problème de découverte de la configuration dun réseau résolu par UPnP est dutiliser une approche dannuaire comme celle du DNS (Domain Name System). Mais de manière similaire les annuaires LDAP (Lightweight Directory Access Protocol) ou UDDI des services Webs (Universal Description Discovery and Integration) seraient aussi utilisables. Rappelez brièvement les principes généraux darchitecture et les principales fonctions d'un service d'annuaire ?
16) Comment pourrait-on utiliser un service d'annuaire pour fournir un service de découverte de la configuration dun réseau ? On rappelle quun appareil peut annoncer sa présence et envoyer des requêtes de découverte des autres appareils accessibles et des services qu'ils peuvent rendre.
17) Discutez des avantages et des inconvénients dune approche complètement répartie (pair à pair 'peer to peer') comme celle de UPnP ou lon fait jouer le même rôle à tous les appareils plutôt que de faire gérer ces informations par un service dannuaire centralisé. En UPnP chaque appareil gère ses propres caractéristiques, les fournit sur demande. Il apprend les caractéristiques de tous les autres appareils. Indications : vous pourrez examiner les aspects dadministration, de performances, de tolérances aux pannes, de conception et de développement de lapplication.
Complément hors sujet
Vocabulaire : UPnP participe à la construction d'un réseau adhoc c'est à dire un réseau qui s'auto organise selon les machines en présence. Lapproche UPnP est développée entre des appareils considérés comme égaux. UPnP entre donc dans la catégorie des approches pair à pair (peer to peer). Par ailleurs, UPnP est lun des moyens de linformatique omniprésente ou ambiante ou encore ubiquitaire, c'est-à-dire présente dans de plus en plus daspects (des appareils) de la vie courante. On parle en anglais dinformatique pervasive (en français ominiprésente) ou encore ubiquitous (ubiquitaire) ou encore ambient (ambiante). Les personnes évoluent de plus en plus dans une ambiance de technologie informatique et réseau.
CNAM- Année 2007/2008 -- Exercices Technologie client-serveur
IP
TCP
UDP
GENA
(Events)
HTTP
HTTP
(Description)
SOAP
(Control)
SSDP
EMBED Word.Document.8 \s
Commandes SMTP
Serveur
(récepteur)
SMTP
Client
(émetteur)
SMTP
Usager
Réponses SMTP
Archivages
HTTPU
(Discovery)
GENA
SSDP
HTTPMU
(Discovery)
UPnP Device Architecture Defined
UPnP Forum Working Committee Defined
UPnP Vendor Defined
GSM, Bluetooth,
.
(Protocoles de communication du réseau sans fils)
WDP
('Wap Datagram Protocol')
WTLS
('Wap Transaction Layer Security')
Finished()
Certificate ()
ClientKeyExchange ()
Finished()
Certificate ()
CertificateRequest ()
ServerHello(protocolVersion, random, sessionID,Ciphersuite, compressMethod)
quest
ClientHello(protocolVersion, random, sessionID,Ciphersuite, compressMethod)
Client
Serveur
SA,TGT := EMBED Equation.3
Kerberos
Alice
KSB_AS_REP, Kerberos, Alice, REP
Génère la clef SA ;date_per_SA := date_courante+ durée_validité ;
TGT= EMBED Equation.3
REP := EMBED Equation.3
KSB_AS_REQ, Alice, Kerberos
WTP
('Wap Transaction Protocol')
WSP
('Wap Session Protocol')
Serveur
Web
Passerelle
WAP
Client
WAP
Version 1
WDP, WTLS, WTP,WSP
TCP/IP, HTTP