Cours 4: Communication Flashcards
Quels sont les modeles de communication?
- Sans connexion (UDP):
• Send ([destinataire], message);
• Receive ([´emetteur], file de stockage); - Avec connexion (TCP):
• Connect (destinataire, ´emetteur);
• Read, Write…
• Disconnect (identificateur de connexion);
Definir les communications synchrones et asynchrones.
• Le send et receive sont bloquants; les processus se
synchronisent a chaque message. Send attend l’accuse de reception!?!
• Le send est non-bloquant, si la file du systeme d’exploitation n’est pas pleine, tandis que receive est generalement bloquant. Si les paquets arrivent trop vite et la file du systeme d’exploitation est pleine, un message de ralentir est envoye et les paquets en surplus peuvent etre ignores.
• Le receive aussi est non-bloquant, le processus verifie de temps en temps, peut demander un signal, ou utilise un appel systeme de type select ou epoll.
Quel est l’avantage d’un bus de communication?
Avec un bus, on peut envoyer un message a n destinataires sur le bus en 1 unite de temps au lieu de n unites de temps pour des messages separes.
Definir messages de groupe par multidiffusion.
• Tolerance aux fautes basees sur des services repliques sur plusieurs serveurs.
• Amelioration des performances par des services et donnees repliques sur plusieurs serveurs.
• Decouvertes de services dans un environnement de reseautage spontane.
• Economie de bande passante par multidiffusion des
notifications d’evenements, video ou fichiers identiques
demandes par de nombreux clients.
Definir messages de groupe.
- Envoi d’un message aux membres d’un groupe.
- Sur reception, le message est remis au processus destinataire.
- Communication non fiable, un seul message UDP est envoye, par exemple pour annoncer une adresse Ethernet versus IP.
- Communication fiable, avec chaque message livre au moins une fois (valide) ou au plus une fois (integre)
- Communication atomique, livre a tous ou a aucun.
- Communication ordonnancee: totalement, causalement, par origine.
Definir message de groupe atomiques
- Tous le recoivent ou personne ne le recoit.
- Envoi a tous du message non-confirme et demande d’accuse de reception. Retransmission au besoin si l’accuse de reception ne vient pas.
- Si tous ont recu, message de confirmation pour rendre le message maintenant confirme disponible aux applications.
- Si des accuses de reception manquent apres un certain temps, annuler le message.
- Si un client ne recoit pas de confirmation, il demande l’etat a l’envoyeur puis au besoin verifie avec un autre ordinateur qui peut prendre la releve.
Definir message de groupe totalement ordonnances.
• Chaque message a un numero de sequence unique, par exemple fourni par un processus sequenceur.
• Chaque recipiendaire attend d’avoir recu les messages
precedents avant de livrer un message a ses applications.
• Un recipiendaire peut devoir laisser tomber des messages plus recents s’il en a trop en attente.
• Un envoyeur peut bloquer s’il a trop de messages en attente d’accuses de reception.
Definir les messages de groupe causalement ordonnances.
• Les messages en provenance d’un meme ordinateur arrivent dans leur ordre d’envoi a chaque recipiendaire: numero de sequence propre a chaque membre du groupe qui envoie des messages.
• Les messages recus en provenance de plus d’un ordinateur arrivent en ordre causal: chaque processus maintient un vecteur de numeros de sequence de messages de groupe vus venant de chaque processus. Un message avec un certain vecteur n’est pas delivre avant que tous les messages de chaque processus n’aient ete recus, jusqu’au numero dans le
vecteur pour ce processus.
Definir language de definition des interfaces.
• Declaration des procedures (nom, et liste et type des
arguments).
• Declaration des types et des exceptions.
• Generateur de code a partir du IDL pour la librairie client (proxy), et la librairie serveur (squelette), dans le langage de programmation desire.
• Le IDL et le generateur de code ne sont pas requis si la
reflexivite permet d’obtenir cette information a l’execution
Definir la semantique des appels.
• Mecanismes: envoi simple, accuse de reception,
retransmission, filtrage des requetes dupliquees, memorisation des reponses.
• Peut-etre: en l’absence de reponse on ne peut savoir si la requete ou la reponse fut perdue.
• Au moins une fois: retransmission sans filtrage des requetes jusqu’a obtention d’une premiere reponse.
• Au plus une fois: avec retransmission, filtrage des requetes, et memorisation du resultat, la procedure est executee exactement une fois si une reponse est obtenue et au plus une fois en l’absence de reponse.
Definir sun rpc.
• Definition d’interface et de types en XDR.
• Procedures avec un argument (entree), une valeur de retour (sortie), et possiblement un numero de version.
• rpcgen produit la librairie client (proxy/client stub) et le
squelette (server stub) du programme serveur.
• Completer le squelette du serveur avec l’implantation.
• Initialiser la connection dans le client et utiliser les fonctions proxy en verifiant les erreurs.
• Le DNS effectue la localisation du serveur.
• Portmap effectue la localisation du service.
• Les appels sans valeur de retour peuvent etre accumules et envoyes d’un coup pour plus de performance.
• Authentification.
• Semantique au moins une fois.
• Sur UDP, chaque requete ou reponse est limitee a 8Koctets.
Definir l’appel de methodes a distance.
• Modele objet: references aux objets, interfaces, methodes, exceptions, ramasse-miettes.
• Proxy: se presente comme un objet local, ses methodes serialisent les arguments, transmettent la requete au module de communication et retournent la reponse recue.
• Repartiteur: recoit les requetes dans le serveur et les
communique au squelette correspondant.
• Squelette: recoit les requetes pour un type d’objet, deserialise les arguments, appelle la methode correspondante de l’objet reference et serialise la reponse a retourner.
• Module de communication: envoi de requete client (type, numero de requete, reference a un objet, numero de methode, arguments), la requete recue par le serveur est envoyee au repartiteur et la reponse est retournee
Definir le module de references au reseau.
• Table des objets importes (pour chaque objet distant utilise, adresse reseau et adresse du proxy local correspondant),
• Table des objets exportes (pour chaque objet utilise a
l’exterieur, adresse reseau et adresse locale).
• Lorsqu’une reference reseau est recue, son proxy ou objet local est trouve ou un nouveau proxy est cree et une entree ajoutee dans la table.
• Lorsqu’un objet reseau local est passe en argument, son adresse reseau le remplace et il doit se trouver dans la table des objets exportes.
Definir les modules par reference reseau.
• Table des objets importes (pour chaque objet distant utilise, adresse reseau et adresse du proxy local correspondant),
• Table des objets exportes (pour chaque objet utilise a
l’exterieur, adresse reseau et adresse locale).
• Lorsqu’une reference reseau est recue, son proxy ou objet local est trouve ou un nouveau proxy est cree et une entree ajoutee dans la table.
• Lorsqu’un objet reseau local est passe en argument, son adresse reseau le remplace et il doit se trouver dans la table des objets exportes.
Definir les services pour appel de methodes distantes.
• Service de nom: permet d’obtenir une r´ef´erence objet r´eseau `a
partir d’un identificateur/nom.
• Contextes d’ex´ecution: le serveur peut cr´eer un fil d’ex´ecution
pour chaque requˆete.
• Activation des objets: le serveur peut ˆetre d´emarr´e
automatiquement lorsqu’une requˆete pour un objet apparaˆıt
(message augmentation de salaire pour le budget qui est
stock´e sur disque dans un fichier de chiffrier).
• Stockage des objets persistents.
• Service de localisation.