Cours
Systèmes d'information
distribués
Prof. Abderrahmane BAADACHE
[email protected] Novembre, 2021
1. Introduction sur les systèmes d'information
a. Dénition
◦◦◦
◦ Un SI (Système d'information) est
un ensemble organisé de ressources (don-
nées, procédures, matériel, logiciel, etc.)
permettant d'acquérir, de stocker, de
structurer et de communiquer des infor-
mations sous forme de textes, images,
sons, ou de données au sein des orga-
nisations.
◦ On distingue des systèmes d'informa-
tion :
Supports d'opérations (traitement
de transaction, contrôle de proces-
sus industriels, supports d'opérations
de bureau et de communication)
Supports de gestion (aide à la pro-
duction de rapports, aide à la déci-
sion, etc.).
◦ Exemple : Système d'information mé-
dical.
1
Bases de données (dossiers médi-
caux + l'administratif), infrastruc-
ture réseau.
Applications médicales de gestion :
administrative, médicaments, équi-
pements, examens, planication, etc.
1. Introduction sur les systèmes d'information
b. Fonctions d'un SI
◦◦◦
• Échange de données entre applica-
tions hétérogènes manipulant des don-
nées au format hétérogènes.
• Répartition (processus et données) sur
des sites géographiques distants.
• Interopérabilité des plates-formes.
• Portabilité des applications.
• Gestion de la réplication : Serveurs de
chiers répliqués, bases de données ré-
pliquées, Site Web miroirs.
• Gestion de la cohérence des données.
• Gestion des accès concurrents.
• Persistance des données.
• Tolérance aux pannes.
• Scalabilité : performance garantie si nombre
de sites, distance entre les sites, nombre
d'utilisateurs, nombre de processus, vo-
lume des données et fréquence des in-
teractions augmentent.
• Sécurité (Authentication, intégrité, con-
dentialité, anonymat, contrôle d'accès).
2
1.◦◦◦Introduction sur les systèmes d'information
c. Systèmes centralisés
• Composants
1mune. localisés sur un site
processeur : une horloge com-
unique.
d'adressage
1 mémoire centrale : un espace
commun.
1centralisée
système d'exploitation : gestion
des ressources et un etat
global facilement reconstituable.
Accès local aux ressources
• Centralisation des données et des trai-
tements.
• Presque abandonné car n'est pas pra-
tique.
3
1. Introduction sur les systèmes d'information
d. Client-serveur
◦◦◦
Client-serveur désigne une interaction à travers
un réseau entre plusieurs processus, l'un quali-
é de client, envoie des requêtes. L'autre, qua-
lié de serveur, attend les requêtes des clients
et y répond.
• 2 niveaux (2-tier)
Architecture dénommée client lourd
Le poste de travail héberge l'en-
⇒
semble de la gestion d'interface
homme-machine et le traitement.
Le serveur est un serveur de base
de données.
⇒ Architecture dénommée client léger
Le poste de travail n'héberge que
l'interface homme-machine.
4
Le serveur héberge les données
et les traitements.
Avantages & inconvénients
+ Mise en ÷uvre relativement simple.
+ Ecace pour un nombre réduit de
clients.
- Coûts de déploiement et de MAJ.
- Accès concurrent limité.
• 3 niveaux (3-tier)
Le poste de travail héberge l'inter-
face homme-machine et une partie
des traitements.
Le serveur d'applications gère l'autre
partie des traitements.
Le serveur de données gère les accès
aux données.
Architecture dénommée traitements
coopératifs.
Avantages
Centralisation des traitements.
Pas de duplication des données.
Gestion simple de la cohérence des don-
nées.
1. Introduction sur les systèmes d'information
e. Quelques rappels
◦◦◦
Une adresse IP est un quadruplet de
nombres de 8 bits chaque, séparés par
des points. Exemple : 192.168.1.10
@IP 127.0.0.1 : adresse de rebouclage
(ang. loopback) qui désigne la machine
locale (ang. localhost).
5 classes
∗ Classe A : de 1.0.0.1 à 126.255.255.254.
Le 1er octet réseau (NetID), les 3
octets suivants pour l'@ de l'hôte
(hostID))
∗ Classe B : de 128.0.0.1 à 191.255.255.254.
Les deux 1ers octets réseau, 2 oc-
tets suivants pour l'@ de l'hôte.
∗ Classe C : de 192.0.0.1 à 223.255.255.254.
Les trois 1ers octets réseau, 4éme
octet pour l'@ de l'hôte
5
Classe D: de 224.0.0.1 à 239.255.255.255.
Groupes multicast.
∗
∗ Classe E : réservées pour futur usage.
IPv6 résout le problème de pénurie d'adresses
IP. @IP sur 128 bits.
1. Introduction sur les systèmes d'information
Port d'écoute
◦◦◦
∗ 16-bits unsigned integer, de 1 à 65535.
∗ Ports utilisateur >= 1024.
∗ Exemples de ports réservés : FTP :
21/TCP, Telnet : 23/TCP, SMTP :
25/TCP, Login : 513/TCP, HTTP :
80/TCP.
Routage dans les réseaux IP
Le routage est l'opération qui consiste
à trouver un chemin entre deux ma-
chines, l'une émettrice et l'autre ré-
ceptrice.
6
Un routeur est un matériel réseau
spécique, conçu spécialement pour
le routage.
Les routeurs se réfèrent à des tables
de routage internes pour prendre
des décisions d'acheminement des
paquets le long des chemins du ré-
seau.
Le routage peut être statique ou
dynamique
⋆ En statique, un administrateur
réseau établit manuellement des
tables de routage statiques.
Les tables de routage dynamiques
se mettent à jour automatique-
⋆
ment.
Quelques protocoles de routage
⋆ IP : l'Internet Protocol (IP) spé-
cie l'origine et la destination de
chaque paquet de données. Les
routeurs inspectent l'en-tête IP
de chaque paquet pour identier
où les envoyer.
⋆ OSPF : le protocole OSPF (Open
Shortest Path First) est couram-
ment utilisé par les routeurs de
réseau pour identier dynamique-
ment les routes disponibles les
plus rapides et les plus courtes
pour envoyer des paquets à leur
destination.
⋆ RIP : le protocole RIP (Routing
Information Protocol) utilise le "
comptage de sauts " pour trou-
ver le chemin le plus court d'un
réseau à un autre.
Connections du 2600 router
2. Protocole HTTP et programmation serveur
a. Protocole HTTP
◦◦◦
HTTP (Hypertext Transfer Protocol)
est un protocole de communication entre
un et un pour le
.
client serveur World
HTTP permet un transfert de chiers
Wide Web
localisés grâce à une chaîne de carac-
tères appelée URL entre un navigateur
(le client) et un serveur Web.
Client Web : un programme qui tourne
sur un ordinateur, il envoie des requêtes
à un serveur qui lui répond en lui en-
voyant un document (HTML, XML, etc.)
Serveur HTTP ou serveur Web : est
un logiciel servant des requêtes respec-
tant le protocole de communication HTTP.
Serveurs HTTP les plus utilisés :
Apache HTTP Server de la Apache
Software Foundation.
7
Internet Information Services de Mi-
crosoft.
Sun Java System Web Server de Sun Mi-
crosystems.
Le serveur Web Zeus de Zeus Tech-
nology.
Communication entre client et ser-
veur : se fait en deux temps
Requête HTTP : Elle comprend
Une ligne de requête (méthode, URL,
version du protocole)
Les champs d'en-tête de la requête.
Le corps de la requête
Exemple de requête HTTP
Exemples de commandes et d'en-
têtes
Commandes :
GET : Récupérer une ressource.
HEAD : Récupérer l'entête de
la ressource.
POST : Envoi des données.
Entêtes :
Accept : Type de contenu ac-
cepté.
Authorization : identication du
navigateur.
Date : date début de transfert.
Réponse HTTP : Elle comprend
Ligne de statut : précisant la ver-
sion du protocole utilisé et l'état du
traitement de la requête.
Champs d'en-tête de la réponse :
donne des informations supplémen-
taires sur la réponse et/ou le ser-
veur.
Corps de la réponse : contient le
document demandé.
Exemple de réponse HTTP
Exemples d'en-têtes de réponse
Content-Encoding : Type de co-
dage.
Content-Language : Type de lan-
gage.
Content-Length : Longueur du corps
de la réponse.
Exemples de codes de réponse : Ce
sont les codes renvoyés par le naviga-
teur, lorsqu'il n'arrive pas à fournir la
page demandée.
200 : message OK, i.e., la requête
a été accomplie correctement.
202 : message ACCEPTED, i.e.,
la requête a été acceptée.
204 : message NO RESPONSE,
i.e., le serveur a reçu la requête mais
il n'y a pas d'information à renvoyer.
301 : message MOVED, i.e., Les
données demandées ont été trans-
férées à une nouvelle adresse.
400 : message BAD REQUEST,
i.e., la requête est impossible à sa-
tisfaire.
404 : message NOT FOUND, i.e.,
requête bien reçu, mais réponse cor-
respondante non trouvée.
2. Les sockets
a. Notion de sockets
◦◦◦
Il s'agit d'un modèle permettant la com-
munication inter processus (IPC - Inter
Process Communication).
En d'autres termes, une socket est un
point de communication par lequel un
processus peut émettre ou recevoir des
données.
8
2. Les sockets
Pour établir une communication vers une
◦◦◦
machine distante, il faut :
∗ s'attribuer un numéro de port.
∗ déterminer l'adresse Internet de la
machine réceptrice.
∗ déterminer le numéro de port du
service distant.
Modes de communication
∗ Le mode connecté, comparable à
une communication téléphonique, uti-
lisant le protocole TCP, dans le-
quel une connexion durable est éta-
blie entre les processus.
∗ Le mode non connecté, analogue
à une communication par courrier,
utilisant le protocole UDP. Il s'agit
d'une communication sans connexion,
rapide mais moins able.
Types de socket
9
Stream Sockets (TCP) : communi-
cation en mode connecté.
∗
∗ Datagram Sockets (UDP) : commu-
nication en mode non connecté.
2. Les sockets
b. Fonctionnement des sockets
◦◦◦
⇒ Coté client (en mode connecté)
1. crée une socket.
2. se connecte au serveur en donnant
l'adresse socket distante (adresse In-
ternet du serveur et numéro de port
du service).
3. lit ou écrit sur la socket.
4. ferme la socket.
⇒ Coté serveur (en mode connecté)
1. crée une socket.
2. associe une adresse socket (son adresse
Internet et le numéro de port choisi)
au service : binding.
3. se met à l'écoute des connexions en-
trantes.
4. Pour chaque connexion
accepte la connexion. entrante :
lit ou écrit sur la nouvelle socket.
ferme la nouvelle socket. 10
2. Les sockets
⇒ Client/Serveur en mode connecté (TCP)
◦◦◦
En mode connecté, une connexion doit être
établie avant que la transmission eective des
données commence, cette connexion est libé-
rée à la n de la transmission.
11
2.◦◦◦Les sockets
⇒ Client/Serveur en mode non connecté (UDP)
En mode
exigée. non connecté, aucune connexion n'est
A noter que l'implémentation des sockets se
diffère d'un langage de programmation à un
autre et sous un système d'exploitation à un
autre.
12
2. Les sockets
c. Sockets en C sous Linux
◦◦◦
⇒ Création d'une socket
int socket (domaine, type, protocole);
int domaine; /* AF INET ou AF UNIX */
int type;/* SOCK STREAM (TCP) ou SOCK DGRAM
(UDP)*/
int protocole; /* IPPROTO TCP ou IPPROTO UDP
Primitive bind (TCP et UDP)
équivalent si = 0 */
⇒
int bind (socket, adresse, l adresse);
int socket; /* descripteur de la socket
*/
struct sockaddr *adresse; /*adresse socket
(port+adresse) */
int l adresse; /* longueur de la structure
Primitive connect (TCP)
adresse */
⇒
int connect (socket, adresse, l adresse);
int socket; /* descripteur de la socket
13
*/
struct sockaddr *adresse; /*adresse socket
(port+adresse) */
int l adresse; /* longueur de la structure
adresse */
2. Les sockets
⇒ Primitives listen (TCP)
◦◦◦
Mise en écoute : indique que le ser-
veur peut attendre au maximum qlen
requêtes des clients.
int listen (socket, qlen);
int socket; /* descripteur socket */
int qlen; /* nombre maximal de connexions
Primitive accept (TCP)
traitées */
⇒
int accept(socket, struct sockaddr *pin,
addrlen));
int socket; /* descripteur retourné par
la primitive socket */
struct sockaddr *adresse; /*initialisé
à vide et mis à jour par accept avec le
port et l'ad-
resse IP de la machine où se trouve le
client qui a fait un connect */
int l adresse;/*longueur de la structure
adresse*/
14
Primitives envoi & réception en mode
TCP
⇒
ssize t recv(
int descripteur,
void *ptr,
size t nb caracteres,
int option /* = 0, MSG PEEK pour consulter
sans extraire, MSG OOB pour lire une donnée
urgente (1 caractère) */
);
ssize t send(
int descripteur,
void *ptr,
size t nb caracteres,
int option /* =0 ou MSG OOB */
);
⇒ Primitive de réception en mode UDP
int recvfrom(
int descripteur,/* descriptor de la socket
*/
void * message, /* adresse de réception
*/
int longueur, /* taille zone réservée */
int option, /* 0 ou MSG PEEK */
struct sockaddr *ptr adresse,/*adr émetteur*/
int *ptr longueur adresse /* pointeur sur
long-
ueur zone adresse */
Primitive d'envoi en mode UDP
)
⇒
int sendto(
int descripteur,/*descripteur de la socket
*/
void * message, /* adresse à envoyer */
int longueur, /* longueur du message */
int option, /* 0*/
struct sockaddr *ptr adresse, /* adr dest
*/
int longueur adresse /*longueur adr dest
*/
Primitive close (TCP et UDP)
)
Fermeture de connexion
⇒
int close (socket)
int socket; /* descripteur de socket */
∼◦⃝◦∼
3. Remote Procedure Call (RPC)
a. Appel de procédure distante
◦◦◦
Appel de procédures locales : Appelant
et appelé dans le même espace virtuel :
même mode de pannes, appel et retour
able.
Appel de procédures distantes : Appe-
lant et appelé dans deux espaces vir-
tuels : mode de pannes indépendant, ré-
seau non able, temps de réponse.
Remote Procedure Call (RPC) ou
appel de procédure distante est une tech-
nique de communication inter-processus
utilisée pour les applications client-serveur.
Il est également appelé
ou .
appel de sous-
programme appel de fonction
15
3. Remote Procedure Call (RPC)
b. Fonctionnement
◦◦◦
⇒ Fonctions des talons (Stub et Skeleton)
• Talon client (Stub)
Représente le serveur sur le site client.
Reçoit l'appel local.
Emballe les paramètres.
Crée un identicateur unique pour
l'appel.
16
Exécute l'appel distant.
Met le proc. client en attente.
Reçoit et déballe les résultats.
Exécute le retour vers l'appelant (comme
retour local de procédure)
• Talon serveur (Skeleton)
Représente le client sur le site ser-
veur.
Reçoit l'appel sous forme de mes-
sage et déballe les paramètres.
Crée ou sélectionne un processus (ou
thread) et lui fait exécuter la procé-
dure.
Emballe les résultats et les transmet
à l'appelant.
⇒ Mise en ÷uvre de RPC
• Par migration : Le code et les données
de la procédure distante sont amenés
sur le site appelant pour y être exécutés
par un appel local habituel.
Par mémoire partagée : L'appel dis-
tant est réalisé en utilisant une mé-
•
moire virtuelle partagée répartie. La
procédure est installée pour le client comme
pour le serveur dans la mémoire parta-
gée répartie.
• Par messages asynchrones : Deux mes-
sages (au moins) échangés : requête et
réponse.
Par appel léger (lightweight RPC) :
la communication réseau est réalisée par
•
un segment de mémoire partagée entre
le client et le serveur qui contient un
tas pour les paramètres d'appel et de
réponse.
c. Désignation et liaison
Comment sont structurés les noms et
références permettant de désigner les
services distants?
Comment localiser une procédure dis-
tante?
3. Remote Procedure Call (RPC))
⇒ Désignation et liaison utilisant un annuaire
◦◦◦
1, 2 : le serveur s'enregistre auprès de
l'annuaire avec <nom, adr. serveur, n
•
port>
°
• 3, 4, 5 : le client consulte l'annuaire
pour trouver <adr. serveur, n port> à
partir de <nom>
°
⇒ Désign. et liaison utilisant le portmapper
Si le serveur est connu (cas fréquent) :
on peut utiliser un service de nommage
local au serveur, le portmapper.
17
Un service enregistre le n de port de
son veilleur auprès du portmapper et le
°
veilleur se met en attente sur ce port.
Le portmapper a un n de port xé par
convention (111).
°
d. Développement
Il existe trois façon de développer des pro-
grammes utilisant des RPC, utiliser :
⇒ Les fonctions de la couche intermé-
diaire
• Elle comporte peu de fonctions.
•Le programmeur
conguration du est limité
système. dans la
• le programmeur doit développer l'en-
codage et le décodage.
⇒ Fonctions de la couche basse
• C'est un ensemble complet de fonc-
tions.
• Son utilisation est beaucoup plus com-
plexe que la couche intermédiaire.
• À n'utiliser que lorsque le protocole
detemporisation
communication
de la et les
couche délais de
intermé-
diaire ne sont pas
⇒ Le compilateur rpcgen
satisfaisant.
∼◦⃝◦∼
4. CORBA (Common Object Request Broker
Architecture)
a. Introduction
◦◦◦
Problèmes & motivation
⇒ Problème : Intégration des applica-
tions, à cause de l'absence d'un consen-
sus pour l'interopérabilité. En eet :
Pas de consensus sur les : langages
de programmation, plate-formes de
développement, systèmes d'exploita-
tion, protocoles réseau, formats des
données.
⇒ Tirer parti des bonnes propriétés de
l'objet (encapsulation, modularité, réuti-
lisation, polymorphisme, etc.).
Objects Management Group (OMG)
⇒ Consortium international créé en 1989.
⇒ Qui regroupe plus de 800 membres :
constructeurs(SUN,HP,DEC,IBM,etc.),
environnements systèmes (Microsoft,Novell,
18
outils et langages (Iona,Object De-
sign,Borland,etc.), produits et BD
(Lotus,Oracle,Informix,etc.), indus-
triels (Boeing,Alcatel,Thomson,etc.)
⇒ Sa mission est de promouvoir la tech-
nologie orientée objet dans les sys-
tèmes informatiques distribués.
⇒ Fournir une architecture de base pour
l'intégration d'applications distribuées
tout en garantissant la réutilisabi-
lité, l'intéropérabilité et la portabi-
lité. La gure suivante illustre l'his-
torique du OMG.
b. CORBA : principes généraux
Met en ÷uvre le modèle client-serveur.
Introduit une entité intermédiaire : l'agent
(broker)
• isole les clients des serveurs.
• un client peut interagir avec un ser-
veur sans connaître ni son adresse,
ni la manière dont il fonctionne.
Principe de fonctionnement
• le client demande à l'agent l'exécu-
tion d'un service (demande d'exécu-
tion d'une méthode sur un objet)
l'agent identie un serveur capable
de fournir le service.
•
l'agent transmet la requête au ser-
veur.
Caratéristiques
• Isolation des clients et des ser-
veurs
ils n'ont pas à se connaître mu-
tuellement.
permet d'ajouter de nouveaux clients
et de nouveaux serveurs sans mo-
dier l'existant.
seul l'agent intermédiaire connaît
l'adresse et les possibilités de cha-
cun.
• Communications synchrones ou
asynchrones
Client/serveur très dynamique :
la même portion de code peut appa-
•
raître comme client dans un échange
et comme serveur dans un autre échange.
Objects Management Architecture (OMA)
⇒ Il s'agit d'un modèle dénissant la
façon de décrire des objets distri-
bués dans des environnements hé-
térogènes.
⇒ Fournir un environnement de déve-
loppement et d'exécution d'applica-
tions réparties portable, cela indé-
paendamment des langages de pro-
grammation et des protocoles de com-
munication.
L'Object Request Broker (ORB ou
agent) : Composant central du stan-
◦
dard CORBA qui gère : la location
d'objet, la désignation des objets,
l'empaquetage des paramètres (mar-
shalling), le dépaquetage des para-
mètres (unmarshalling), l'invocation
des méthodes, la gestion des excep-
tions.
◦ Les services objets (CorbaServices)
services spéciques à la manipu-
lation d'objets : désignation d'ob-
jets, cycle de vie, transactionnel,
notication d'événements, sécu-
rité, accès multiple, relationnel,
gestion des licences d'objets.
dénis dans la Common Object
Services Specication (COSS).
◦ Les services d'application (CorbaFa-
cilities) : ensemble de facilités de
haut niveau pour les applications telles
que : accès aux bases de données,
services d'impression, synchronisation.
◦ Les objets d'applications : bibliothèques
d'objets permettant d'accélérer le dé-
veloppement logiciel.
4. CORBA (Common Object Request Broker
Architecture)
c. OMG Interface Description Language (IDL)
◦◦◦
⇒ Ce langage a été déni :
• pour décrire les interfaces des ob-
jets.
• comme langage pivot entre applica-
tions.
• pour générer des squelettes de pro-
gramme dans les langages de pro-
grammation des applications.
• indépendant de tout langage de pro-
grammation ou compilateur.
• la correspondance IDL langage de
programmation est fournie pour les
langages C, C++, Java, Smalltalk,
Ada, Cobol.
• Interface : ensemble d'opérations
et de types ⇐⇒ classe C++
19
Denitions :
la fa-
⇒
• Modèle abstrait d'objets :
çon de décrire des objets distribués.
• Client : Entité capable d'émettre
des requêtes vers des objets qui four-
nissent des services.
• Référence objet : Objet manipulé
par le client pour invoquer des ser-
vices sur un objet distant : objet im-
plémentation.
• objet implémentation : Objet si-
tué sur le serveur qui implémente le
code des méthodes des opérations
dénies en IDL.
• Requête : Emise par un client pour
demander l'exécution d'une opéra-
tion sur un objet cible. La requête
contient l'opération à exécuter, l'ob-
jet cible et les paramètres éventuels.
• Interface : Description d'un ensemble
d'opérations disponibles sur un ob-
jet. Spécication des interfaces en
IDL.
Opération : Entité identiable ca-
ractérisée par une signature décri-
•
vant les paramètres de la requête et
les valeurs de retour.
• Une signature d'une opération contient :
le nom de l'opération.
les paramètres (nom formel, type,
mode de passage)
type du résultat
cas d'erreurs ou exceptions
• ORB : Object Request Broker :
Middleware qui gère les relations client/serve
entre les objets.
• Middleware (Courtier d'objets) :
intermédiaire ou ensemble de logi-
ciels nécessaires pour permettre la
communication entre client et ser-
veur.
• ORB composant central de CO-
BRA qui gère :
la location et la désignation des
objets.
l'empaquetage (marshalling) et
le dépaquetage (unmarshalling)
des paramètres.
l'invocation des méthodes et la
gestion des exceptions.
⇒ Une application = des objets CORBA :
• décrits par des interfaces OMG IDL.
• dialoguant via le bus CORBA.
⇒ Presentation de IDL : un exemple
5. RMI (Remote Method Invocation)
a. .........
◦◦◦
20
6. JAVA EE
a. .........
◦◦◦
21
Références
◦◦◦
22