Architecture Client/Serveur



Documents pareils
OS Réseaux et Programmation Système - C5

Introduction à la Programmation Parallèle: MPI

18 TCP Les protocoles de domaines d applications

Le modèle client-serveur

Présentation du modèle OSI(Open Systems Interconnection)

1. Fonctionnement de l Internet 2. Protocoles applicatifs 3. Programmation réseau

Introduction. Adresses

Plan du cours. Autres modèles pour les applications réparties Introduction. Mode de travail. Introduction

Cisco Certified Network Associate

Internets. Informatique de l Internet: le(s) Internet(s) Composantes de l internet R3LR RENATER

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Programmation Réseau. ! UFR Informatique ! Jean-Baptiste.Yunes@univ-paris-diderot.fr

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

L3 informatique Réseaux : Configuration d une interface réseau

Services OSI. if G.Beuchot. Services Application Services Présentation - Session Services Transport - Réseaux - Liaison de Données - Physique

Applications client/serveur TCP/IP - Sockets Rappels. C.Crochepeyre Applications CS 1

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

DUT Informatique Module Système S4 C Département Informatique 2009 / Travaux Pratiques n o 5 : Sockets Stream

Programmation client-serveur sockets - RPC

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

II/ Le modèle OSI II.1/ Présentation du modèle OSI(Open Systems Interconnection)

Services Réseaux - Couche Application. TODARO Cédric

DNS ( DOMAIN NAME SYSTEM)

Cours de sécurité. Pare-feux ( Firewalls ) Gérard Florin -CNAM - - Laboratoire CEDRIC -

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

CORBA haute performance

Mise en œuvre des serveurs d application

Configuration automatique

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Cours CCNA 1. Exercices

Cours des réseaux Informatiques ( )

Le service FTP. M.BOUABID, Page 1 sur 5

Computer Networking: A Top Down Approach Featuring the Internet, 2 nd edition. Jim Kurose, Keith Ross Addison-Wesley, July ENPC.

NOTIONS DE RESEAUX INFORMATIQUES

M1 Informatique, Réseaux Cours 9 : Réseaux pour le multimédia

Sécurisation du réseau

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Couche application. La couche application est la plus élevée du modèle de référence.

2. MAQUETTAGE DES SOLUTIONS CONSTRUCTIVES. 2.2 Architecture fonctionnelle d un système communicant.

Plan. École Supérieure d Économie Électronique. Plan. Chap 9: Composants et systèmes de sécurité. Rhouma Rhouma. 21 Juillet 2014

UDP/TCP - Protocoles transport

L annuaire et le Service DNS

La VOIP :Les protocoles H.323 et SIP

Remote Method Invocation (RMI)

NiceLabel pour Services Microsoft Windows Terminal Serveur et Citrix MetaFrame

Algorithmique des Systèmes Répartis Protocoles de Communications

WEA Un Gérant d'objets Persistants pour des environnements distribués

NFP111 Systèmes et Applications Réparties

TP Réseau n 4 Common Internet File System (CIFS) et Network File System (NFS)

Le Network File System de Sun (NFS)

Cahier des charges. driver WIFI pour chipset Ralink RT2571W. sur hardware ARM7

as Architecture des Systèmes d Information

PROGRAMME DU CONCOURS DE RÉDACTEUR INFORMATICIEN

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Couche Transport TCP et UDP

Ch2 La modélisation théorique du réseau : OSI Dernière maj : jeudi 12 juillet 2007

Exécutif temps réel Pierre-Yves Duval (cppm)

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Capture, Filtrage et Analyse de trames ETHERNET avec le logiciel Wireshark. Etape 1 : Lancement des machines virtuelles VMWARE et de Wireshark

Serveurs de noms Protocoles HTTP et FTP

Intérêt du NAT (Network Address Translation) Administration Réseau Niveau routage. Exemple d Intranet. Principe NAT

TP redondance DHCP. Gillard Frédéric Page 1/17. Vue d ensemble du basculement DHCP

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

Résolution de noms. Résolution de noms

1.Introduction - Modèle en couches - OSI TCP/IP

CORBA. (Common Request Broker Architecture)

Chapitre 1: Introduction générale

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Supervision de réseau

Installation et configuration d un serveur DHCP (Windows server 2008 R2)

Java et les bases de données

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

NFS Maestro 8.0. Nouvelles fonctionnalités

Plan. Programmation Internet Cours 3. Organismes de standardisation

Protocoles réseaux. Abréviation de Binary Digit. C'est la plus petite unité d'information (0, 1).

Chapitre VI- La validation de la composition.

Manuel du client de bureau distant de KDE

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Programmation système I Les entrées/sorties

Systèmes et Réseaux (ASR 2) - Notes de cours Cours 14

Network musical jammin

Chapitre I. La couche réseau. 1. Couche réseau 1. Historique de l Internet

Le modèle client-serveur

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

UE Programmation Impérative Licence 2ème Année

<Insert Picture Here> Solaris pour la base de donnés Oracle

Devoir Surveillé de Sécurité des Réseaux

RMI le langage Java XII-1 JMF

INTERSYSTEMS CACHÉ COMME ALTERNATIVE AUX BASES DE DONNÉES RÉSIDENTES EN MÉMOIRE

Chap.9: SNMP: Simple Network Management Protocol

Surveiller et contrôler vos applications à travers le Web

SIP. Plan. Introduction Architecture SIP Messages SIP Exemples d établissement de session Enregistrement

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

La couche réseau Le protocole X.25

Architectures Client-Serveur

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

Cisco Certified Network Associate

VoIP et "NAT" VoIP et "NAT" 1/ La Traduction d'adresse réseau. 1/ La traduction d'adresse réseau. 1/ La traduction d'adresse réseau

Transcription:

Architecture Client/Serveur Ce cours est la propriété de la société CentralWeb. Il peut être utilisé et diffusé librement à des fins non commerciales uniquement. CentralWeb 11, Rue de Vanves - 92100 BOULOGNE-BILLANCOURT Tel : +33 01.46.10.36.36 Fax: +33 01.49.10.00.29 info@centralweb.fr / www.centralweb.fr CentralWeb - 1998 1

Plan INTRODUCTION LE MODELE LE MIDDLEWARE LA CONCEPTION LES SOCKETS l l abstraction l les primitives l la structure d adressage l les serveurs multi-protocoles l les serveus multi-services LES RPC LE MODELE RPC PROCEDURES DISTANTES PROCEDURES LOCALES LES APPORTS DE SUN LE PROGRAMME DISTANT XDR LES MESSAGES RPC RPCGEN CentralWeb - 1998 2

Introduction L architecture Client/Serveur est l aboutissement d un ensemble d évolutions technologiques survenues dans les dix dernières années: l capacités mémoires, l performances des processeurs et des réseaux, l évolutions des logiciels : interfaces graphiques, multimédia, des interfaces de communications. L intérêt du modèle = les fonctionnalités nouvelles de l informatique distribuée: l applications peer to peer en opposition aux systèmes monolithiques M/E. l aspect économique: applications client/serveur avec les ordinateurs personnels, l ==> puissance locale disponible. l ==> «downsizing» ou «rightsizing» (stations ou PC serveurs de données) dont les prix d achat et de maintenance sont très bas. adapté à l organisation des sociétés modernes l ==> structurées en entités de moindre taille ( filialisations, B.U, etc.) l ==> nouveaux besoins de communication (applications distribuées). CentralWeb - 1998 3

Introduction (suite) Architecture d abord utilisée dans les systèmes «Time Sharing» S étend de plus en plus vers tous les domaines d activités : l gestion de base de données, l les systèmes transactionnels, l les systèmes de messagerie, Web, Intranet, l les systèmes de partage des données, l le calcul scientifique l etc. Les freins l difficulté de concevoir des applications distribuées, l manque de cohérence entre les applications clientes et serveurs, l manque d outils d administration des serveurs au niveau des services et des réseaux. l réticences des responsables pour des raisons de sécurité, de dispersion des données jugées sensibles, l incompatibilité avec les systèmes existants. CentralWeb - 1998 4

Le Modèle Repose sur une communication d égal à égal entre les applications. Communication réalisée par dialogue entre processus deux à deux. Un processus est le client, l autre le serveur; les processus ne sont pas identiques mais forment plutôt un système coopératif. Le résultat de cette coopération se traduit par un échange de données, le client réceptionne les résultats finaux délivrés par le serveur. Le client initie l échange, le serveur est à l écoute d une requête cliente éventuelle. Client Application Dialogue Serveur Service Le service rendu = traitement effectué par le serveur, modèle client/serveur ==> répartition des services plutôt que l application elle-même. CentralWeb - 1998 5

Le modèle (suite) Un service réparti est typiquement un service nécessitant beaucoup de ressources machine (CPU, mémoire résidente, mémoire secondaire, etc) ==> le service est exécuté sur une machine spécialisée appelée serveur. Le modèle client/serveur constitue un système coopératif sans distinction à priori entre les différents membres du réseau, ==> chacun des membres : l peut être indifféremment client et/ou serveur, l demander un service auprès d un autre membre, l réaliser un service donné pour un ou plusieurs autres membres du réseau. CentralWeb - 1998 6

Le Middleware Complément de services du réseau permettant la réalisation du dialogue client/serveur : l prend en compte les requêtes de l application cliente, l les transmet de manière transparente à travers le réseau jusqu au serveur, l prend en compte les données résultat du serveur vers l application. Application Serveur Middleware Réseau L objectif essentiel du middleware est d offrir aux applications une interface unifiée permettant l accès à l ensemble des services disponibles sur le réseau: l API API du middleware = ciment entre les protocoles du réseau et les applications. CentralWeb - 1998 7

Le middleware (suite) Couche dite FAP (Format and Protocols) se superpose aux couches constitutives du réseau: réalise la synchronisation du dialogue entre client et serveur, définit le format des données échangés, fait le lien avec la couche transport. Selon le modèle OSI, la couche FAP s identifie aux couches session et présentation Application Présentation Session Transport Réseau Liaison Physique Api FAP FAP Ex: TCP Ex: IP Ex: Ethernet Ex 10Base5 CentralWeb - 1998 8

La Conception But : structurer les applications en clients et serveurs. Une application informatique est représentée selon un modèle en trois couches: l la couche présentation (interface Homme/Machine): l gestion de l affichage (exemple Windows, X-windows, etc.), l logique de l affichage, partie intrinsèque de l applicatif qui transmet à la gestion de l affichage, les éléments de présentation. l la couche traitements qui constitue la fonctionnalité intrinsèque de l application : l la logique des traitements : l ossature algorithmique de l application, l la gestion des traitements déclenchés par la logique de traitements qui réalise la manipulation des données de l applicatif (ex: procédures SQL). CentralWeb - 1998 9

La Conception (suite) l la couche données qui assure la gestion des données applicatives: l la logique des données constituant les règles régissant les objets de la base de données, l la gestion des données (consultation et mise à jour des enregistrements). Un système de type SGBDR, habituellement, est responsable de cette tâche. Le découpage permet de structurer une application en mode client/serveur; exemple: le module de gestion des données peut être hébergé par un serveur distant, le module de gestion de l affichage peut également être géré par un serveur distant (un Terminal X par exemple). CentralWeb - 1998 10

La conception (suite) Le mode de communication mode non-connecté, l arrivée des données + ordonnancement + non duplication ne sont pas garantis par le protocole; ==> à gérer par l application. l approche non-connecté implique généralement une connexion synchrone; Client Réseau Serveur programme message d appel prise en compte de la requête Réveil du serveur réception du résultat Exécution requête message réponse poursuite du traitement CentralWeb - 1998 11

La conception (suite) le mode connecté implique une diminution des performances par rapport au mode non connecté: ceci est une contrainte pour certaines applications. le mode connecté permet une implémentation asynchrone des échanges, plus complexe mais plus performantes que le mode nonconnecté. CentralWeb - 1998 12

La conception (connexion) Client Réseau Serveur demande de connexion Emission de requêts Reception de résultats Synchronistation Emission de requêts Reception de résultats Synchronistation message de connexion prise en compte de la connexion Création d un contexte Execution des requêtes et gestion de la synchronisation demande de deconnexion message de deconnexion prise en compte de la deconnexion Libération du contexte CentralWeb - 1998 13

La conception : architecture cliente Une application cliente est moins complexe que son homologue serveur car: l la plupart des applications clientes ne gèrent pas d intéractions avec plusieurs serveurs, l la plupart des applications clientes sont traitées comme un processus conventionnel; au contraire, un serveur nécessite des accès privilégiés de connexion au middleware. l la plupart des applications clientes ne nécessitent pas de protection supplémentaires, le système d exploitation assurant les protections élémentaires suffisantes. CentralWeb - 1998 14

Conception : architecture serveur Processus serveur: l Offre une connexion sur le réseau, l Entre indéfiniment dans un processus d attente de requêtes clientes, l Lorsqu une requête arrive, le serveur déclenche les processus associés à cette requête, puis émet la ou les réponses vers le client. l Problème : gérer plusieurs client simultanément. l Les types de serveurs u serveurs itératifs: ne gérent qu un seul client à la fois u serveurs paralléles : fonctionnent «en mode concurrent». CentralWeb - 1998 15

Conception : architecture serveur les serveurs itératifs en mode non-connecté: l offrent une interface de communication sur le réseau en mode nonconnecté, l indéfiniment : réceptionnent une requête client, formulent une réponse, et renvoient le message réponse vers le client selon le protocole applicatif défini. les serveurs itératifs en mode connecté: l offrent une connexion sur le réseau en mode connecté, l (*) réceptionnent une connexion client, l offrent une nouvelle connexion sur le réseau, l répétitivement : réceptionnent une requête pour cette connexion, formulent une réponse, et renvoient le message réponse vers le client, l lorsque le traitement pour ce client est terminé -->(*). CentralWeb - 1998 16

Conception : architecture serveur les serveurs paralèlles en mode non-connecté: l offrent une interface de communication en mode non-connecté, l répétitivement : réceptionnent la requête client; offrent une nouvelle interface de communication sur le réseau, et créent un processus secondaire (PR. S.) chargé de traiter la requête courante. l (PR. S.) : formule une réponse à la requête client, et renvoient le message, l (PR. S.) : lorsque le traitement est terminé, libére la communication, Exit. CentralWeb - 1998 17

Conception : architecture serveur les serveurs concurrents en mode connecté: l offrent une connexion sur le réseau en mode connecté, l répétitivement : réceptionnent une connexion client, offrent une nouvelle connexion sur le réseau, créent un PR. S. chargé de traiter la connexion courante. l (PR. S.) : répétitivement : réceptionne une requête pour cette connexion, formule une réponse, et renvoit le message réponse vers le client selon le protocole applicatif défini, l (PR. S.) : lorsque le traitement est terminé (propre au protocole applicatif), libère la connexion, Exit. CentralWeb - 1998 18

Conception : architecture serveur Quel type de serveur utiliser? serveurs itératifs en mode non-connecté : services qui nécessitent très peu de traitement par requête (pas de concurrence). Exemple: serveur TIME serveurs itératifs en mode connecté : services qui nécessitent très peu de traitement par requête mais requièrent un transport fiable de type TCP. Peu utilisé. serveurs concurrents en mode non-connecté : pas utilisé sauf si : l temps de création d un processus extrêmement faible (dépend du système d exploitation hôte) par rapport au temps de traitement d une requête, l les requêtes nécessitent des accès périphériques importants (dans ce cas, la solution itérative est, en effet, inacceptable). CentralWeb - 1998 19

Conception : architecture serveur serveurs concurrents en mode connecté : offre un transport fiable et est capable de gérer plusieurs requêtes de différents clients simultanément; implémentation: l multi instanciation de processus avec un processus primaire et des processus secondaires traitant les connexions clientes, l avec un seul processus gérant les multiples connexions par l intermédiaire de requêtes asynchrones et primitive d attente d évènements multiples. CentralWeb - 1998 20

Les sockets Les sockets : interface client/serveur utilisée à l origine dans le monde UNIX et TCP/IP. Etendue aujourd hui du micro (Cf Winsock) au Mainframe. fournit les primitives pour le support des communications reposant sur toute suite de protocoles; les protocoles TCP/IP sont à l origine des développements. Les applicativions cliente et serveur ne voient les couches de communication qu à travers l API socket (abstraction): CentralWeb - 1998 21

Les sockets Application cliente Protocole Applicatif Application : serveur API Socket API Socket UDP TCP UDP TCP IP IP Physique Physique CentralWeb - 1998 22

Sockets : l abstraction comme un descripteur de fichier dans le système UNIX, associe un descripteur à un socket; le concepteur d application utilise ce descripteur pour référencer la communication client/serveur sous-jacente. une structure de données «socket» est créée à l ouverture de socket; Table de descripteurs de processus table de descripteur de fichiers Family: Service: Local IP: Remote IP: Local Port: Remote Port: Structure Socket La primitive socket permet l ouverture de cette socket; initialement, après l appel à cette fonction, la structure de données associée au socket est principalement vide, les appels à d autres primitives de l interface socket renseigneront ces champs vides. CentralWeb - 1998 23

Les Sockets : primitives Elles permettent d établir un lien de communication en mode connecté ou non-connecté sur un réseau, Structurent une application l soit en mode client, l soit en mode serveur, Permettent d échanger des données entre ces applications. La primitive socket: l point d encrage qui permet à l application d obtenir un lien de communication vers la suite de protocole qui servira d échange, l définit le mode de communication utilisé (connecté ou non-connecté). La primitive bind: permet de spécifier le point de terminaison local (essentiellement le port TCP/UDP dans l environnement TCP/IP). la primitive connect: l permet à un client d établir une communication active avec un serveur, l le point de terminaison distant (adresse IP + port TCP/UDP dans l environnement TCP/IP) est spécifié lors de cet appel. CentralWeb - 1998 24

la primitive listen : Les Sockets : primitives l permet à un serveur d entrer dans un mode d écoute de communication, l dés lors le serveur est «connectable» par un client, l le processus est bloqué jusqu à l arrivée d une communication entrante. la primitive accept : l permet à un serveur de recevoir la communication entrante (client), l crée un nouveau socket et retourne le descripteur associé à l application. l le serveur utilise ce descripteur pour gérer la communication entrante l le serveur utilise le descripteur de socket précédent pour traiter la prochaine communication à venir. les primitives read et write: l Lorsque la communication est établie, client et serveur échangent des données afin d obtenir (client) et transmettre (serveur) le service désiré. l En mode connecté, clients et serveurs utilisent read et write; en mode nonconnecté, ils utilisent les primitives recvfrom et sendto. la primitive close : termine la connexion et libère le socket associé. CentralWeb - 1998 25

Les Sockets : Mode connecté SERVEUR MODE CONNECTE CLIENT socket bind En mode connecté il y a établissement (listen,connect, accept) puis libération (close) d une connexion entre le cleint et le serveur. listen accept read write close connexion requête réponse socket connect write read close CentralWeb - 1998 26

Les Sockets : Mode non connecté SERVEUR MODE NON CONNECTE CLIENT socket socket bind requête sendto recvfrom sendto réponse close CentralWeb - 1998 27

Socket : Mode non connecté En mode non-connecté: le client n établit pas de connexion avec le serveur mais émet un datagramme (sendto) vers le serveur. Le serveur n accepte pas de connexion, mais attend un datagramme d un client par recvfrom qui transmet le datagramme à l application ainsi que l adresse client. Les sockets en mode non-connecté peuvent utiliser la primitive connect pour associer un socket à une destination précise. ==> send peut être utilisée à la place de la sendto, De même, si l adresse de l émetteur d un datagramme n intéresse pas un processus la primitive recv peut être utilisée à la place de la primitive recvfrom. CentralWeb - 1998 28

Socket : exemple de serveur itératif int sockfd, newsockfd ; if ( ( sockfd = socket (...)) < 0 ) err_sys(«erreur de socket«) ; if ( bind ( sockfd,...) < 0 ) err_sys («erreur de bind») if ( listen ( sockfd, 5) < 0 ) ; err_sys («erreur de listen» ) ; for ( ; ; ) { newsockfd = accept ( sockfd,...) ; if ( newsockfd < 0) err_sys( «erreur de accept») ; } execute_la_demande( newsockfd ) ; close ( newsockfd ) ; CentralWeb - 1998 29

Socket : exemple de serveur parallèle int sockfd, newsockfd ; if ( ( sockfd = socket (...)) < 0 ) err_sys(«erreur de socket«) ; if ( bind ( sockfd,...) < 0 ) err_sys («erreur de bind») if ( listen ( sockfd, 5) < 0 ) ; err_sys («erreur de listen» ) ; for ( ; ; ) { newsockfd = accept ( sockfd,...) ; if ( newsockfd < 0) err_sys( «erreur de accept») ; if ( fork() == 0 ) { close ( sockfd ) ; execute_la_demande( newsockfd ) ; exit (1) ; } close ( newsockfd ) ; } CentralWeb - 1998 30

Sockets : gestion de noms Les primitives gethostname et sethostname l Dans le monde UNIX, la primitive gethostname permet aux processus utilisateurs d accéder au nom de la machine locale. l D autre part, la primitive sethostname permet à des processus privilégiés de définir le nom de la machine locale. La primitive getpeername l Cette primitive est utilisée afin de connaître le point de terminaison du distant. l Habituellement, un client connaît le point de terminaison (couple port/adresse IP) puisqu il se connecte à ce serveur distant; cependant, un serveur qui utilise la primitive accept pour obtenir une connexion, a la possibilité d interroger le socket afin de déterminer l adresse du distant. La primitive getsockname l Cette primitive rend le nom associé au socket qui est spécifié en paramètre. CentralWeb - 1998 31

Sockets : gestion de noms Lorsque ces fonctions sont exécutées sur des machines ayant accès à un serveur de noms de domaines, elles fonctionnent elles-mêmes en mode client/serveur en émettant une requête vers le serveur de nom de domaines et attendent la réponse. Lorsqu elles sont utilisées sur des machines qui n ont pas accès à un serveur de noms, elles obtiennent les informations à partir d une base de données ( simple fichier) locale. gethostbyname spécifie un nom de domaine et retourne un pointeur vers une structure hostent qui contient les informations propres à ce nom de domaine. gethostbyaddr permet d obtenir les mêmes informations à partir de l adresse spécifiée. getnetbyname spécifie un nom de réseau et retourne une structure netent renseignant les caractéristiques du réseau. getnetbyaddr spécifie une adresse réseau et renseigne la structure netent CentralWeb - 1998 32

Sockets : fonctions de service Les fonctions getprotobyname et getprotobynumber l Dans la base de données des protocoles disponibles sur la machine, chaque protocole a un nom officiel, des alias officiels et un numéro de protocole officiel. l La fonction getprotobyname permet d obtenir des informations sur un protocole donné en spécifiant son nom; renseigne la structure protoent. l La fonction getprotobynumber permet d obtenir les mêmes informations en spécifiant le numéro de protocole. La fonction getservbyname l Certains numéros de ports sont réservés pour les services s exécutant audessus des protocoles TCP et UDP. l getservbyname retourne les informations relatives à un service donné en spécifiant le numéro du port et le protocole utilisé; renseigne la structure servent. CentralWeb - 1998 33

Sockets : Byte ordering TCP/IP spécifie une représentation normalisée pour les entiers utilisés dans les protocoles. Cette représentation, appelée network byte order, représente les entiers avec le MSB en premier. Une application doit renseigner certaines informations du protocole et par conséquent, doit respecter le network informations byte order; Exemple le numéro de port. Pour que les applications fonctionnent correctement, elles doivent translater la représentation des données de la machine locale vers le network byte order : l htonl : host to network long : convertit une valeur sur 32 bits de la représentation machine vers la représentation réseau. l htons : host to network short : convertit une valeur sur 16 bits de la représentation machine vers la représentation réseau. l ntohl : network to host long : convertit une valeur sur 32 bits de la représentation réseau vers la représentation machine. l ntohs : network to host short : convertit une valeur sur 16 bits de la représentation réseau vers la représentation machine. CentralWeb - 1998 34

Sockets : les options Une application peut contrôler certains aspects du fonctionnement des sockets: l configurer les valeurs des temporisations, l l allocation de la mémoire tampon, l vérifier si le socket autorise la diffusion ou la gestion des données hors bande. La primitive getsockopt Permet à une application d obtenir les informations relatives au socket. Le système d exploitation exploite les structures de données internes relatives au socket et renseigne l application appelante. CentralWeb - 1998 35

Sockets : les options level optname get set Description flag type de données IPPROTO_IP IP_OPTIONS option de l entête IP IPPROTO_TCP TCP_MAXSEG donne la taille max d un segment tcp int TCP_NODELAY ne pas retarder l envoi pour grouper int des paquets SOL_SOCKET SO_DEBUG permet des infos de debugging int SO_DONTROUTE utilise uniquement les adresses int d interface SO_ERROR rend le status de l erreur int SO_LINGER contrôle de l envoi des données après close struct linger SO_OOBINLINE concerne la réception de données int hors bande SO_RCVBUF taille du buffer de réception int SO_SNDBUF taille du buffer d envoi int SO_RCVTIMEO timeout de réception int SO_SNDTIMEO timeout d emission int SO_REUSEADDR autorise la réutilisabilité de l adresse int locale SO_TYPE fournit le type de socket int CentralWeb - 1998 36

Sockets : serveur multi-protocoles Certains serveurs offrent leurs services sur plusieurs protocoles simultanément afin de satisfaire les clients qui nécessitent des transports, soit en mode connecté, soit en mode non-connecté. l Exemple : DAYTIME port 13sur UDP et sur TCP. Les services réalisés sur l une ou l autre interface fonctionnent différemment : l la version TCP utilise la connexion entrante du client pour déclencher la réponse (à une requête donc implicite): le client n émet aucune requête. l la version UDP de DAYTIME requiert une requête du client. Cette requête consiste en un datagramme arbitraire nécessité pour déclencher l émission de la donnée côté serveur. Ce datagramme est ensuite rejeté par le serveur. Dans de nombreux cas, un serveur fournit un service pour un protocole donné; par exemple, le service DAYTIME est réalisé par deux serveurs différents, l un servant les requêtes TCP, l autre les requêtes CentralWeb UDP. - 1998 37

Serveurs multi-protocoles Avantage à utiliser des serveurs différents réside dans le contrôle des protocoles et des services qu offrent un système (certains systèmes, par exemple, ferment tout accès à UDP pour des raisons de sécurité). L avantage à utiliser un serveur commun ou multi-protocoles : l non duplication des ressources associées au service, (corps du serveur), l cohérence dans la gestion des versions. Fonctionnement l Un seul processus utilisant des opérations d entrée/sortie asynchrones de manière à gérer les communications à la fois en mode connecté et en mode non-connecté. l Deux implémentations possibles : en mode itératif et en mode concurrent. CentralWeb - 1998 38

En mode itératif Serveurs multi-protocoles l le serveur ouvre un socket UDP et un socket TCP, l Lorsqu une requête TCP arrive, le serveur utilise accept provoquant la création d un nouveau socket servant la communication avec le client, l Lorsque la communication avec le client est terminée, le serveur ferme le troisième socket et réitère son attente sur les deux sockets initiales. l Si une requête UDP arrive, le serveur reçoit et émet des messages avec le client (il n y a pas d accept); lorsque les échanges sont terminés, le serveur réitère son attente sur les deux sockets initiales Le mode concurrent l Création d un nouveau processus pour toute nouvelle connexion TCP et traitement de manière itérative des requêtes UDP. l Automate gérant les événement asynchrones :optimisation maximale des ressources machines, puisque un seul processus traite toutes les variantes protocolaires des serveurs (TCP et UDP) et toutes les instances de services seront également traitées par le même processus. CentralWeb - 1998 39

Sockets : les serveurs multi-services Problème lié à la multiplication des serveurs : le nombre de processus nécessaires et les ressources consommées qui sont associées. La consolidation de plusieurs services en un seul serveur améliore le fonctionnement: La forme la plus rationnelle de serveur multi-services consiste à déclencher des programmes différents selon la requête entrante : le fonctionnement d un tel serveur en mode connecté est le suivant: l le serveur ouvre un socket par service offert, l le serveur attend une connexion entrante sur l ensemble des sockets ouverts, l lorsqu une connexion arrive, le serveur crée un processus secondaire (fork sous système UNIX), qui prend en compte la connexion, l le processus secondaire exécute (via exec sous système UNIX) un programme dédié réalisant le service demandé. CentralWeb - 1998 40

Sockets : serveurs multi-services A p p l i c a t i o n processus primaire fork fork processus secondaire code dédié exec processus secondaire code dédié exec O S sockets : un par service sockets : un par connexion CentralWeb - 1998 41

Sockets : Serveurs multi-services AVANTAGES le code réalisant les services n est présent que lorsqu il est nécessaire, la maintenance se fait sur la base du service et non du serveur : l administrateur peut gérer le serveur (modifie, archiver,... ) par service au lieu de le gérer globalement. Ce schéma est retenu en standard : le «super serveur» (inetd en BSD) consistant en un processus multi-services multi-protocoles offrant une interface de configuration (fichier systèmes) permettant à l administrateur système d ajouter de nouveaux services alors qu aucun processus supplémentaire n est nécessaire. CentralWeb - 1998 42

Les RPC Remote Procedure Call (RPC) : technologie permettant l exécution de procédures situées dans des environnements distants. Un concepteur d application distribuée peut procéder selon deux approches : l conception orientée communication: u définition du protocole d application (format et syntaxe des messages) inter-opérant entre le client et le serveur, u conception des composants serveur et client, en spécifiant comment ils réagissent aux messages entrants et génèrent les messages sortants. l conception orientée application : u construction d une application conventionnelle, dans un environnement mono-machine, u subdivision de l application en plusieurs modules qui pourront s exécuter sur différentes machines. CentralWeb - 1998 43

RPC : le modèle Le modèle RPC utilise l approche «conception orientée application» et permet l exécution de procédure sur des sites distants. L appel de la procédure distante constitue la requête cliente, le retour de la procédure constitue la réponse serveur. but : conserver le plus possible la sémantique associée à un appel de procédure conventionnel, alors qu il est mis en oeuvre dans un environnement totalement différent. Un appel de procédure obéit à fonctionnement synchrone: une instruction suivant un appel de procédure ne peut pas s exécuter tant que la procédure appelée n est pas terminée. CentralWeb - 1998 44

Programme principal RPC : le modèle Procédure A (serveur) Procédure B (serveur) proca() procb() return return return Machine 1 réseau Machine 2 réseau Machine 3 CentralWeb - 1998 45

RPC : le modèle Différences entre procédures distantes et procédures locales les temps de délais dûs au réseau peuvent engendrer des temps d exécution considérablement plus long, Un appel de procédure distant ne peut contenir d argument de type pointeur, Les descripteurs d entrée/sortie ne sont pas accessibles au procédures distantes, leur interdisant l utilisation de périphériques locaux (exemple écriture de messages d erreur impossible). CentralWeb - 1998 46

RPC : les apports de SUN Sun Microsystems a développé une technologie RCP dite «Sun RPC» devenue aujourd hui un standard de fait; NFS (Network File Sytem) repose sur les RPC. Les Sun RPC définissent: l le format des messages que l appelant (client) émet pour déclencher la procédure distante sur un serveur, l le format des arguments, l le format des résultats. Les protocoles UDP et TCP sont utilisés pour la communication et un protocole de présentation XDR assiste les RPC pour assurer le fonctionnement dans un environnement hétérogène. CentralWeb - 1998 47

RPC : le programme distant Programme distant : unité s exécutant sur une machine distante. Un programme distant correspond à un serveur avec ses procédures et ses données propres. procedure insert procedure delete procedure lookup Données de la base Chaque programme distant est identifié par un entier unique codé sur 32 bits utilisé par l appelant. Les procédures d un programme distant sont identifiées séquentiellement par les entiers 1, 2,..., N. CentralWeb - 1998 48

Une procédure distante est identifiée par le trio (prog, vers,proc) l prog identifie le programme distant, l vers la version du programme l proc la procédure. Groupe d adresses pour programmes distants: Nom identifieur description portmap 100000 port mapper rstat 100001 rstat, rup, perfmeter ruserd 100002 remote users nfs 100003 Network File System ypserv 100004 Yellow pages (NIS) mountd 100005 mount, showmount dbxd 100006 debugger ypbind 100007 NIS binder etherstatd 100010 Ethernet sniffer pcnfs 150001 NFS for PC CentralWeb - 1998 49

RPC : le programme distant Mode de communication RPC : «émission au moins une fois»: l si un appel de procédure distante s exécutant sur UDP ne retourne pas, l appelant ne peut pas savoir si la procédure a été exécutée ou si la réponse a été perdue. l De plus rien ne garantit que la procédure n a été exécutée plusieurs fois suite à des duplications de la requête. La communication se fait en mode client/serveur: l appelant spécifie l adresse (IP, port) du serveur associé au programme distant. Problème sous-jacent: biunivocité adresse de port/identifieurde programme distant impossible (l identifieur = 32 bits; port TCP ou UDP = 16 bits). CentralWeb - 1998 50

RPC : le programme distant Le problème de non biunivocité est résolu en allouant dynamiquement un numéro de port pour tout programme distant, et en le faisant connaître au client (appelant de RPC): l chaque machine offrant des programmes RPC dispose d un service d association de port dynamique: le port mapper. l Lorsqu un programme RPC (serveur) démarre, il alloue dynamiquement un numéro de port local, puis contacte le port mapper de la machine sur laquelle il s exécute, puis informe ce dernier de l association (identifieur de programme RPC / numéro de port). l Le port mapper maintient une base de données renseignant les associations. l Lorsqu un client désire contacter un programme RPC sur une machine M, il s adresse au préalable au port mapper de M afin de connaître le port de communication associé. l Le port mapper s exécute toujours sur le port de communication 111; CentralWeb - 1998 51

RPC : port mapper Programme RPC serveur le programme communique le trio (ident, RPC, port) Port Mapper socket allouée au programme RPC socket du port Mapper = 111 CentralWeb - 1998 52

RPC : external Data Representation Le format général des messages RPC est de longueur variable, les champs des messages sont spécifiés dans le langage XDR (external Data Representation). XDR : représentation des données définie par SUN Microsystems; l définit comment les données doivent être véhiculées sur un réseau. l permet d échanger des données entre machines ayant des représentations internes différentes. Exemple : un entier de 32 bits ayant la valeur 260 sera représenté : l 0014 pour une machine de type «big endian» c est à dire avec les MSB ayant les adresses basses et les LSB ayant les adresses hautes. l 4100 pour les machines «little endian». CentralWeb - 1998 53

RPC : XDR type taille description int 32 bits entier signé de 32 bits unigned int 32 bits entier non signé de 32 bits bool 32 bits valeur booléenne (0 ou 1) enum arb. type énuméré hyper 64 bits entier signé de 64 bits unsigned hyper 64 bits entier non signé de 64 bits float 32 bits virgule flot. simple précision double 64 bits virgule flot. double précision opaque arb. donnée non convertie fixed array arb. tableau de longueur fixe de n importe quel autre type structure arb. agrégat de données discriminated union arb. structure implémentant des formes alternatives symbolic constant arb. constante symbolique void 0 utilisé si pas de données string arb. chaîne de car. ASCII CentralWeb - 1998 54

RPC : XDR L encodage des données selon le format XDR contient uniquement les données représentées mais aucune information à propos du type de la donnée (contrairement au langage ASN1). Si une application utilise un entier de 32 bits, le résultat de l encodage occupera exactement 32 bits et rien n indiquera qu il s agit d un type entier. Cette forme d encodage implique que clients et serveurs doivent s entendre sur le format exact des données qu ils échangent. Une bibliothèque de fonction de conversion XDR permet aux concepteurs d applications d utiliser un logiciel standard sur tout type de machine. CentralWeb - 1998 55

RPC : XDR Des fonctions de conversion XDR permettent aux concepteurs d applications d utiliser un logiciel standard sur tout type de machine. XDR *xdrs; /* pointeur vers un buffer XDR */ char buf[bufsize]; /* buffer pour recevoir les données encodées */ xdr_mem_create (xdr, buf, BUFSIZE, XDR_ENCODE); /* maintenant un buffer stream est créé pour encoder les données * chaque appel à une fonction d encodage va placer le résultat * à la fin du buffer stream; le pointeur sera mis à jour. */ int i;... i=260; xdr_int(xdrs, &i); /* encode l entier i est le pace en fin de buffer stream */ Le programme receveur décodera les données : xdr_mem_create (..., XDR_DECODE) CentralWeb - 1998 56

RPC : XDR Fonction arguments type de donnée converti xdr_bool xdrs, ptrbool booléen xdr_bytes xdrs, ptrstr, strsize, maxsize chaîne de caractères xdr_char xdrs, ptrchar caractère xdr_double xdrs, ptrdouble virgule flot., double précision xdr_enum xdrs, ptrint type énuméré xdr_float xdrs, ptrfloat virgule flot. simple précision xdr_int xdrs, ip entier 32 bits xdr_long xdrs, ptrlong entier 64 bits xdr_opaque xdrs, ptrchar, count, données non converties xdr_bool xdrs, ptrbool booléen xdr_bytes xdrs, ptrstr, strsize, maxsize chaîne de caractères xdr_float xdrs, ptrfloat virgule flot. simple précision xdr_int xdrs, ip entier 32 bits xdr_long xdrs, ptrlong entier 64 bits xdr_opaque xdrs, ptrchar, count, données non converties xdr_pointer xdrs, ptrobj pointeur xdr_short xdrs, ptrshort entier 16 bits xdr_string xdrs, ptrstr, maxsize chaîne de caractères xdr_u_char xdrs, ptruchar entier 8 bits non signé xdr_u_int xdrs, ptrint entier 32 bits non signé CentralWeb - 1998 57

RPC : format des messages Message ID Message type RPC Version number REMOTE Program REMOTE program version REMOTE Procedure Authentication Procedure arguments Le format est de longueur variable car le nombre d arguments de la procédure appelée ne peut être déterminé à l avance CentralWeb - 1998 58

RPC : rpcgen Rpcgen est un outil de génération de logiciel produisant l le talon client, l un squelette de serveur, l les procédures XDR pour les paramètres et les résultats, l un fichier contenant les définitions communes. SUN fournit une méthodologie complète assistée par: l les routines de conversion XDR pour les types simples, l les routines XDR qui formatent les types complexes (tableaux et structures) utilisés dans la définition de messages RPC, l les fonctions run-time RPC qui permettent à un programme d appeler une procédure distante, enregistrer un service auprès du port mapper, dispatcher une requête d appel de procédure vers la procédure associée, à l intérieur du programme distant; exemple de fonction run-time : CentralWeb - 1998 59

RPC : rpcgen Exemple callrpc (host, prog, progver, procnum, inproc, in, outproc, out); l inproc est une procédure qui encode les arguments dans le message RPC, l in spécifie l adresse des arguments de la procédure distante. l outproc est une procédure qui décode les résultats dans le message RPC, l out spécifie l adresse en mémoire où les résultats seront décodés. CentralWeb - 1998 60

RPC : rpcgen La méthodologie consiste à développer l application distribuée comme une application conventionnelle puis à définir les procédures qui seront exécutées à distance. Ce découpage implique l adjonction de code entre l appel de procédure et la procédure distante: l côté client : le nouveau code doit: u encoder les arguments, ucréer un message RPC CALL, uémettre ce message vers le programme distant, uattendre les résultats et décoder ces résultats selon la représentation interne de la machine locale. l côté serveur : le nouveau code doit: u accepter une requête RPC, udécoder les arguments selon la représentation de la machine locale, u dispatcher le message vers la procédure adéquate, uconstruire la réponse puis encoder celle-ci u émettre le message correspondant vers le client. CentralWeb - 1998 61

RPC : rpcgen Les procédures «stubs» remplacent les procédures conventionnelles: l d appel de procédure, côté client, l de procédure appelée, côté serveur. Proc A1 Proc A2 Dispatcher client stub pour B2 server stub pour B1 server stub pour B2 client stub pour B2 Proc B1 Proc B2 La procédure «stub» est dénommée exactement comme la procédure d appel originale ce qui permet de conserver le même source dans la version distribuée; dans l exemple cidessus la procédure «stub» pour B2 est appelée B2, la procédure «stub» pour B1 est appelée B1. CentralWeb - 1998 62

RPC : rpcgen Rpcgen génère automatiquement des portions de code nécessaires à l implémentation d une application distribuée. Cet outil utilise en entrée un fichier de spécification écrit par le concepteur d application et génère en sortie les fichiers en langage C correspondants; il génère : l l encodage des arguments, l l envoi de message RPC, l le dispatching de procédure, l le décodage des données, l l émission de réponse à un appel de procédure. Lorsqu il est combiné avec les sources applicatives plus quelques fichiers écrits par le développeur, rpcgen génère entièrement les programmes client et serveur. CentralWeb - 1998 63

RPC : rpcgen Rpcgen sépare chaque procédure «stub» en deux parties : l une entité commune à toutes les applications qui consiste à la mise en oeuvre de la communication client/serveur, l une entité propre à chaque application, fournissant une interface avec celle-ci. Cette séparation est justifiée par le fait que rpcgen utilise les conventions d appel de procédure du «package communication», tandis qu il autorise l utilisateur à utiliser les conventions d appel des procédures distantes. CentralWeb - 1998 64

RPC : rpcgen Proc A comm. serveur Interface client Interface serveur comm. cliente Proc B CentralWeb - 1998 65

RPC : rpcgen Chaque procédure «stub» est constituée de deux procédures: l côté client la procédure interface appelle la procédure de communication, l côté serveur, la procédure de comm. appelle la procédure d interface. Si les procédures d interface sont définies correctement les appels locaux et distants doivent être identiques. Rpcgen produit quatre fichiers source dont les noms sont dérivés du nom de spécification en entrée. Si le fichier en entrée est Q.x, les fichiers générés sont: l Q.h : déclarations des constantes et types utilisés dans le code généré pour le client et le serveur, l Q_xdr.c : procédures XDR utilisés par le client et le serveur pour encoder/décoder les arguments, l Q_clnt.c : procédure «stub» côté client, l Q_svc.c : procédure «stub» côté serveur. CentralWeb - 1998 66

RPC : rpcgen Client application Client interface Q.x Q_clnt.c compiler Q.h client rpcgen Q.xdr.c server Q.svc.c compiler remote procedures Server interface CentralWeb - 1998 67