Vous êtes sur la page 1sur 50

Architecture et communications Client/Serveur

Plan de la premire partie


Organisation pratique et contenu du module Bibliographie Quelques rappels : Internet et le modle TCP/IP Architecture Client/Serveur Communications inter-processus Les sockets Les appels de procdures distantes

Organisation pratique et contenu du module

Le module CS : objectifs

Objectif du module : former des administrateurs systmes et rseaux

connatre le modle Client/Serveur (90% des applications de lInternet) avoir des notions de conception dapplications Client/Serveur connatre les protocoles applicatifs de lInternet et savoir mettre en place les services associs

Le module CS : contenu (1)

Modle Client/Serveur et applications

Architecture et communication de type Client/Serveur


Modle Client/Serveur, middleware Conception dune application Client/Serveur Les modes de communication entre processus Les sockets TCP/IP Les serveurs multi-protocoles et multi-services Les appels de procdures distantes, lexemple des RPC

Le module CS : contenu (2)

Applications Client/Serveur sur TCP/IP Connexions distance (telnet, rlogin, ssh, X11, ) Transfert de fichiers et autres (FTP, TFTP, NFS, SMB) Gestion dutilisateurs distants (NIS) Le courrier lectronique (POP, IMAP, SMTP, WebMail) Les serveurs de noms (DNS) Un annuaire fdrateur (LDAP) Le web, protocole HTTP, serveur apache, caches Web Ladministration de rseaux et le protocole SNMP volutions du modle Client/Serveur (sil reste du temps) Distribution de contenu et rseaux Peer-to-Peer Architecture Corba

Bibliographie

Rseaux , 4ime dition, Andrew Tanenbaum, Pearson Education, ISBN 2-7440-7001-7 La communication sous Unix , 2ime dition, Jean-Marie Rifflet, Ediscience international, ISBN 2-84074-106-7 Analyse structure des rseaux , 2ime dition, J. Kurose et K. Ross, Pearson Education, ISBN 2-7440-7000-9 TCP/IP Illustrated Volume 1, The Protocols , W. R. Stevens, Addison Wesley, ISBN 0-201-63346-9 TCP/IP, Architecture, protocoles, applications , 4ime dition, D. Comer, Dunod, ISBN 2-10-008181-0 Internet

http://www.w3.org/ http://www.rfc-editor.org/ (documents normatifs dans TCP/IP)

Quelques rappels : Internet et le modle TCP/IP

Le visage de l'Internet (1)


Un rseau de rseaux Un ensemble de logiciels et de protocoles Bas sur larchitecture TCP/IP Fonctionne en mode Client/Serveur Offre un ensemble de services (e-mail, transfert de fichiers, connexion distance, WWW, ) Une somme dinventions qui saccumulent

mcanismes rseau de base (TCP/IP) gestion des noms et des adresses des outils et des protocoles spcialiss le langage HTML

Le visage de l'Internet (2)

Une construction partir du bas


rseau rseau rseau rseau rseau

local (laboratoire, dpartement) local (campus, entreprise) rgional national mondial

3 niveaux dinterconnexion

postes de travail (ordinateur, terminal...) liaisons physiques (cble, fibre, RTC...) routeurs (quipement spcialis, ordinateur...)

Le visage de l'Internet (3)

Un ensemble de sous-rseaux indpendants (Autonomous System) et htrognes qui sont interconnects (organisation hirarchique)

S'articule autour de plusieurs backbone

Le visage de l'Internet (4)


Point d'interconnexion

Modle Client/Serveur Htrognit Facteur d'chelle


ISP aux US

Larchitecture de TCP/IP (1)

Une version simplifie du modle OSI


Application FTP, WWW, telnet, SMTP, Transport TCP, UDP (entre 2 processus aux extrmits) TCP : transfert fiable de donnes en mode connect UDP : transfert non garanti de donnes en mode non connect Rseau IP (routage) Physique transmission entre 2 sites TCP UDP IP

Transport Control Protocol User Datagram Protocol Internet Protocol

Larchitecture de TCP/IP (2)


OSI 7 6 5 transpo rt 4 3 rseau

HTTP

FTP sockets

TELNET SMTP

DNS

SNMP

NFS

...

Applications (processus utilisateur) Logiciel (systme d'exploitation) protocoles de contrle de l'Internet

TCP

UDP

protocoles de transfert

IP

ICMP

ARP

RARP

BOOTP

DHCP

2 1

SLIP

PPP

ATM

FRelay

Rseaux locaux Ethernet, Token Ring, ...


Matriel

Larchitecture de TCP/IP (3)

Deux machines sur un mme sous rseau IP


Ordinateur A Ordinateur B
Protocole FTP

Client FTP

Serveur FTP

Rseau logique IP

TCP

Protocole TCP

TCP
Linux kernel

IP Pilote Ethernet

Protocole IP

IP Pilote Ethernet

Protocole Ethernet

Sous-rseau de type Ethernet

NIC

Larchitecture de TCP/IP (4)

Prise en compte de l'htrognit


Ordinateur B
Protocole FTP

Ordinateur A

Client FTP

Serveur FTP

TCP

TCP - contrle de bout en bout

TCP
Linux kernel

IP Pilote Ethernet

Datagrammes IP

routeur

IP

De proche en proche

IP

trames Ethernet

Ether Token

trames Token Ring

Pilote Token Ring

NIC

sous-rseau de type Ethernet

sous-rseau de type Token Ring

Larchitecture de TCP/IP (5)


Couche rseau : communications entre machines
IP IP IP IP IP IP IP
datagramme

IP IP IP

IP

IP IP

Nud intermdiaire : routeur (matriel ou logiciel)

IP - protocole d'interconnexion, best-effort


acheminement de datagrammes (mode non connect) peu de fonctionnalits, pas de garanties simple mais robuste (dfaillance d'un nud intermdiaire)

Larchitecture de TCP/IP (6)


Couche transport : communications entre applis
TCP IP TCP IP IP IP IP IP IP
datagramme

IP IP IP

TCP IP

TCP IP IP Nud d'extrmit (end systems)

Flux TCP

TCP - protocole de transport de bout en bout


uniquement prsent aux extrmits transport fiable de segments (mode connect) protocole complexe (retransmission, gestion des erreurs, squencement, )

Larchitecture de TCP/IP (7)


Serveur FTP
en-tte applicatif donnes utilisateur

message
en-tte donnes applicatives

TCP

TCP

segment
donnes applicatives

IP

en-tte en-tte

IP

TCP

datagramme
donnes applicatives en-queue Ethernet

Pilote Ethernet

en-tte en-tte en-tte Ethernet IP TCP

trame

Identification des protocoles (1)


HTTP Numro de port (dans FTP TELNET SMTP DNS SNMP BOOTP ...

l'en-tte TCP ou UDP)

port=21 port=25 port=80 port=23 port=53

port=161 port=67 ou 68

TCP
proto=6

UDP
proto=17

Identifiant de protocole
(dans l'en-tte IP)

ICMP EtherType (dans

proto=1

IP

ARP

RARP

l'en-tte de la trame)

type=0x800 type=0x806

type=0x835

Ethernet ou SNAP

Identification des protocoles (2)

Une adresse de transport = une adresse IP + un numro de port (16 bits) -> adresse de socket Une connexion s'tablit entre une socket source et une socket destinataire -> une connexion = un quintupl (proto, @src, port src, @dest, port dest) Deux connexions peuvent aboutir la mme socket Les ports permettent un multiplexage ou dmultiplexage de connexions au niveau transport Les ports infrieurs 1024 sont appels ports rservs

Identification des protocoles (3)

Le protocole UDP

UDP (RFC 768) - User Datagram Protocol


protocole de transport le plus simple service de type best-effort (comme IP) les segments UDP peuvent tre perdus les segments UDP peuvent arriver dans le dsordre mode non connect : chaque segment UDP est trait indpendamment des autres simple donc rapide (pas de dlai de connexion, pas d'tat entre metteur/rcepteur) petit en-tte donc conomie de bande passante sans contrle de congestion donc UDP peut mettre aussi rapidement qu'il le souhaite

Pourquoi un service non fiable sans connexion ?

Les utilisations d'UDP


Performance sans garantie de dlivrance Souvent utilis pour les applications multimdias

tolrantes aux pertes sensibles au dbit applications qui envoient peu de donnes et qui ne ncessitent pas un service fiable exemples : DNS, SNMP, BOOTP/DHCP ajouter des mcanismes de compensation de pertes (reprise sur erreur) au niveau applicatif mcanismes adapts l'application

Autres utilisations d'UDP

Transfert fiable sur UDP

Le datagramme UDP
32 bits Port source Longueur segment Port destination Checksum UDP

8 octets

Donnes applicatives (message)

Taille totale du segment (en-tte+donnes)

Total de contrle du segment (en-tte+donnes) optionnel : peut tre 0

UDP = IP + multiplexage (adresse de transport) !!

Le protocole TCP

Transport Control Protocol


2581)

Transport fiable en mode connect

Attention: les RFCs ne spcifient pas tout - beaucoup de choses dpendent de l'implmentation

(RFC 793, 1122, 1323, 2018,

point point, bidirectionnel : entre deux adresses de transport (@IP src, port src) --> (@IP dest, port dest) transporte un flot d'octets (ou flux) l'application lit/crit des octets dans un tampon assure la dlivrance des donnes en squence contrle la validit des donnes reues organise les reprises sur erreur ou sur temporisation ralise le contrle de flux et le contrle de congestion ( l'aide d'une fentre d'mission)

Exemples de protocole applicatif (1)

HTTP - HyperText Transport Protocol


protocole du web change de requte/rponse entre un client et un serveur web protocole de manipulation de fichiers distants transfert, suppression, cration, systme de terminal virtuel permet l'ouverture d'une session distante

FTP - File Transfer Protocol


TELNET - TELetypewriter Network Protocol


Exemples de protocole applicatif (2)

SMTP - Simple Mail Transfer Protocol service d'envoi de courrier lectronique rception (POP, IMAP, IMAPS, ) DNS - Domain Name System assure la correspondance entre un nom symbolique et une adresse Internet (adresse IP) bases de donnes rparties sur le globe SNMP - Simple Network Management Protocol protocole d'administration de rseau (interrogation, configuration des quipements, ) Les sockets - interface de programmation permettant l'change de donnes (via TCP ou UDP)

Architecture Client/Serveur

Les applications rseau (1)


Applications = la raison d'tre des rseaux infos Profusion d'applications depuis 30 ans grce l'expansion d'Internet

annes 1980/1990 : les applications "textuelles" messagerie lectronique, accs des terminaux distants, transfert de fichiers, groupe de discussion (forum, newsgroup), dialogue interactif en ligne (chat), la navigation Web plus rcemment : les applications multimdias : vido la demande (streaming), visioconfrences, radio et tlphonie sur Internet la messagerie instantane (ICQ, MSN Messenger) les applications Peer-to-Peer (MP3, )

Les applications rseau (2)

L'application est gnralement rpartie (ou distribue) sur plusieurs systmes Exemples :

L'application Web est constitue de deux logiciels communiquants : le navigateur client qui effectue une requte pour disposer d'un document prsent sur le serveur Web L'application telnet : un terminal virtuel sur le client, un serveur telnet distant qui excute les commandes La visioconfrence : autant de clients que de participants

--> Ncessit de disposer d'un protocole de communication applicatif !

Terminologie des applications rseau

Processus :

une entit communicante un programme qui s'excute sur un hte d'extrmit communications entre des processus qui s'excutent sur un mme hte communications rgies par le systme d'exploitation (tubes UNIX, mmoire partage, ) les processus s'changent des messages travers le rseau selon un protocole de la couche applications ncessite une infrastructure de transport sous-jacente

Communications inter-processus locales :

Communications inter-processus distantes :

Protocoles de la couche Applications

Le protocole applicatif dfinit :

le format des messages changs entre les processus metteur et rcepteur les types de messages : requte, rponse, l'ordre d'envoi des messages HTTP pour le Web, POP/IMAP/SMTP pour le courrier lectronique, SNMP pour l'administration de rseau, Application Web : un format de documents (HTML), un navigateur Web, un serveur Web qui on demande un document, un protocole (HTTP)

Exemples de protocoles applicatifs :

Ne pas confondre le protocole et l'application !

Le modle Client / Serveur

Ide : l'application est rpartie sur diffrents sites pour optimiser le traitement, le stockage... Le client

effectue une demande de service auprs du serveur (requte) initie le contact (parle en premier), ouvre la session est la partie de l'application qui offre un service est l'coute des requtes clientes rpond au service demand par le client ( rponse)

Le serveur

Le modle Client / Serveur

Le client et le serveur ne sont pas identiques, ils forment un systme coopratif

les parties client et serveur de l'application peuvent s'excuter sur des systmes diffrents une mme machine peut implanter les cts client ET serveur de l'application un serveur peut rpondre plusieurs clients simultanment

Des clients et des serveurs...


Plusieurs clients, un serveur : Client Matre Client

Un client, un serveur : Client Requte/Rponse Serveur

Esclave

Esclave

Le serveur traite plusieurs requtes simultanes Un client, plusieurs serveurs : Client Serveur Serveur

Le serveur contact peut faire appel un service sur un autre serveur (ex. SGBD)

Le modle Client / Serveur


Application C/S
Processus client Systme (OS) Matriel Processus Protocole applicatif serveur Systme (OS) Rseau Matriel L'application est rpartie sur le client et le serveur qui dialoguent selon un protocole applicatif spcifique

Le Web
Navigateur L'exemple du Web Windows Modem ADSL Internet HTTP Serveur Apache Linux Ethernet

Le modle Client / Serveur


Applications Transport Rseau Liaison Physique

Client A
modem Systme autonome

Partie cliente de l'application


Applications Transport Rseau Liaison Physique

requte

rponse

Applications Transport Rseau Liaison Physique

Client B

Serveur Partie serveur de l'application

Exemple d'application client/serveur

Le client lit une ligne partir de l'entre standard (clavier) et l'envoie au serveur Le serveur lit la ligne reue et la convertit en majuscules Le serveur renvoie la ligne au client Le client lit la ligne reue et l'affiche sur la sortie standard (cran)

Exemple d'application client/serveur

DAYTIME (RFC 867) permet au client d'obtenir la date et l'heure du serveur Le protocole spcifie

l'change des messages : ds qu'un serveur reoit un message d'un client, il renvoie une chane de caractres contenant la date et l'heure le contenu du message client n'est mme pas regard le format de la chane renvoye : 1 ligne ASCII Par exemple "Weekday, Month Day, Year Time-Zone "
"Tuesday, February 22, 1982 17:37:43-PST "

Interface de programmation rseau

Il faut une interface entre l'application rseau et la couche transport

le transport n'est qu'un tuyau (TCP ou UDP dans Internet) l'API (Application Programming Interface) n'est que le moyen d'y accder (interface de programmation) les sockets apparus dans UNIX BSD 4.2 devenus le standard de fait les RPC : Remote Procedure Call - appel de procdures distantes

Les principales APIs de l'Internet

Interface de programmation rseau

Du ressort du dveloppeur de l'application

Application C/S
Processus client socket Processus Protocole applicatif serveur socket TCP/IP Internet Matriel
Interface d'accs au transport

Du ressort du systme d'exploitation

TCP/IP Matriel

Une socket : interface locale l'hte, cre par l'application, contrle par l'OS Porte de communication entre le processus client et le processus serveur

Application C/S - rcapitulatif

Une application Client/Serveur, c'est

une partie cliente qui excute des requtes vers un serveur une partie serveur qui traite les requtes clientes et y rpond un protocole applicatif qui dfinit les changes entre un client et un serveur un accs via une API (interface de programmation) la couche de transport des messages

Bien souvent les parties cliente et serveur ne sont pas crites par les mmes programmeurs (Navigateur Netscape/Serveur apache) --> rle important des RFCs qui spcifient le protocole !

Le Middleware

Grossirement : la gestion du protocole applicatif+l'API d'accs la couche transport+des services complmentaires C'est un ensemble de services logiciels construits au dessus d'un protocole de transport afin de permettre l'change de requte/rponse entre le client et le serveur de manire transparente
Client Middleware Rseau Serveur

Le Middleware

Complment de services du rseau permettant la ralisation du dialogue client/serveur :


prend en compte les requtes de lapplication cliente les transmet de manire transparente travers le rseau jusquau serveur prend en compte les donnes rsultat du serveur et les transmet vers lapplication cliente

Lobjectif essentiel du middleware est doffrir aux applications une interface unifie permettant laccs lensemble des services disponibles sur le rseau : lAPI

Fonctions dun Middleware


Procdures dtablissement/fermeture de connexion Excution des requtes, rcupration des rsultats Initiation des processus sur diffrents sites Services de rpertoire Accs aux donnes distance Gestion d'accs concurrents Scurit et intgrit (authentification, cryptage, ) Monitoring (compteurs, ) Terminaison de processus Mise en cache des rsultats, des requtes

Conception d'une application C/S

Comment dcouper une application informatique en clients et serveurs ? Une application informatique est reprsente selon un modle en trois couches :

la couche prsentation (interface Homme/Machine) : gestion de laffichage la couche traitements (ou logique) qui assure la fonctionnalit intrinsque de lapplication (algorithme) la couche donnes qui assure la gestion des donnes de l'application (stockage et accs)

Conception d'une application C/S

Exemples de dcoupage Client/Serveur :

le module de gestion des donnes peut tre hberg par un serveur distant (SGBD, serveur web) le module de gestion de laffichage peut galement tre gr par un serveur distant (un terminal X par exemple)
Prsentation Logique Applets, JavaScript, Donnes Logique

Le web
Logique Donnes PHP, CGI, Servlets,

X Window

Prsentation

Prsentation

Conception d'une application C/S

Autres exemples
Serveur de fichiers
Prsentation Logique Logique Donnes

BD distribue
Prsentation Logique Donnes

mulation de terminaux
Prsentation

telnetd
Donnes

Donnes

Conception d'une application C/S

Modle de Gartner pour les systmes 2 niveaux (2-tiers) :


Client
Prsentation Logique Donnes Prsentation Logique Logique Donnes Logique Donnes Prsentation Logique Prsentation Logique Prsentation Prsentation

Serveur

Donnes

Donnes

Donnes

BD rparties Classe 1

Donnes distantes Classe 2

Transactions rparties Classe 3

Prsentations distantes Classe 4

Prsentations rparties Classe 5