Le modèle client-serveur

Dimension: px
Commencer à balayer dès la page:

Download "Le modèle client-serveur"

Transcription

1 Le modèle client-serveur Modèle de communication (Couche Session) entre applications au dessus du protocole de transport Le client envoie des requêtes, reçoit les réponses, les affiche, Le serveur reçoit les requêtes, les traite, Requête envoie les Réponse réponses, port Transport Protocole de transport port Transport Site serveur -serveur 1 Le modèle client-serveur La communication transport-application se fait via un port Le client se trouve sur un site client. Le serveur se trouve sur un site serveur Un site serveur peut offrir plusieurs services Un client peut être instancié plusieurs fois -serveur 2

2 multi-connexion Un serveur peut servir plusieurs clients à la fois Site serveur -serveur 3 multi-niveaux Un serveur peut invoquer un autre serveur: On parle de client-serveur à 3 niveaux (3-tired) au lieu du 2 niveaux (2-tired) classique Le serveur du milieu reçoit la requête et demande à l autre serveur de collaborer afin de rendre le service demandé par le client On peut avoir plus de 3 niveaux 1 2 Site serveur de milieu Site serveur -serveur 4

3 de serveurs Un serveur qui permet d invoquer d autres services sur le même site que lui. Il est souvent implanté sous forme de Daemon (ie. un processus sans terminal) Il analyse les requêtes et invoque les services appropriés Daemon Service 1 Service 2 -serveur 5 inetd de services Internet (Internet Daemon) sur Unix Configuré dans /etc/inetd.conf ftp ftp stream stream tcp tcp nowait nowait root root /usr/sbin/tcpd /usr/sbin/tcpd /usr/local/bin/ftpd /usr/local/bin/ftpd telnet telnet stream stream tcp tcp nowait nowait root root /usr/sbin/tcpd /usr/sbin/tcpd in.telnetd in.telnetd name name dgram dgram udp udp wait wait root root /usr/sbin/in.tnamed /usr/sbin/in.tnamed in.tnamed in.tnamed /etc/inetd.conf -serveur 6

4 Modes de connexion Service orienté connexion (ou mode connecté) basé sur un protocole de transport orienté connexion tel que TCP (Connection-oriented service ou COS) Un demande de connexion de l'application se traduit en demande de connexion du protocole de transport Services non orienté connexion (ou mode non connecté) basé sur un protocole de transport tel que UDP (Connectionless service ou ) -serveur 7 Pile de services On peut empiler des services en fonction de leurs modes de connexion Cela résulte en des applications qui sont soit connectées ou non connectées (HTTP) COS (TCP) (IP) COS (APP) (UDP) (IP) (SNMP) (DNS) (IP) -serveur 8

5 Requêtes de connexions Dans le mode connecté, le client demande une connexion: Il fait une ouverture active de connexion (Active Open) Le serveur accepte un connexion. Il fait une demande passive (Passive Open) Généralement, le serveur effectue la demande de fermeture de la connexion. Le client acquiesce -serveur 9 Les ports Point d accès au service. Numéros compris entre 0 et Port du client: Généré par le noyau pour chaque instanciation du client. Port éphémère. Port du serveur: Ports connus (Well known port) standardisés Ports choisis par les concepteurs des serveurs. Dynamiques. Standards IANA (Internet Number Assignment Authority): Well known : Dynamiques : Éphémères : serveur 10

6 Usage des ports Les ports sont utilisé dans les deux directions de la communication client-serveur Ils sont inversés en conséquence Requête Réponse C Transport Port C Port S Port S Port C Requête Requête S Transport -serveur 11 Identification de connexion Une connexion (ou association) est désignée par 5 éléments: (Ad. IP Source, Port Source, Ad. IP Destination, Port Destination, Protocole de transport) ( , 2035, ,2025,-) ( , 2035, ,2025,-) ( ,4039, ,2025,-) ( ,2035, ,2025,-) -serveur 12

7 parallèle Dédie un processus ou un thread à une connexion: Plus performant pour les clients Lourd pour le serveur 1 P1 P2 2 1 Thread 1 Thread serveur 13 itératif S occupe lui-même de traiter les requêtes Plus faciles à mettre en œuvre Assure un traitement isolé (ex. Transactions) Moins performant -serveur 14

8 avec ou sans état avec état (Statefull) : Garde les information sur les clients suite à l exécution de leurs requêtes Plus facile de faire le lien entre les requêtes successives d un client sans état (Stateless): Ne garde pas d informations sur les requêtes des clients Plus léger et plus fiable car le serveur n est pas obligé de maintenir des informations d état -serveur 15