Sunteți pe pagina 1din 22

Programmation client-serveur Java

I. Introduction
L'architecture logicielle est le processus de conception de l'organisation globale d'un logiciel, y
compris la division du logiciel en sous-systèmes, en décidant comment ceux-ci interagiront et en
déterminant les interfaces.

L'architecture logicielle joue un rôle central dans l'ingénierie logicielle, et implique le


développement d'une variété de vues de haut niveau sur le système. En outre, les personnes
appelées architectes de logiciels mènent souvent une équipe d'autres ingénieurs logiciels.

L’architecture client/serveur signifie que des machines clientes (des machines faisant partie du
réseau) contactent un serveur, une machine généralement très puissante en termes de capacités
d'entrée-sortie, qui leur fournit des services. Ces services sont des programmes fournissant des
données telles que l'heure, des fichiers, une connexion, etc. Les services internet sont conçus selon
cette architecture. Ainsi, chaque application est composée de logiciel serveur et logiciel client. A
un logiciel serveur, peut correspondre plusieurs logiciels clients développés dans différents
environnements: Unix, Mac, PC...; la seule obligation est le respect du protocole entre les deux
processus communicants.

Le principe clé est que la tâche est divisée ou distribuée entre deux composants logiciels qui
s'exécutent indépendamment sur deux ordinateurs physiquement séparés.

Le modèle n'exige même pas que les composants fonctionnent sur des systèmes d'exploitation ou
de fichiers compatibles. Les programmes client et serveur sont capable de coopérer avec succès
car ils ont été conçus pour être interopérables.

Nous allons dans ce cours faire une présentation générale de l’architecture client-serveur.

1
Programmation client-serveur Java

II. Présentation de l'architecture d'un système client/serveur


Un système distribué est un système dans lequel les calculs sont effectués par des programmes
distincts, qui fonctionnent normalement sur des éléments distincts, qui coopèrent pour exécuter la
tâche du système dans son ensemble. Un serveur est un programme qui fournit un service pour
d'autres programmes qui s'y connectent à l'aide d'un canal de communication. Un client est un
programme qui accède à un serveur. Un client peut accéder à de nombreux serveurs pour effectuer
différentes fonctions, et plusieurs clients peuvent accéder à un serveur simultanément. Un système
client-serveur est un système distribué impliquant au moins un serveur et un client. Un système
peer-to-peer est un système client-serveur dans lequel les programmes peuvent servir de client et
de serveur les uns pour les autres.

La figure suivante illustre un programme serveur communiquant avec deux programmes clients.
Les lignes verticales représentent les trois programmes impliqués. Après la connexion, Client 1
envoie un message, reçoit une réponse et se déconnecte. Le client 2 se connecte alors que le client
1 est toujours connecté; il envoie simplement un message puis se déconnecte. Ce diagramme est
un exemple de diagramme de séquence UML. En général, les composants d'un système client-
serveur interagissent comme suit:

 Le serveur commence à fonctionner.


 Le serveur attend que les clients se connectent. Ce processus d'attente s'appelle l'écoute.
 Les clients commencent à s'exécuter et à effectuer diverses opérations, dont certains
nécessitent se connecter au serveur pour demander un service.
 Lorsqu'un client tente de se connecter, le serveur accepte la connexion s'il est prêt.
 Le serveur attend que les messages arrivent à partir de clients connectés.
 Lorsqu'un message d'un client arrive, le serveur prend une action en réponse, puis reprend
l'attente.
 Les clients et les serveurs continuent de fonctionner de cette manière jusqu'à l'une d'entre
elles décide de fermer.

2
Programmation client-serveur Java

Normalement, l'action prise par le serveur inclut l'envoi d'un message au client. La plupart des
serveurs doivent pouvoir gérer les connexions de nombreux clients et répondre aux messages de
tous les clients connectés. La façon dont cela est accompli sera décrite ci-dessous. Il est possible
que le même programme soit à la fois un client et un serveur en même temps. Par exemple, un
serveur de base de données peut se connecter à un autre serveur afin d'obtenir des données
supplémentaires. Il est également possible que le client et le serveur soient situés sur le même
ordinateur et qu'ils fonctionnent comme des processus distincts. Cependant, il est assez typique
pour qu'ils soient situés sur des ordinateurs distincts, peut-être dans des endroits géographiques
différents.

3
Programmation client-serveur Java

Le tableau 3.1 répertorie certains types importants de systèmes qui utilisent l’architecture client-
serveur.

.Système Client Server


World Wide Web Les navigateurs qui affichent Les serveurs Web qui gèrent
des pages Web et des des ensembles de pages Web
formulaires de publication, (ainsi que des programmes
par exemple Netscape CGI et des servlets) et
Navigator ou Microsoft envoient des informations aux
Internet Explorer navigateurs lorsqu'ils ont
envoyé une URL
Service de messagerie Email Programmes qui lisent et Un programme post-office qui
envoient des courriels. Par reçoit des courriels à partir de
exemple Microsoft Outlook sites distants et le retient
jusqu'à ce qu'un client de
lecture de courrier
électronique soit activé. Le
programme transmet
également le courrier sortant
du client à d'autres sites
Système de fichiers réseau Programmes sur n'importe Un programme dont le but
quel ordinateur qui accède à principal est d'autoriser les
des fichiers sur d'autres clients d'autres ordinateurs à
ordinateurs accéder aux fichiers. Unix
NFS et Novell NetWare sont
des exemples
Système de traitement des Les programmes qui envoient Un programme qui centralise
transactions des demandes spécifiques toutes les fonctions de
pour effectuer une sorte de certaines opérations
transaction, comme le débit commerciales et traite les
transactions à leur arrivée

4
Programmation client-serveur Java

d'un compte bancaire ou la


réservation d'un billet d'avion
Système d'affichage à distance Programmes qui souhaitent Un programme qui gère
afficher des informations sur l'écran et permet aux
l'écran. De nombreux applications, éventuellement
programmes Unix sont exécutées sur d'autres
capables d'afficher des ordinateurs, d'afficher leur
résultats graphiques sur sortie. Un serveur Unix X-
n'importe quel ordinateur Windows est un exemple
exécutant un serveur X- important
Windows
Système de communication Un programme qui permet aux Un programme qui achemine
utilisateurs d'envoyer un les messages. Il peut avoir des
message ou de maintenir une fonctionnalités telles que le
conversation avec les «renvoi» que les gens
utilisateurs sur un autre connaissent du réseau
ordinateur téléphonique
Système de base de données Tout programme d'application Un système de gestion de base
qui souhaite interroger une de données qui répond aux
base de données demandes d'interrogation ou
de mise à jour de la base de
données

5
Programmation client-serveur Java

IV. Les différents types d’architecture client-serveur


1. L’architecture 2-tier
L'architecture à deux niveaux (aussi appelée architecture 2-tier, caractérise les systèmes
clients/serveurs pour lesquels le client demande une ressource et le serveur la lui fournit
directement, en utilisant ses propres ressources. Cela signifie que le serveur ne fait pas appel à une
autre application afin de fournir une partie du service.

2. L’architecture 3-teir
Une variante importante de l'architecture client-serveur est le modèle à trois niveaux sous lequel
un serveur communique à la fois avec un client (habituellement via Internet) et un autre serveur
de base de données (habituellement dans un intranet, pour des raisons de sécurité). Le serveur agit
en tant que client lors de l'accès au serveur de base de données.

3. L’architecture N-tier
Dans l'architecture à 3 niveaux, chaque serveur (niveaux 2 et 3) effectue une tâche (un service)
spécialisée. Un serveur peut donc utiliser les services d'un ou plusieurs autres serveurs afin de
fournir son propre service. Par conséquent, l'architecture à trois niveaux est potentiellement une
architecture à N-tier.

4. L’architecture Peer-to-Peer
Une autre extension du modèle d'architecture client-serveur est le modèle d'architecture Peer-to-
Peer. Un système peer-to-peer est composé de différents composants logiciels qui sont répartis sur
plusieurs hôtes. Chacun de ces composants peut être à la fois un serveur et un client. Tous les deux
composants peuvent configurer un canal de communication pour échanger des informations au
besoin. Figure 9.9 montre une architecture peer-to-peer pour la messagerie instantanée. Les
messages ne doivent plus être envoyés via un serveur central. Toutefois, avant que deux pairs ne
puissent communiquer, ils doivent se découvrir mutuellement. Un serveur central peut encore être
utilisé pour cela.

6
Programmation client-serveur Java

V. Avantages de l'architecture client/serveur


Vous pourriez également avoir un mécanisme autre que la communication client-serveur pour
l'échange d'informations. Par exemple, un programme pourrait écrire un fichier, et un autre
programme pourrait lire le fichier, ou bien les deux programmes pouvaient lire et écrire la même
base de données. Cela pourrait fonctionner pour certains types de communication, mais
entraînerait normalement des programmes plus complexes et plus lents.

Un seul programme qui fait tout peut également être une alternative à un client-serveur système.
Cependant, l'architecture client-serveur peut avoir les avantages suivants:

 Le travail de calcul peut être réparti entre différentes machines.


Les concepteurs peuvent choisir de centraliser certains calculs sur le serveur et distribuer
les autres aux clients. Si tout est fait sur le serveur, alors un ordinateur puissant peut être
nécessaire. D'autre part, si les clients s'occupent de certains calculs, la charge de travail du
serveur sera plus légère.
 Les clients peuvent accéder à la fonctionnalité du serveur à distance.
 Le client et le serveur peuvent être conçus séparément, ils peuvent donc être plus simples
qu'un programme qui fait tout. Le travail de développement peut être fait par des groupes
indépendants, chacun ne s'occupe que d'une partie du système (plus comment le client et
le serveur communiquent). Puisque les groupes peuvent être en mesure de travailler sur le
client et le serveur en parallèle, ils peuvent être en mesure de compléter le Tout le système
plus tôt.

7
Programmation client-serveur Java

 Toutes les données peuvent être conservées centralement sur le serveur, ce qui rend plus
facile d'assurer sa fiabilité. Par exemple, il est plus facile de s'assurer que des sauvegardes
régulières sont effectuées des données d'un serveur unique, plutôt que d'essayer de
sauvegarder séparément les données sauvegardées par plusieurs programmes distincts.
 À l'inverse, la distribution de données entre plusieurs distributions géographiquement
différentes les clients ou les serveurs peuvent signifier que si une catastrophe survient en
un seul endroit, la perte de données est minimisée.
 Les utilisateurs peuvent accéder à l'information simultanément. Il est possible de
accomplissez ceci en utilisant un seul grand programme, mais cette approche tend à être
plus complexe.
 Les clients concurrents peuvent être écrits pour communiquer avec le même serveur, et
vice versa; par exemple, différents navigateurs Web peuvent communiquer avec le même
serveur Web. Cela peut encourager l'innovation.

8
Programmation client-serveur Java

VI. Fonctionnement d'un système client/serveur


Un système client/serveur fonctionne selon le schéma suivant :

 Le client émet une requête vers le serveur grâce à son adresse IP et le port, qui désigne un
service particulier du serveur
 Le serveur reçoit la demande et répond à l'aide de l'adresse de la machine cliente et son
port

1. Fonctionnalités requises lors de la conception d'un serveur


Un serveur doit avoir les principales activités suivantes à effectuer:

1. Le serveur doit s'initialiser afin qu'il puisse fournir le service requis.


Par exemple, un serveur qui gère les réservations de vols peut charger des données
décrivant les vols disponibles.

9
Programmation client-serveur Java

2. Il doit commencer à écouter les clients qui tentent de se connecter. Tant qu’il ne commence
pas à écouter, tout client qui essaie de se connecter ne réussira pas.
3. Il doit gérer les types d'événements suivants provenant de clients, qui peuvent se produire
à tout moment:
 Il accepte les connexions des clients. Ce processus impliquera normalement une
certaine forme de validation pour s'assurer que le client est autorisé à se connecter.
Lorsqu'un client est connecté, le serveur conserve un enregistrement de la connexion.
 Il réagit aux messages des clients connectés. C’est la plus importante chose que le
serveur fait. Dans un serveur de ligne aérienne, un message pourrait être une demande
pour réserver un passager ou une requête pour savoir qui est réservé. En réponse à un
message provenant d'un client, un serveur peut faire plusieurs types de choses, y
compris effectuer des calculs et obtenir des informations. Normalement, le serveur
enverra des informations au client demandeur; il pourrait également envoyer un
message à un autre client ou diffuser des messages à plusieurs clients à la fois.
 Il permet de déconnecter les clients. Un client peut demander la déconnexion en
envoyant un message au serveur ou en se déconnectant simplement; il pourrait
"disparaître" s'il tombe en panne ou si sa connexion au réseau tombe; enfin, le serveur
peut forcer un client à se déconnecter si le client ne se «comporter» pas bien.
4. Le serveur peut être obligé de cesser d'écouter. Cela signifie qu'il n'acceptera plus de
nouvelles connexions client, mais il continuera de desservir actuellement les clients
connectés. Cela peut se produire lorsque le nombre de clients connectés devient trop élevé;
Dans une telle situation, le serveur rejette de nouveaux clients afin qu'il ne manque pas de
ressources telles que la mémoire. Quand il dispose de ressources suffisantes encore une
fois, il peut recommencer à écouter. Le serveur peut également choisir d'arrêter d'écouter
avant la fermeture, permettant aux clients connectés de mettre fin à leur travail.
5. Il doit s’Éteindre proprement, c’est-à-dire Arrêter, si nécessaire. Éteindre proprement
signifie faire des choses telles que la notification de chaque client avant de terminer sa
connexion.

Les activités principales ci-dessus d'un serveur sont illustrées à la figure 3.3, qui est un exemple
d'un diagramme d'état UML.

10
Programmation client-serveur Java

11
Programmation client-serveur Java

2. Fonctionnalités requises lors de la conception d'un client


Un client a les principales activités suivantes à effectuer:

1. Comme le serveur, un client doit s'initialiser de manière à pouvoir communiquer avec le


serveur. Par exemple, il doit connaître l'adresse réseau du serveur.
2. Il effectue un travail qui comprend:
 Prendre une décision pour lancer une connexion à un serveur. Si la connexion au
serveur échoue ou le serveur rejette la connexion, le client peut essayer à nouveau ou
peut abandonner.
 Envoyer des messages au serveur pour demander des services.
3. Il doit gérer les types d'événements suivants provenant du serveur, qui peut se produire à
tout moment:
 Il réagit aux messages provenant du serveur. Souvent, les messages reçus du serveur
alternent avec les messages envoyés au serveur - en d'autres termes, les messages du
serveur répondent aux demandes du client. Parfois, cependant, un message imprévu
peut arriver du serveur. Par exemple, pour annoncer que certaines nouvelles données
sont disponibles ou que le serveur est éteinte.
 Il gère la déconnexion du serveur. Cela pourrait se produire car le le serveur s'est écrasé
ou le réseau a échoué. Cela pourrait aussi se produire parce que le client ou le serveur
a demandé la déconnexion. La question importante est que le le client sait qu'il n'est
plus connecté et prend des décisions en conséquence; une action possible est de tenter
de se reconnecter.
4. Il doit se terminer proprement. Cela inclut la déconnexion d'un serveur s'il est encore
connecté.

Les activités principales ci-dessus d'un client sont illustrées à la figure 3.4, qui montre une
éventuelle séquence d'activités. Notez que le travail «régulier» du client peut doit procéder en
même temps que le processus de réponse aux événements provenant du serveur. Ceci est indiqué
dans la figure 3.4 par les barres horizontales qui montre l'exécution se divisant en deux chemins
distincts. Nous allons le prendre en compte concurrence plus en profondeur dans la prochaine sous-
section. La figure 3.4 est un exemple d'un diagramme d'activité UML.

12
Programmation client-serveur Java

3. Concurrence dans les systèmes client-serveur


Les systèmes client-serveur sont intrinsèquement concurrents car le serveur fonctionne en même
temps que les clients, normalement (mais pas nécessairement) sur différents ordinateurs.

Cependant, il existe un niveau de concurrence supplémentaire du côté client comme du côté


serveur. Comme mentionné ci-dessus, le client effectuera normalement les opérations suivantes
les choses simultanément:

 Attendre les interactions avec l'utilisateur final et répondre lorsque les interactions se
produire.
 Attendre des messages provenant du serveur et en réponse aux messages arrivée.

Ceux-ci doivent généralement être mis en œuvre à l'aide de multiples threads de contrôle qui peut
être exécuté simultanément. Sans ce mécanisme, lorsque le client est en attente d'un type de
contribution, il ne sera pas en mesure de répondre à l'autre type de contribution. Une exception à
cela peut se produire chez les clients qui n'ont pas besoin d'interagir avec l'utilisateur de quelque
manière que ce soit. De même, le serveur devrait normalement avoir des threads simultanés qui
devraient effectuer les opérations suivantes:

 Attendre des interactions avec l'utilisateur responsable du serveur, et répondre si


nécessaire. Comme pour le client, certains serveurs peuvent se dispenser l’interaction avec
l'utilisateur, mais la plupart d'entre eux auront besoin d'un thread pour gérer les commandes
de contrôles de base.
 Attendre que les clients essayent de se connecter et d'établir les connexions au besoin.

13
Programmation client-serveur Java

 Pour chaque client connecté, attendre les messages provenant de ce client, et répondre
quand les messages arrivent.

Les serveurs fonctionnent normalement avec au moins deux threads simultanés, et en général n +
2 threads où n est le nombre de clients connectés. Figure 3.5 illustre les différents threads
s'exécutant dans un système client-serveur typique. Dans ce diagramme un seul client (client A)
est affiché communicant avec le serveur; cependant, un thread pour un deuxième client dormant
(client B) est également affiché.

14
Programmation client-serveur Java

4. Systèmes Client-léger et Client-lourd


Le travail d'un système client-serveur peut être distribué de différentes façons.

Dans un système client léger, le client est aussi petit que possible et la plupart du travail se fait sur
le serveur. Dans l'approche opposée, appelée système de client-lourd, le plus de travail possible
est délégué aux clients. Les deux approches sont illustrées à la figure 3.6.

Un avantage important d'un système client léger est qu'il est facile à télécharger le programme
client sur le réseau et le lancer. En Java, les applets sont généralement des clients légers, car il est
souhaitable qu'ils se téléchargent rapidement. Un avantage des systèmes de client-lourd est que,
puisque plusieurs opérations sont distribuées aux clients, une meilleure utilisation est faite des
ressources informatiques disponibles; le serveur peut par conséquent, soit plus petit ou être conçu
pour gérer plus de clients.

Une des principales considérations dans le choix entre un client léger et un client lourd est avec
quelle intensité le système utilisera le réseau pour communiquer - faire un mauvais choix peut
parfois entraîner un réseau surchargé.

En fonction de la nature du système, l’utilisation, soit d’un client léger ou d’un client lourd peut
prendre le moins de ressources réseau. Dans certains cas, un système client léger peut avoir besoin
de communiquer le moins parce qu'il envoie généralement seulement de simples requêtes
utilisateur au serveur. D'autre part, un client léger pourrait avoir besoin de communiquer avec le
serveur beaucoup plus fréquemment qu'un client lourd et pour téléchargez des résultats
volumineux des opérations du serveur.

15
Programmation client-serveur Java

5. Messages dans un système client-serveur: protocoles de communication


Les types de messages que le client est autorisé à envoyer au serveur forment un langage.

Le serveur doit être programmé pour comprendre ce langage. De même, un autre langage est
constitué par les types de messages que le serveur est autorisé à envoyer au client. Lorsqu'un client
et un serveur communiquent, ils ont effectivement une conversation utilisant ces deux langages.
Comme pour une conversation humaine, il doit y avoir des règles pour s'assurer, par exemple, que
les parties communicantes prennent un tour pour parler. Les règles décrivent également les
séquences de messages que le client et le serveur doivent échanger, afin de parvenir à un accord
sur quelque chose ou accomplir une autre tâche.

Les deux langages et les règles de la conversation, prises ensemble, s'appellent le protocole. La
conception des protocoles peut être très complexe; dans des systèmes simples, tels que ceux
discutés dans ce cours, le protocole n'est qu'une liste de demandes service et leurs réponses.

16
Programmation client-serveur Java

VII. Les Bases de la Communication Réseau


Les ordinateurs qui sont utilisées sur Internet se communiquent à l'aide du protocole TCP
(Transmission Control Protocol) ou du protocole UDP (User Datagram Protocol UDP), comme le
montre ce diagramme:

Dans cette partie nous allons présenter ces deux protocoles et voir comment les protocoles TCP et
UDP sont différents.

6. Le protocole TCP
TCP (Transmission Control Protocol) est un protocole de connexion qui fournit un flux de données
fiable entre deux ordinateurs.

Lorsque deux applications souhaitent se communiquer mutuellement de manière fiable, elles


établissent une connexion et envoient des données sur cette connexion. Ceci est analogue à l'appel
téléphonique. Si vous voulez parler à la Tante Beatrice à Thiès, une connexion est établie lorsque
vous composez son numéro de téléphone et qu'elle répond. Vous envoyez des données en avant et
en arrière sur la connexion en se basant sur les lignes téléphoniques. Comme la compagnie de
téléphone, TCP garantit que les données envoyées d'une extrémité de la connexion arrivent
réellement à l'autre extrémité et dans le même ordre qu'elles ont été envoyées. Sinon, une erreur
est signalée.

TCP fournit un canal point à point pour les applications nécessitant des communications fiables.
Le protocole de transfert hypertexte (HTTP), le protocole de transfert de fichiers (FTP) et Telnet
sont des exemples d'applications nécessitant un canal de communication fiable. L'ordre dans lequel

17
Programmation client-serveur Java

les données sont envoyées et reçues sur le réseau est essentiel au succès de ces applications.
Lorsque HTTP est utilisé pour lire à partir d'une URL, les données doivent être reçues dans l'ordre
dans lequel elles ont été envoyées. Sinon, vous recevez un fichier HTML erroné, un fichier zip
corrompu ou une autre information non valide.

18
Programmation client-serveur Java

7. Le protocole UDP
UDP (User Datagram Protocol) est un protocole qui envoie des paquets indépendants de données,
appelés datagrammes, d'un ordinateur à l'autre sans garantie quant à l'arrivée. UDP n'est pas basé
sur la connexion comme TCP.

Le protocole UDP prévoit une communication qui n'est pas garantie entre deux applications sur le
réseau. UDP n'est pas basé sur la connexion comme TCP. Plutôt, il envoie des paquets de données
indépendants, appelés datagrammes, d'une application à une autre. L'envoi de datagrammes
ressemble beaucoup à l'envoi d'une lettre par le service postal: l'ordre de livraison n'est pas
important et n'est pas garanti, et chaque message est indépendant de l'autre.

Pour de nombreuses applications, la garantie de fiabilité est essentielle au succès du transfert


d'informations d'une extrémité de la connexion à l'autre. Cependant, d'autres formes de
communication n'exigent pas de normes aussi strictes.

Considérons, par exemple, un serveur d'horloge qui envoie l'heure actuelle à son client lorsque
cela est demandé. Si le client manque un paquet, il n'est pas vraiment logique de le renvoyer car le
temps sera incorrect lorsque le client le recevra sur le deuxième essai. Si le client effectue deux
requêtes et reçoit des paquets du serveur hors service, cela n'a pas d'importance car le client peut
comprendre que les paquets sont en panne et font une autre demande. La fiabilité de TCP n'est pas
nécessaire dans ce cas car elle entraîne une dégradation des performances et peut entraver l'utilité
du service.

Un autre exemple d'un service qui n'a pas besoin de garantir un canal fiable est la commande ping.
Le but de la commande ping est de tester la communication entre deux programmes sur le réseau.
En fait, ping doit connaître les paquets abandonnés ou hors-commande pour déterminer la bonne
ou la mauvaise connexion. Un canal fiable invaliderait complètement ce service.

Le protocole UDP prévoit une communication qui n'est pas garantie entre deux applications sur le
réseau. UDP n'est pas basé sur la connexion comme TCP. Plutôt, il envoie des paquets
indépendants de données d'une application à une autre. L'envoi de datagrammes ressemble
beaucoup à l'envoi d'une lettre par le biais du service de messagerie: l'ordre de livraison n'est pas
important et n'est pas garanti, et chaque message est indépendant de tout autre.

Remarque:

19
Programmation client-serveur Java

De nombreux parefeux (firewall) et routeurs ont été configurés pour ne pas permettre les paquets
UDP. Si vous rencontrez des difficultés pour vous connecter à un service en dehors de votre pare-
feu ou si des clients ont du mal à vous connecter à votre service, demandez à votre administrateur
système si UDP est autorisé.

20
Programmation client-serveur Java

8. Comprendre les ports


D'une manière générale, un ordinateur a une connexion physique unique au réseau. Toutes les
données destinées à un ordinateur particulier arrivent à travers cette connexion. Cependant, les
données peuvent être destinées à différentes applications s'exécutant sur l'ordinateur. Alors,
comment l'ordinateur sait-il quelle application transmettre les données ? Grâce à l'utilisation des
ports.

Les données transmises sur Internet s'accompagnent d'une information qui identifie l'ordinateur et
le port pour lequel elle est destinée. L'ordinateur est identifié par son adresse IP 32 bits, que l'IP
utilise pour fournir des données au bon ordinateur sur le réseau. Les ports sont identifiés par un
numéro de 16 bits, que TCP et UDP utilisent pour fournir les données à la bonne application.

Dans une communication basée sur la connexion telle que TCP, une application serveur lie un
socket à un numéro de port spécifique. Cela a pour effet d'enregistrer le serveur avec le système
pour recevoir toutes les données destinées à ce port. Un client peut alors se retrouver avec le
serveur sur le port du serveur, comme illustré ici:

Les protocoles TCP et UDP utilisent des ports pour mapper les données entrantes vers un processus
particulier exécuté sur un ordinateur.

Dans la communication basée sur des datagrammes tels qu’UDP, le paquet de datagramme
contient le numéro de port de sa destination et UDP achemine le paquet vers l'application
appropriée, comme illustré sur cette figure:

21
Programmation client-serveur Java

Les numéros de port vont de 0 à 65 535 car les ports sont représentés par des nombres de 16 bits.
Les numéros de port allant de 0 à 1023 sont restreints; ils sont réservés pour être utilisés par des
services bien connus tels que HTTP et FTP et d'autres services système. Ces ports s'appellent des
ports connus. Vos applications ne devraient pas essayer de se lier à elles.

22

S-ar putea să vă placă și