Sie sind auf Seite 1von 36

Chapitre 1 : Architecture client-serveur

Introduction
Les vingt dernires annes ont vu une volution majeure des systmes informatiques savoir le passage dune architecture centralise travers de grosses machines (Mainframe, anne 70-80) vers une architecture distribue base sur lutilisation de serveurs et de postes clients grce lvolution de la technologie (plus performante et moins coteuse) et les rseaux.

Prsentation du modle Client/ Serveur


Larchitecture client-serveur est un modle de fonctionnement logiciel qui peut se raliser sur tout type darchitecture matrielles partir du moment o ces architectures peuvent tre interconnectes. Ce modle est rparti en : Service : comportement dun programme qui peut rendre service dautres programmes. Exemple : appel du service DNS (un service de traduction noms/adresses IP) par une requte (exemple : donne-moi la traduction de lisiperso15.univlyon1.fr ) suivant le protocole DNS. Client : programme demandant un service un autre programme ET la machine sur laquelle tourne ce programme. Serveur : programme fournissant des services dautres programmes ET la machine sur laquelle tourne ce programme.

Demande dun service (envoi de requtes)

Fourniture du service demand (rponse aux requtes)

CLIENT Exemple de fonctionnement dun rseau client /serveur :

SERVEUR

Le client pour recevoir des informations du serveur lui met une requte passant par un port du PC Le serveur lui envoie ensuite les informations grce ladresse IP de la machine cliente. Le client traite et affiche les informations en provenance du serveur

Principes gnraux du modle :


Service : le serveur est le fournisseur de services et le client le consommateur Protocole : cest toujours le client qui dclenche la demande de service. Le serveur attend passivement les requtes des clients Partage de ressources : le serveur traite plusieurs clients et contrle leurs accs aux ressources Localisation : le logiciel client-serveur masque aux clients la localisation du serveur Htrognit : le logiciel client-serveur est indpendant des plateformes matrielles et logicielles Redimensionnement : possibilit dajouter ou de retirer des stations clientes et de refaire voluer le serveur Souplesse et adaptabilit : on peut modifier le module serveur (respectivement le module client) sans toucher au module client (respectivement le module serveur)

Avantages et inconvnient du modle client-serveur


1. Avantages Unicit de linformation : toutes les donnes sont stockes sur un mme serveur Meilleur scurit : simplification des contrles de scurit Mise jour : mise jour centralis aussi bien des donnes et logiciels Meilleure fiabilit : En cas de panne, seul le serveur fait lobjet dune rparation Facilit dvolution : architecture volutive, il est trs facile de rajouter ou denlever des clients ou des serveurs. 2. Inconvnient Un cot dexploitation lev (bande passante, cbles, ordinateurs surpuissants) En cas de panne du serveur, plus aucun client na accs aux informations si trop de clients veulent communiquer avec le serveur ce dernier risque de ne pas supporter la charge

Tryptique dune application


Une application informatique est reprsente selon un modle en trois couches :

1. Couche Prsentation (premier niveau)


Correspond la partie de lapplication visible et interactive. On parle dInterface Homme Machine (IHM). Elle peut tre ralise par une application graphique ou textuelle. Elle peut prendre de multiples facettes sans changer la finalit de lapplication. Dans le cas dun systme de distributeurs de billets, lautomate peut tre diffrent dune banque lautre, mais les fonctionnalits offertes sont similaires et les services identiques (fournir des billets, donner un extrait de compte, etc.). Une mme fonctionnalit mtier pourra prendre diffrentes formes de prsentation selon quelle se droule sur Internet, sur un distributeur automatique de billets ou sur lcran dun charg de clientle en agence... Cette couche relaie les requtes de lutilisateur destination de la couche mtier, en retour elle lui prsente les informations renvoyes par les traitements de cette couche. Il sagit donc ici dun assemblage de services mtiers et applicatifs offerts par la couche infrieure.

2. Couche Mtier / Business (second niveau)


partie fonctionnelle de lapplication : implmente la logique , et dcrit les oprations que lapplication opre sur les donnes en fonction des requtes des utilisateurs, effectues au travers de la couche prsentation. mises en uvre des diffrentes rgles de gestion et de contrle du systme La couche mtier offre des services applicatifs et mtier la couche prsentation. Pour fournir ces services, elle sappuie, le cas chant, sur les donnes du systme, accessibles au travers des services de la couche infrieure. En retour, elle renvoie la couche prsentation les rsultats quelle a calculs. partie grant laccs aux gisements de donnes du systme. Ces donnes peuvent tre propres au systme, ou gres par un autre systme. La couche mtier na pas sadapter ces deux cas, ils sont transparents pour elle, et elle accde aux donnes de manire uniforme

3. Couche Accs aux donnes (troisime niveau)


Donnes propres au systme Donnes destines durer dans le temps. Elles peuvent tre stockes indiffremment dans de simples fichiers texte, ou eXtensible Markup Language (XML), ou encore dans une base de donnes. Les services sont mis disposition de la couche mtier. Les donnes renvoyes sont issues du/des gisements de donnes du systme. Donnes gres par un autre systme Les donnes peuvent aussi tre gres de manire externe. Elles ne sont pas stockes par le systme considr, La rpartition de ces couches entre client et serveur gnre les diffrents types darchitecture (architecture 2,3 ou n-tiers).

Les diffrentes architectures client-serveur


1. Architecture peer to peer (pair pair)
Chaque ordinateur est la fois client et serveur
M.

2. Architecture 2 tiers (2 niveaux)


Cest larchitecture de base, avec 2 lments : Client : partie prsentation, interface utilisateur Serveur : partie gestion physique des donnes Les services mtier ou la partie applicative peuvent tre : Soit entirement cot client, intgrs avec la prsentation. La partie serveur ne gre que les donnes. Ex : traitement de texte avec serveur de fichiers distants ou application accdant une BDD distante Soit entirement cot serveur : La partie client ne gre que l'interface utilisateur. L'interface utilisateur peut mme tre excute sur le serveur c--d fonctionnement en mode terminal (mainframe), l'utilisateur a simplement devant lui cran, clavier, souris pour interagir distance avec l'application s'excutant entirement sur le serveur Soit dcoups entre la partie serveur et la partie client

Les diffrents modles de client-serveur 2 niveaux sont donns par le modle de Gartner comme le reprsente la figure suivante :

Cot client
Prsentation
Mtier Donnes

Prsentation
Mtier

Prsentation
Mtier

Prsentation

Prsentation

Prsentation
Mtier Donnes Donnes Donnes Mtier Donnes Mtier Donnes

Cot serveur
Figure : Modle de Gartner 2 niveaux 1. Prsentation rpartie : est jug abusive du fait que lintgralit des traitements originaux est conserve et que le client conserve une position desclave par rapport au serveur. 2. Prsentation distante ou client-serveur de prsentation : le client ne prend en charge que laffichage, lensemble des traitements est excut par le serveur. 3. Client-serveur de traitement : les traitements sont distribus entre le client et le serveur ce qui permet doptimiser la rpartition de la charge du traitement entre machines et limite le trafic rseau. 4. Client-serveur de donnes : le serveur assure la gestion, stockage et traitement des donnes (cas des grands SGBD) 5. Donnes rparties : cest une variante du client-serveur de donnes o une partie des donnes est prise en charge par le client (intressant pour les gros volumes de donnes ce qui permet un temps daccs rapide)

3. Architecture 3 tiers (3 niveaux)


Les 3 principaux tiers s'excutent chacun sur une machine diffrente Client : partie prsentation Serveur d'applications : partie Applicative ou couche mtier Serveur de (base de) donnes : partie accs aux donnes Concepts Les couches communiquent entre elles au travers dun modle dchange , et chacune propose un ensemble de services. Les services dune couche sont mis disposition de la couche suprieure. Il est interdit quune couche invoque les services dune couche adjacente. Les fonctionnalits de chacune des couches peuvent voluer sans induire de changement dans les autres couches. Une nouvelle fonctionnalit de lapplication peut avoir des rpercussions dans plusieurs couches. Il est essentiel de dfinir un modle dchange assez souple, pour permettre une maintenance aise de lapplication. Buts et Objectifs Allgement du poste de travail client Prise en compte de lhtrognit des plates-formes (serveurs, clients, langages, etc.) Introduction de clients dits lgers Amlioration de la scurit des donnes, en supprimant le lien entre le client et les donnes. Le serveur a pour tche, en plus des traitements purement mtiers, de vrifier lintgrit et la validit des donnes avant de les envoyer dans la couche de donnes Meilleure rpartition de la charge entre diffrents serveurs dapplication.

Les modles de Gartner pour 3 niveaux sont reprsents par la figure suivante :

Client
Prsentation
Mtier Donnes

Prsentation
Mtier

Prsentation

Prsentation

Mtier Donnes

Mtier

Mtier

Mtier

Mtier Donnes Donnes

Mtier Donnes Donnes

Serveur
Figure : Modle de Gartner 3 niveaux

4. Architecture N tiers (N niveaux)


Larchitecture N tiers est pense pour pallier aux limitations des architectures 3 tiers et concevoir des applications puissantes et simples maintenir. Cette architecture permet de distribuer plus librement la couche applicative, ce qui facilite la rpartition de la charge entre les niveaux, soit en : Composition horizontale : Service mtier utilise d'autres services mtiers Composition verticale : Les services mtiers peuvent aussi s'appuyer sur des services techniques (Scurit, Transaction, ...) Chaque service correspond une couche d'o le terme de N-tiers

Serveur du milieu

Avantage : Rutilisation de services existants Dcouplage des aspects mtiers et technique et des services entre eux : meilleure modularit Facilite volution : nouvelle version de service Facilite passage l'chelle : volution de certains services On recherche en gnral un couplage faible entre les services Permet de faire voluer les services un par un sans modification du reste de l'application Inconvnients En gnral, les divers services s'appuient sur des technologies trs varies : ncessite de grer l'htrognit et l'interoprabilit Utilisation de framework / outils supplmentaires Les services tant plus dcoups et distribus, pose plus de problmes lis la distribution

Exemples dapplication client-serveur


1. Traduction noms de machines / adresses IP protocole : DNS clients : tout programme rseau utilisant des noms de machine, serveurs : DNS (port = 53) 2. Transfert de fichiers protocole : FTP clients : outils de gestion de transferts FTP (Ws_FTP, FileZilla, etc.) serveurs : serveurs FTP (port = 21-22) 3. Web protocole : HTTP clients : navigateurs web (Mozilla, IE, Firefox, Opera...) serveurs : serveur web (IIS, Apache, ...) (port = 80)

Chapitre 2: Notion de base sur le modle OSI et le TCP/IP


Introduction
Le modle TCP-IP est un modle qui fut cr dans les annes 70 par le dpartement de la dfense des tats unis dAmrique, plus prcisment par lagence DARPA (Defense Advanced Research Projects Agency). Cest pour cette raison dailleurs que vous le trouverez aussi sous lappellation DoD model pour Department of Defense Model (modle du dpartement de la dfense). Quant au modle OSI, cest en 1978 que lOrganisation Internationale pour la Standardisation (ISO, pour International Standardization Orgazanition) le cre. Cest un certain Charles Bachman qui proposa le concept de segmenter la communication dans un rseau en 7 couches distinctes. Le but de ces deux modles nest pas le mme. En effet, le modle OSI a t dvelopp vocation normative, cest--dire dans le but de servir de rfrence universelle dictant le droulement de la communication entre deux htes. Alors que le modle TCP-IP a t cr vocation descriptive, cest--dire dans le but de dcrire comment se passe la communication entre deux htes. Le modle OSI sert de carte ou de plan pour cration dun protocole ou un matriel en rseau. Cest un modle de rfrence, on le trouve souvent sous lappellation OSI Reference model (Modle de rfrence OSI) ou OSI-RM.

Le modle OSI
Le modle OSI (Open System Interconnection, Interconnexion de systmes ouverts) est une faon standardise de "segmenter" le processus de communication entre deux entits en plusieurs blocs. Chaque bloc rsultant de cette segmentation est appel "Couche". Une couche est un ensemble de services accomplissant un but prcis. La beaut de cette segmentation c'est que chaque couche du modle OSI communique avec la couche audessus et en dessous d'elle (on parle galement de couches adjacentes). La couche en dessous pourvoit des services que la couche en cours utilise. Et finalement, la couche en cours, pourvoit des services que la couche au-dessus d'elle aura besoin pour assurer son rle. Voici un schma pour illustrer ce principe de communication entre couches

Couche au-dessus (C+1) Offre les services la couche au-dessus Couche en cours (C) Utilise les services de la couche en dessous Couche en dessous (C-1)

Ainsi le modle OSI permet de comprendre de faon dtaille comment s'effectue la communication entre un ordinateur A et un ordinateur B. Le modle OSI a segment la communication en 7 couches : Application Prsentation Session Transport Rseau Liaison de donnes Physique

Tableau rcapitulatif
Position dans le modle OSI 7 6 5 4 Nom de la couche Application Prsentation Session Transport Rle de la couche Point de contact avec les services rseaux Elle s'occupe de tout aspect prsentatif des donnes: format, encryptions, encodage, etc. Responsable d'initialisation de la session, sa gestion et sa fermeture Choix du protocole de transmission et prparation de l'envoi des donnes. Elle spcifie le numro de port utilis par l'application mettrice ainsi que le numro de port de l'application rceptrice. Elle fragmente les donnes en plusieurs squences ou segments. Connexion logique entre les htes. Elle traite de tout ce qui concerne l'identification et le routage dans le rseau. de Etablissement d'une liaison physique entre les htes. Elle s'occupe de la fragmentation des donnes en plusieurs trames. Conversion des trames en bits, et transmission physique des donnes sur le mdia

3 2 1

Rseau Liaison donnes Physique

Le modle TCP/IP
Le nom TCP/IP provient des deux protocoles principaux de ce modle : TCP ( Transmission Control Protocol) et IP (Internet Protocol.) Ce modle est celui adopt par le rseau mondial Internet. Il est constitu de 4 couches : Application, Transport, Internet, Accs au rseau.

Correspondance entre le modle OSI et TCP/IP


Application Prsentation Session Transport Rseau Liaison Physique OSI TCP/IP Transport Internet Accs au rseau

Applications

Transmission des donnes


Unit de donnes Les donnes que vous transmettez sont appeles (unit de) donnes tout simplement (data unit en anglais). Parfois on les appelle PDU pour Protocol Data Unit (Unit de donnes de protocole) prcd du nom de leur couche. Par exemple dans la couche applicative, elles prennent le nom de APDU (Application Protocol Data Unit, Unit de donnes de protocole dapplication). Voici une image rsumant les appellations de ces units de donnes pour chaque couche du modle TCP/IP et du modle ISO.

Data Unit

Application Prsentation Session

APDU PPDU SPDU TPDU

Applications

Message

Segment Paquet Trame Bits

Transport Rseau Liaison Physique OSI

Transport Internet Accs au rseau TCP/IP

Segment Datagramme Trame

Encapsulation (dcapsulation) des donnes Dans une couche C, le PDU est le SDU (Service Data Unit) de la couche C+1 plus son en-tte (couche C). Quand ce SDU devient un PDU, cest aprs lencapsulation. La couche C ajoute des informations dans len-tte (header) ou le pied (trailer), voire les deux, au SDU afin de le transformer en un PDU. Ce PDU sera alors le SDU de la couche C-1.

PDU
En-tte

SDU

Pied

Dans la procdure de rception, chaque en-tte est enlev lorsque le message grimpe les couches. Cette suppression den-tte cest la dcapsulation. Voici un schma illustrant l'encapsulation des SDUs dans le modle OSI

SDU

Donnes initiales
AH

Application Prsentation

PH

AH

Session

SH

PH

AH

Transport

TH

SH

PH

AH

Rseau

NH H
DH

TH

SH

PH

AH

Liaison

NH

TH

SH

PH

AH

DF

Physique

011101101001001010101001011100100001111111000101010101111 0000

Remarque : Tous ce qui est encadr par un cadre en rouge forment un SDU comme le stipule la lgende.

Les rles des diffrentes couches du modle TCP/IP


a. La couche Accs rseau La couche accs rseau est la premire couche de la pile TCP/IP, elle offre les capacits accder un rseau physique quel qu'il soit, c'est--dire les moyens mettre en uvre afin de transmettre des donnes via un rseau. Ainsi, la couche accs rseau contient toutes les spcifications concernant la transmission de donnes sur un rseau physique, qu'il s'agisse de rseau local (Anneau jeton - token ring, ethernet, FDDI), de connexion une ligne tlphonique ou n'importe quel type de liaison un rseau. Elle prend en charge les notions suivantes : Acheminement des donnes sur la liaison Coordination de la transmission de donnes (synchronisation) Format des donnes Conversion des signaux (analogique/numrique) Contrle des erreurs l'arrive ...

b. La couche Internet La couche Internet est la couche "la plus importante" car c'est elle qui dfinit les datagrammes, et qui gre les notions d'adressage IP. Son rle est de permettre l'injection de paquets dans n'importe quel rseau et l'acheminement de ces paquets indpendamment les uns des autres jusqu' destination. Les paquets sont alors rassembls par cette couche. La couche Internet contient 5 protocoles : Le protocole IP (Internet Protocol) Le protocole ARP (Address Resolution Protocol) Le protocole ICMP (Internet Control Message Protocol) Le protocole RARP (Reverse Address Resolution Protocol) Le protocole IGMP (Internet Group Management Protocol) c. La couche Transport Son rle est le mme que celui de la couche transport du modle OSI : permettre des entits paires de soutenir une conversation. Officiellement, cette couche n'a que deux implmentations : le protocole TCP (Transmission Control Protocol) : un protocole orient connexion qui assure le contrle des erreurs le protocole UDP (User Datagram Protocol) : un protocole non orient connexion dont le contrle d'erreur est peu fiable

d. La couche Application Contrairement au modle OSI, c'est la couche immdiatement suprieure la couche transport. Cette couche contient un nombre trs important de protocoles de haut niveau dont le rle est de fournir des services rseaux volus (Comme Netbios de Microsoft). Voici quelques exemples de protocoles trs utiliss : SMTP (Simple Mail Transfer Protocol) Telnet HTTP (HyperText Transfer Protocol) FTP (File Transfer Protocol)

Les protocoles TCP/IP


Protocoles TCP/IP et le modle OSI Application Prsentation Session Transport Rseau Liaison Physique Dfinitions bref des protocoles HTTP Hyper Text Transfer Protocol : permet laccs aux documents HTML et le transfert de fichiers depuis un site www. FTP File Transfer Protocol : pour le transfert de fichiers sappuie sur TCP et tablit une connexion sur un serveur FTP. Telnet : pour la connexion distance en mulation terminal un hte Unix/Linux. SMTP Simple Mail Transfer Protocol : pour la messagerie lectronique (UDP ou TCP). DNS Domain Name System : permet d'tablir une correspondance entre une adresse IP et un nom de domaine. TCP Transmission Control Protocol TCP fournit un service scuris de remise de paquets. Cest un protocole : fiable, orient connexion, garantit lordre et la remise de paquets, vrifie lintgrit de len-tte des paquets et des donnes quils contiennent, responsable de la retransmission des paquets altrs ou perdus lors de leur transmission IP Ethernet TCP ICMP Token-Ring UDP ARP RIP autres mdias Telnet FTP TFTP HTTP SMTP DNS

Pour garantir la russite de la livraison des donnes, TCP exige que le destinataire accuse rception de donnes. Ces accuss de rception (ACK) gnrent une activit rseau supplmentaire qui diminue le dbit de la transmission des donnes au profit de la fiabilit. Pour limiter limpact de cette contrainte sur la performance, la plupart des htes nenvoient un accus de rception que pour un segment sur deux ou lorsque le dlai imparti pour un ACK expire. Sur une connexion TCP entre deux machines du rseau, les messages(ou paquets TCP) sont acquitts et dlivrs en squence. En-tte TCP

Voici la signification des champs : Port source (16 bits) :Port utilis par lexpditeur du segment. Port destination (16 bits) : Port du destinataire. N Squence ( 32 bits) : Numro de squence du 1er octet de ce segment. Chaque octet est numrot partir dun numro initial (souvent 1). Il est donc possible de connatre la position dun octet par rapport une squence complte. N Accus (32 bits) : Numro du prochain octet recevoir. Lmetteur comprend que tous les octets prcdant ce numro ont bien t reus. Offset (4 bits) : Nombre de mots de 32 bits de lentte (segment sans les donnes). Indique o commencent les donnes utiles. Rserv (6 bits) : Inutilis la plupart du temps Drapeaux (6 bits) : Fentre (16 bits) : Nombre d'octets partir de la position marque dans l'accus de rception que le rcepteur est capable de recevoir sans accus. Checksum (16 bits) : Code derreur calcule sur lensemble du segment + 12 octets prcdents (pseudo-entte) Pointeur de donnes urgentes (16 bits) : Communique la position d'une donne urgente en donnant son dcalage par rapport au numro de squence. Le pointeur doit pointer sur l'octet suivant la donne urgente. Ce champ n'est interprt que

lorsque le Flag URG est marqu 1. Ds que cet octet est reu, la pile TCP doit envoyer les donnes l'application sans attendre. Options (32 bits avec bourrage) : Permettent dajouter des fonctionnalits non prises en charge dans la version native du protocole. Par exemple, loption SACK (Selective Acknowledgment option) qui permet de grer de manire plus rigoureuse les accuss de rception. Bourrage (Bits dont la taille est variable) : Le bourrage sert complter les bits des options pour faire un multiple de 32 bits

UDP User Datagram Protocol UDP est un complment du protocole TCP qui offre un service de datagrammes sans connexion qui ne garantit ni la remise ni lordre des paquets dlivrs. Les sommes de contrle de donnes sont facultatives, ceci permet dchanger des donnes sur des rseaux fiabilit leve sans utiliser inutilement des ressources rseau ou du temps de traitement. Les messages sont transmis de manire autonome sans garantie de livraison Le protocole UDP prend galement en charge lenvoi des donnes dun unique expditeur vers plusieurs destinataires. Champs dun message UDP

Voici la signification des champs : Port source (16 bits) : Correspond au port utilis par lapplication de la station mettrice Port destination (16 bits) : Correspond au port utilis par lapplication de la station rceptrice. Longueur (16 bits) : Le champ Longueur est cod sur 16 bits et il reprsente la taille de l'entte et des donnes. Son unit est loctet et sa valeur maximale est 64 KO. Le contrle derreur (16 bits) : Cod sur 16 bits, il reprsente la validit du paquet de la couche 4 UDP. Il est calcul sur tous les octets du message UDP + les 12 octets prcdents (IP) Donnes (taille variable)

Rle des ports Les serveurs ont une fonction particulire : ils doivent envoyer des informations pertinentes aux clients qui en rclament. Comme un serveur ne convient pas dun rendez-vous avec le client, il doit rester attentif en permanence pour ne pas risquer de rater une question. Pour ce faire, on y installe des daemons , petits programmes qui tournent en tche de fond et qui coutent continuellement sur un numro de port donn. Il ya des conventions pour attribuer ces ports sur des services connus. Par exemple : le port 80 pour http, le port 10 pour POP3, le port 21 pour FTP. En revanche, le client qui met la requte ne dispose pas de port dcoute attir. Ce nest pas un serveur, cest un client ; il na rien donc couter dautre que les rponses ses questions. Il faut donc, lorsque il envoie sa requte, quil spcifie sur quel port il va couter la rponse, de manire ce que le serveur puisse construire une socket efficace pour ladite rponse. Louverture avec succs de deux pages diffrentes ou plus sur un navigateur du mme serveur cause que les deux sessions du navigateur indiquent des ports de rponse diffrents. Cest le NOS du client qui choisit les ports de rponse en fonction de ceux qui sont disponibles sur la machine. Notion de port Un service est rendu par un programme serveur sur une machine. Ce service est accessible travers un rseau TCP/IP par un port. Un port est identifi par un entier (16 bits). Les ports numrots de 0 511 sont les "well known ports" de l'architecture TCP/IP. Ils donnent accs aux services standards de l'interconnexion: transfert de fichiers (FTP port 21), terminal (Telnet port 23), courrier (SMTP port 25), serveur web (HTTP port 80) De 512 1023, on trouve les services Unix. Au-del, (1024 ...) ce sont les ports "utilisateurs" disponibles pour placer un service applicatif quelconque. Un service est souvent connu par un nom (FTP, ...). La correspondance entre nom et numro de port est donne par le fichier /etc/services Voici un tableau de numro de port prdfinis connatre : Service rseau ICMP FTP Telnet SMTP DNS HTTP POP3 N de port 7 21 23 25 53 80 110 Type TCP/UDP TCP TCP TCP TCP/UDP TCP TCP Commentaire Commande ping Transfert de fichiers Connexion via un terminal rseau Envoi de courrier Serveurs de nom de domaine Serveur web Rception de courrier

IP Internet Protocol : Ce protocole est charg de dlivrer des paquets vers une destination. Le chemin parcouru par ces paquets nest pas connu lavance. Ce qui signifie que certains paquets peuvent prendre des routes diffrentes et donc arriver dans le dsordre. Lmetteur doit ordonnancer ces paquets et le rcepteur doit rassembler les paquets pour reconstituer le message original. Ce message original est appel datagramme IP . Ce datagramme qui peut tre de taille variable et sera fragment pour des raisons de performances. En effet, un routeur charg dorienter un paquet vers un autre rseau doit pouvoir traiter un nombre important de paquets venant dexpditeurs diffrents. Fragmenter le datagramme IP revient donc le diviser en plusieurs paquets. Chaque paquet a le mme format que le datagramme dorigine. Lentte de chaque fragment reprend la plupart des informations de lentte dorigine. Chaque paquet a le format suivant :
32 bits Version (4 bits) Longueur Type de service (4 bits) (8 bits) Identification (16 bits) Protocole (8 bits) Longueur totale (16 bits) Dcalage fragment (13 bits)

Drapeau (3 bits)

Dure de vie (8 bits)

Somme de contrle en-tte (16 bits)

Adresse IP source (32 bits) Adresse IP destination (32 bits) Donnes

Voici la signification des champs : Version (4 bits) : 4 pour IPv4 ou 6 pour IPv6 Longueur dentte (4 bits) : Permet de connatre rapidement lendroit o se situe le dbut des donnes du paquet. Type de service ou ToS (8 bits) : Prcise le type de service fourni par les donnes. Peu utilis jusqu larrive de protocoles grant la qualit de service (QoS). La plupart des quipements de backbone nutilise pas ce champ et certains le rinitialise 0. Longueur totale (16 bits) : Longueur totale du paquet (en-tte comprise) Identification (16 bits) : Identificateur de datagramme. Chaque paquet possdant le mme n didentification fait partie du mme datagramme. Drapeaux (3 bits) : donne des indications sur ltat de fragmentation du paquet.

Emplacement fragment (13 bits) : Si le datagramme a t fragment, ce champ indique lemplacement du fragment courant dans lensemble des fragments Temps de vie (8 bits) : Dure de vie du paquet. Lorsquil est 0, le paquet est dtruit. Habituellement, ce champ est dcrment chaque passage par un routeur Numro de protocole (8 bits) : Indique le type de protocole encapsul dans les donnes (0x06 pour TCP). Somme de contrle derreur (16 bits) : Code de contrle derreur de len-tte (Comme le TTL varie chaque passage par un routeur, ce code doit tre recalcul chaque fois) Adresse source et destination (32 bits chacune) : adresse IP de la machine source et la machine destinataire Donnes (<65535 octets) : Donnes du paquet

ICMP Internet Control Message Protocol : ICMP est un protocole de maintenance utilis pour les tests et les diagnostiques, qui vhicule des messages de contrle. Il permet deux systmes dun rseau IP de partager des informations dtat et derreur. La commande ping utilise les paquets ICMP de demande dcho et de rponse un cho afin de dterminer si un systme IP donn dun rseau fonctionne. Cest pourquoi lutilitaire ping est utilis pour diagnostiquer les dfaillances au niveau dun rseau ou des routeurs. RIP Routing Information Protocol : RIP est un protocole de routage dynamique qui permet lchange dinformations de routage sur un inter-rseau. Chaque routeur fonctionnant avec RIP change les identificateurs des rseaux quil peut atteindre, ainsi que la distance qui le spare de ce rseau (nb de sauts= nb de routeurs traverse). Ainsi chacun dispose de la liste des rseaux et peut proposer le meilleur chemin. ARP Address Resolution Protocol : permet de dterminer ladresse physique (ou MAC) dun nud partir de son adresse IP en effectuant une diffusion du type Qui est X.X.X.X ?

Chapitre 3 : Le Middleware
Introduction
Le dialogue entre le client et le serveur permet l'change de la demande et du rsultat cette demande travers le rseau qui relie ces 2 machines. Ce dialogue interprocessus : Inter Process Communication (IPC) s'appuie ct client et ct serveur sur : API : Application Programming Interfaces (interface de programmation au niveau applicatif) FAP : Format And Protocols (protocoles de communication et formats de donnes)

Exemple de dialogue entre client et serveur:


L'application client construit la requte suivante : SELECT libell, date, sujet FROM dossiers WHERE responsable = mon_user et fait appel des fonctions de l'API pour l'envoyer au serveur : fonction 1: remise zro de la zone tampon fonction 2: criture du message de requte, premire partie fonction 3: criture du message de requte, seconde partie mettre la suite du prcdente fonction 4: fermeture de la zone tampon, le message est complet fonction 5: vrification de la syntaxe de la requte (analyse du message par l'API (phrase en ASCII)) si OK : fonction 6: passer la main au FAP pour envoi du message au serveur. L'application se met en attente de la rponse ou effectue une autre tche en attendant de consulter l'API pour rcuprer le rsultat Le FAP : formatage du message : encapsulation du message dans une trame rseau (valise) envoi du message format au serveur : selon le protocole de communication son arriv, le rsultat subit la mme chose en opration inverse

Dfinition
Le middleware est un ensemble de logiciels distribus qui permettent la communication entre lapplication client et lapplication serveur (communication avec OS, services rseaux, ) en changeant des requtes et des rponses de manire transparente. Le middleware doit supporter lhtrognit des diffrents acteurs du processus client/serveur : OS, hardware, rseaux, applications, On peut dire aussi que le middleware permet d'unifier pour les applications l'accs et la manipulation de l'ensemble des services disponibles sur le rseau.

Application
Interface de programmation (API) Middleware Protocoles de communication et formats (FAP)

Protocoles de transports (lis au rseau) Figure: Inter Process Communication ou Middleware FAP (Format And Protocols) pilote les changes travers le rseau en assurant la : o synchronisation des changes selon un protocole de communication o mise en forme des donnes changes selon un format connu de part et d'autre API (Application Programming Interfaces) : les fonctions encapsules dans l'API permettent l'application de faire appel aux services proposs par le serveur

Fonctions dun middleware


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

Middleware et couche OSI :

Couche 7 : application Couche 6 : reprsentation Couche 5 : session Couche 4 : transport Couche 3 : rseau Couche 2 : liaison Couche 1 : physique

API FAP

Les types de middleware selon les fonctions assures (Daprs A. Lefebvre)


Elmentaire gestion du protocole de communication transfert des requtes et des rsultats transmission des codes d'erreurs et de statut Intermdiaire passerelles vers SGBD Etendue catalogue complet des donnes pas de catalogue des support total des appels de donnes fonctions support limit des appels transparences de la de fonctions localisation des donnes administration restreinte administration complte du ou des serveurs des serveurs et des services associs scurit tendue

Chapitre4 : Les Sockets


Introduction
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 L'API (Application Program Interface) la plus utilise est l'API Sockets. Elle offre au dveloppeur un ensemble de primitives pour l'accs la pile de protocoles TCP/IP. Elle est introduite la premire fois dans UNIX BSD4.1 (Berkeley Software Distribution) en 1981.

Dfinition
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 Du ressort du dveloppeur de lapplication Processus client Socket client TCP/IP Matriel Protocole applicatif Processus serveur Socket serveur TCP/IP

Interface daccs au transport

Du ressort du systme dexploitation

Rseau

Matriel

Une Socket est un Tuyau entre deux programmes. On la reprsente par le quintuple (machine1, port1, protocole de transmission, port2, machine2) Un Port :est une entre rseau de la machine sur laquelle un serveur coute en attendant des connexions / requtes un client va se connecter

Sockets UDP
Principe
Mode datagramme Envois de paquets de donnes (datagrammes) Pas de connexion entre parties client et serveur Pas de fiabilit ou de gestion de la communication Un paquet peut ne pas arriver (perdu par le rseau) par exemple : un paquet P2 envoy aprs un paquet P1 peut arriver avant ce paquet P1 (selon la gestion des routes dans le rseau)

Principe de communication La partie serveur cre une socket et la lie un port UDP particulier La partie client cre une socket pour accder la couche UDP et la lie sur un port quelconque Le serveur se met en attente de rception de paquet sur sa socket Le client envoie un paquet via sa socket en prcisant l'adresse du destinataire (Couple @IP/port) Il est reu par le serveur (sauf pb rseau)

Remarque : Si le client envoie un paquet avant que le serveur ne soit prt recevoir : le paquet est perdu

Sockets UDP en Java


Java intgre nativement les fonctionnalits de communication rseau au-dessus de TCPUDP/IP Package java.net Classes utilises pour communication via UDP InetAddress : codage des adresses IP DatagramSocket : socket mode non connect (UDP) DatagramPacket : paquet de donnes envoy via une socket sans connexion (UDP)

1. Classe InetAddress Constructeurs Pas de constructeurs, on passe par des mthodes statiques pour crer un objet Mthodes public static InetAddress getByName(String host) throws UnknownHostException o Cre un objet InetAddress identifiant une machine dont le nom est pass en paramtre o L'exception est leve si le service de nom (DNS...) du systme ne trouve pas de machine du nom pass en paramtre sur le rseau o Si prcise une adresse IP sous forme de chane (''192.12.23.24'') au lieu de son nom, le service de nom n'est pas utilis public static InetAddress getLocalHost() throws UnknownHostException Retourne l'adresse IP de la machine sur laquelle tourne le programme, c'est--dire l'adresse IP locale public String getHostName() : Retourne le nom de la machine dont l'adresse est code par l'objet InetAddress

2. Classe DatagramPacket Structure des donnes en mode datagramme Constructeurs public DatagramPacket(byte[] buf, int length) o Cration d'un paquet pour recevoir des donnes (sous forme d'un tableau d'octets) o Les donnes reues seront places dans buf o length prcise la taille max de donnes lire o Ne pas prciser une taille plus grande que celle du tableau o En gnral, length = taille de buf public DatagramPacket(byte[] buf, int length,InetAddress address, int port) o Cration d'un paquet pour envoyer des donnes (sous forme d'un tableau d'octets) o buf : contient les donnes envoyer o length : longueur des donnes envoyer (Ne pas prciser une taille suprieure celle de buf) o address : adresse IP de la machine destinataire des donnes o port : numro de port distant (sur la machine destinataire) o o envoyer les donnes

Mthodes Mthodes get InetAddress getAddress() o Si paquet envoyer : adresse de la machine destinataire o Si paquet reu : adresse de la machine qui a envoy le paquet int getPort() o Si paquet envoyer : port destinataire sur la machine distante o Si paquet reu : port utilis par le programme distant pour envoyer le paquet byte[] getData : Donnes contenues dans le paquet int getLength() o Si paquet envoyer : longueur des donnes envoyer o Si paquet reu : longueur des donnes reues

Mthodes set void setAddress(InetAdress adr) Positionne l'adresse IP de la machine destinataire du paquet void setPort(int port) Positionne le port destinataire du paquet pour la machine distante void setData(byte[] data) Positionne les donnes envoyer int setLength(int length) Positionne la longueur des donnes envoyer 3. Classe DatagramSocket Socket en mode datagramme Constructeurs public DatagramSocket() throws SocketException o Cre une nouvelle socket en la liant un port quelconque libre o Exception leve en cas de problme (a priori il ne doit pas y en avoir) public DatagramSocket(int port) throws SocketException o Cre une nouvelle socket en la liant au port local prcis par le paramtre port o Exception leve en cas de problme : notamment quand le port est dj occup

Mthodes Mthodes d'mission/rception de paquet public void send(DatagramPacket p) throws IOException o Envoie le paquet pass en paramtre. Le destinataire est identifi par le couple @IP/port prcis dans le paquet o Exception leve en cas de problme d'entre/sortie public void receive(DatagramPacket p) throws IOException o Reoit un paquet de donnes o Bloquant tant qu'un paquet n'est pas reu o Quand paquet arrive, les attributs de p sont modifis o Les donnes reues sont copies dans le tableau pass en paramtre lors de la cration de p et sa longueur est positionne avec la taille des donnes reues o Les attributs d'@IP et de port de p contiennent l'@IP et le port de la socket distante qui a mis le paquet

Autres mthodes public void close() Ferme la socket et libre le port laquelle elle tait lie public int getLocalPort() Retourne le port local sur lequel est lie la socket Rception de donnes : via mthode receive Mthode bloquante sans contrainte de temps : peut rester en attente indfiniment si aucun paquet n'est jamais reu (Possibilit de prciser un dlai maximum d'attente) public void setSoTimeout(int timeout) throws SocketException L'appel de la mthode receive sera bloquante pendant au plus timeout millisecondes Une mthode receive se terminera alors de 2 faons : o Elle retourne normalement si un paquet est reu en moins du temps positionn par l'appel de setSoTimeout o L'exception SocketTimeoutException est leve pour indiquer que le dlai s'est coul avant qu'un paquet ne soit reu SocketTimeoutException est une sous-classe de IOException

Exemple Cot client


InetAddress adr; DatagramPacket packet; DatagramSocket socket; // adr contient l'@IP de la partie serveur adr = InetAddress.getByName("scinfr222"); // donnes envoyer : chane de caractres byte[] data = (new String("youpi")).getBytes(); // cration du paquet avec les donnes et en prcisant l'adresse du serveur // (@IP et port sur lequel il coute : 7777) packet = new DatagramPacket(data, data.length, adr, 7777); // cration d'une socket, sans la lier un port particulier socket = new DatagramSocket(); // envoi du paquet via la socket socket.send(packet); //Rception rponse du serveur, cot client // attente paquet envoy sur la socket du client socket.receive(packet); // rcupration et affichage de la donne contenue dans le paquet String chaine = new String(packet.getData(), 0,packet.getLength()); System.out.println(" recu du serveur : "+chaine);

Cot serveur
DatagramSocket socket; DatagramPacket packet; // cration d'une socket lie au port 7777 DatagramSocket socket = new DatagramSocket(7777); // tableau de 15 octets qui contiendra les donnes reues byte[] data = new byte[15]; // cration d'un paquet en utilisant le tableau d'octets packet = new DatagramPacket(data, data.length); // attente de la rception d'un paquet. Le paquet reu est plac dans // packet et ses donnes dans data. socket.receive(packet); // rcupration et affichage des donnes (une chane de caractres) String chaine = new String(packet.getData(), 0, packet.getLength()); System.out.println(" recu : "+chaine); //Rponse au client, cot serveur System.out.println(" ca vient de :"+packet.getAddress()+":"+ packet.getPort()); // on met une nouvelle donne dans le paquet // (qui contient donc le couple @IP/port de la socket cot client) packet.setData((new String("bien recu")).getBytes()); // on envoie le paquet au client socket.send(packet);

Sockets TCP
Principe
Fonctionnement en mode connect Donnes envoyes dans un tuyau et non pas par paquet Flux de donnes : Correspond aux flux Java dans la mise en oeuvre Java des sockets TCP Fiable : la couche TCP assure que o Les donnes envoyes sont toutes reues par la machine destinataire o Les donnes sont reues dans l'ordre o elles ont t envoyes

Principe de communication
Le serveur lie une socket d'coute sur un certain port bien prcis et appelle un service d'attente de connexion de la part d'un client Le client appelle un service pour ouvrir une connexion avec le serveur. Il rcupre une socket (associe un port quelconque par le systme) Du ct du serveur, le service d'attente de connexion retourne une socket de service (associe un port quelconque) C'est la socket qui permet de dialoguer avec ce client Comme avec sockets UDP : le client et le serveur communiquent en envoyant et recevant des donnes via leur socket

Classes du package java.net utilises pour communication via TCP


InetAddress : codage des adresses IP (mme classe que celle dcrite dans la partie UDP et usage identique) Socket : socket mode connect ServerSocket : socket d'attente de connexion du ct Server

Classe Socket
Socket mode connect Constructeurs public Socket(InetAddress address, int port) throws IOException Cre une socket locale et la connecte un port distant d'une machine distante identifi par le couple address/port public Socket(String address, int port)throws IOException,UnknownHostException Idem mais avec nom de la machine au lieu de son adresse IP code Lve l'exception UnknownHostException si le service de nom ne parvient pas identifier la machine

Mthodes d'mission/rception de donnes Contrairement aux sockets UDP, les sockets TCP n'offre pas directement de services pour mettre/recevoir des donnes. On rcupre les flux d'entre/sorties associs la socket OutputStream getOutputStream() Retourne le flux de sortie permettant d'envoyer des donnes via la socket InputStream getInputStream() Retourne le flux d'entre permettant de recevoir des donnes via la socket

Fermeture d'une socket public close() Ferme la socket et rompt la connexion avec la machine distante

Mthodes get int getPort() Renvoie le port distant avec lequel est connect la socket InetAddress getAddress() Renvoie l'adresse IP de la machine distante int getLocalPort() Renvoie le port local sur lequel est lie la socket public void setSoTimeout(int timeout) throws SocketException Positionne l'attente maximale en rception de donnes sur le flux d'entre de la socket Si temps dpass lors d'une lecture : exception SocketTimeoutException est leve Par dfaut : temps infini en lecture sur le flux

Classe ServerSocket
Socket d'attente de connexion, cot serveur uniquement Constructeurs public ServerSocket(int port) throws IOException Cre une socket d'coute (d'attente de connexion de la part de clients) La socket est lie au port dont le numro est pass en paramtre L'exception est leve notamment si ce port est dj li une socket

Mthodes Socket accept() throws IOException Attente de connexion d'un client distant Quand connexion est faite, retourne une socket permettant de communiquer avec le client : socket de service void setSoTimeout(int timeout) throws SocketException Positionne le temps maximum d'attente de connexion sur un accept Si temps coul, l'accept lve l'exception SocketTimeoutException Par dfaut, attente infinie sur l'accept

Exemple
Ct client
// adresse IP du serveur InetAddress adr = InetAddress.getByName("tecweb2013"); // ouverture de connexion avec le serveur sur le port 7777 Socket socket = new Socket(adr, 7777); // construction de flux objets partir des flux de la socket ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream()); ObjectInputStream input = new ObjectInputStream(socket.getInputStream()); // criture d'une chane dans le flux de sortie : c'est--dire envoi de donnes au serveur output.writeObject(new String("Architecture")); // attente de rception de donnes venant du serveur (avec le readObject) // on sait qu'on attend une chane, on peut donc faire un cast directement String chaine = (String)input.readObject(); System.out.println(" recu du serveur : "+chaine);

Ct serveur
// serveur positionne sa socket d'coute sur le port local 7777 ServerSocket serverSocket = new ServerSocket(7777); // se met en attente de connexion de la part d'un client distant Socket socket = serverSocket.accept(); // connexion accepte : rcupre les flux objets pour communiquer // avec le client qui vient de se connecter ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream()); ObjectInputStream input = new ObjectInputStream(socket.getInputStream()); // attente les donnes venant du client String chaine = (String)input.readObject(); System.out.println(" recu : "+chaine); // affiche les coordonnes du client qui vient de se connecter System.out.println(" ca vient de : "+socket.getInetAddress()+":"+socket.getPort()); // envoi d'une rponse au client output.writeObject(new String("bien recu"));

Sockets UDP ou TCP ?


Le choix entre UDP et TCP est priori simple TCP est fiable et mieux structur Mais intrt tout de mme pour UDP dans certains cas : o Si la fiabilit n'est pas essentielle o Si la connexion entre les 2 applications n'est pas utile Exemple : Un thermomtre envoie toutes les 5 secondes la temprature de l'air ambiant un afficheur distant Pas grave de perdre une mesure de temps en temps Pas grave d'envoyer les mesures mme si l'afficheur est absent

Rfrences bibliographiques Sockets TCP/UDP et leur mise en uvre en Java par Eric Cariou ; Universit de Pau et des Pays de l'Adour, Dpartement Informatique Les sockets java par N. Melab ; Universit de Lille1 Le modle client-serveur par Olivier Aubert chapitre4 : TCP/IP par G.VALET LAPI Socket en JAVA par Cdric Cocquebert Modle OSI et TCP/IP site du zro Architectures client/serveur par Eric Cariou ; Universit de Pau et des Pays de l'Adour,UFR Sciences Pau Dpartement Informatique Application Client/Serveur et Web par M. Le Cocq E,ViennetS,LeNader ; Dpartement R&T, IUT de Villetaneuse - Institut Galile Architecture client-serveur par Yannick Pri ; UFR Informatique, Universit Claude Bernard Lyon 1 UE1-4. Administration des systmes en rseau : Architecture Client/Serveur par Yannick Estve ; Universit du Maine, Institut Claude Chappe