Vous êtes sur la page 1sur 22

Université Sidi Mohamed Ben Abdellah

Fa ulté des S ien es Fès

Programmation Réseau
Cou he Transport et so ket

Chakir LOQMAN

19/05/2021

Chakir LOQMAN FSDM Fès


Introdu tion
Cou he transport
So kets

Plan

1 Introdu tion

2 Cou he transport
Ports
Transport Control Proto ol (TCP)
User Datagram Proto ol (UDP)

3 So kets
Prin ipes des so kets
Fon tionnement des so kets
Les so kets TCP

Chakir LOQMAN FSDM Fès


Introdu tion
Cou he transport
So kets

Introdu tion
Dénition
La ou he dite de transport onstitue la quatrième ou he du modèle OSI.
Cette ou he regroupe l'ensemble des proto oles hargés de la gestion des
erreurs et du ontrle des ux réseaux.
Les deux prin ipaux proto oles utilisés sont les proto oles TCP et UDP.

Rle
Le rle de la ou he transport est de
rendre possible la ommuni ation
logique entre appli ations. En anglais,
on parle de logi al end-to-end
ommuni ation.

Chakir LOQMAN FSDM Fès


Introdu tion Ports
Cou he transport Transport Control Proto ol (TCP)
So kets User Datagram Proto ol (UDP)

Port
Port
En fait, l'adresse IP du serveur ne sut pas, ar le serveur (ma hine
physique) peut omporter diérents servi es ; il faut pré iser le servi e
demandé au moyen d'un numéro de port, qui permet d ?atteindre un
pro essus parti ulier sur la ma hine serveur.
À haque extrémité ( lient/serveur) de la onnexion TCP est asso ié un
numéro de port sur 16 bits (de 1 à 65535) assigné à l'appli ation émettri e
ou ré eptri e.
Ces ports sont lassés en trois atégories :
Les ports bien onnus sont assignés par l'IANA (Internet Assigned Numbers
Authority) dans la plage 0-1023, et sont souvent utilisés par des pro essus
système ou ayant des droits privilégiés.
Proto ol FTP SSH SMTP HTTP
Port 21 22 25 80
Les ports enregistrés sont généralement utilisés par des appli ations
utilisateur omme ports sour es éphémères pour se onne ter à un serveur.
Les ports dynamiques/privés peuvent aussi être utilisés par des appli ations
utilisateur, mais plus rarement.

Chakir LOQMAN FSDM Fès


Introdu tion Ports
Cou he transport Transport Control Proto ol (TCP)
So kets User Datagram Proto ol (UDP)

Proto ol TCP
Dénition
TCP, Transmission Control Proto ol, ore des servi es d ?établissement et
de n de dialogue ainsi que des messages de maintenan e de la
ommuni ation en mode able et onne té ave :
des a usés de ré eption
du séquença e, de l'ordonnan ement
du ontrle de ux (fenêtrage)
de la reprise sur erreur
du ontrle de ongestion
de la temporisation

Chakir LOQMAN FSDM Fès


Introdu tion Ports
Cou he transport Transport Control Proto ol (TCP)
So kets User Datagram Proto ol (UDP)

Proto ol UDP

Dénition
UDP, User Datagram Proto ol, s'o upe uniquement du transport non
able.
Il est une simple passerelle entre IP et l'appli ation.
Il est onseillé pour les appli ations pour du tra en temps réel à taille xe
et régulier (voix, vidéo).
Il supporte des proto oles simples (TFTP, SNMP) ou sourant des délais
(DHCP, DNS, NTP).

Chakir LOQMAN FSDM Fès


Introdu tion Ports
Cou he transport Transport Control Proto ol (TCP)
So kets User Datagram Proto ol (UDP)

TCP & UDP

UDP
TCP
UDP : une ommuni ation de type ourrier
TCP : une ommuni ation de type
téléphone Mode non onne té : pas de proto ole
Mode onne té : proto ole de
de onnexion (plus rapide)
prise de onnexion (lent) Ave perte : l'émetteur n'est pas
assuré de la délivran e
Sans perte : un message arrive au
moins un fois Ave dupli ation : un message peut
arriver plus d'une fois
Sans dupli ation : un message
arrive au plus une fois Sans fragmentation : les messages
envoyés ne sont jamais oupés, soit un
Ave fragmentation : les messages
message arrive entièrement, soit il
peuvent être oupés
n'arrive pas
Ordre respe té : messages délivrés
Ordre non respe té : messages
dans l'ordre d'émission
délivrés dans l'ordre d'arrivé

Chakir LOQMAN FSDM Fès


Introdu tion
Prin ipes des so kets
Cou he transport
Les so kets TCP
So kets

So ket

Dénition
Une So ket est une API (interfa e logi ielle) ave les servi es du système
d'exploitation, qui permet d'exploiter fa ilement et de manière uniforme
les servi es d'un proto ole réseau.
So ket : mé anisme de ommuni ation bidire tionelle entre pro essus

Chakir LOQMAN FSDM Fès


Introdu tion
Prin ipes des so kets
Cou he transport
Les so kets TCP
So kets

So ket
So ket
une so ket est un point de ommuni ation par lequel un pro essus peut
émettre et re evoir des données.
Cara téristiques des so kets :
Domaine : Ce i séle tionne la famille de proto ole à employer. (AF_INET)
ou (AF_INET6)
Type : datagram (SOCK_DGRAM) ou onne té(SOCK_STREAM)
Proto ole : UDP pour une so ket de type SOCK_DGRAM et TCP pour
une so ket de type SOCK_STREAM

Chakir LOQMAN FSDM Fès


Introdu tion
Prin ipes des so kets
Cou he transport
Les so kets TCP
So kets

So kets en mode onne té

Cté Serveur
Cté Client
1 rée une so ket
2 asso ie une adresse à la so ket
1 rée une so ket
3 se met à l'é oute des onnexions
2 se onne te au serveur
entrantes
3 lit et é rit dans la so ket
4 a epte une onnexion entrante
4 ferme la so ket
5 lit et é rit sur la so ket

6 ferme la so ket

Chakir LOQMAN FSDM Fès


Introdu tion
Prin ipes des so kets
Cou he transport
Les so kets TCP
So kets

So kets en mode onne té

Chakir LOQMAN FSDM Fès


Introdu tion
Prin ipes des so kets
Cou he transport
Les so kets TCP
So kets

API Java TCP

API Java
Java déni plusieurs lasses de so kets suivant le proto ole :
TCP : ServerSo ket et So ket
UDP : DatagramSo ket

La lasse ServerSo ket Exemple


La lasse ServerSo ket est utilisée ServerSo ket so ket = new ServerSo ket( PORT );
té serveur do {
So ket servi e = so ketAttente. a ept ();
Elle attend simplement les appels // onnexion établie
du ou des lients // la ommuni ation est désormais possible
servi e . lose ();
Un objet de ette lasse est } while ( true );
asso ié à un port sur lequel il va so ketAttente. lose ();
attendre les onnexions d'un lient

Chakir LOQMAN FSDM Fès


Introdu tion
Prin ipes des so kets
Cou he transport
Les so kets TCP
So kets

La lasse ServerSo ket

Constru teur
La lasse ServerSo ket possède plusieurs onstru teurs dont les prin ipaux
sont :
Constru teur Rle
ServerSo ket() Constru teur par défaut
ServerSo ket(int) Créer une so ket sur le port fourni en paramètre
ServerSo ket(int, int) Créer une so ket sur le port et ave la taille maximale
de la le fournis en paramètres

Méthode
La lasse ServerSo ket possède plusieurs méthodes :
Méthode Rle
So ket a ept() Attendre une nouvelle onnexion
void lose() Fermer la so ket

Chakir LOQMAN FSDM Fès


Introdu tion
Prin ipes des so kets
Cou he transport
Les so kets TCP
So kets

Serveur TCP/IP

import java . io . DataInputStream;


import java . io . DataOutputStream;
import java . io . IOEx eption;
import java . net . ServerSo ket;
import java . net . So ket ;
publi l a s s Server {
publi s t a t i void main ( String [℄ test ) throws IOEx eption {
ServerSo ket ss = new ServerSo ket(1026);
System . out . println (" En attent de onnexion..." );
So ket s= ss . a ept ();
System . out . println (" onnexion établie " );
// a eptation du flus entrant
DataInputStream in1= new DataInputStream(s. getInputStream());
String nomClient= in1. readUTF ();
// traitement de la donnée
String str =" Bienvenu "+ nomClient+" , t 'es bien onne té ";
// envoie de la reponse
DataOutputStream out= new DataOutputStream(s. getOutputStream());
out . writeUTF ( str );
}
}

Chakir LOQMAN FSDM Fès


Introdu tion
Prin ipes des so kets
Cou he transport
Les so kets TCP
So kets

Le ture d'o tets : InputStream


InputStream
Le pendant de la lasse OutputStream est la lasse InputStream. Cette lasse
abstraite est la base des lasses de le ture des ux d'o tets. Elle est étendue :
FileInputStream pour la le ture dans des  hiers ;
ByteArrayInputStream pour la le ture dans des tableaux d'o tets ;
DataInputStream pour la le ture des types primitifs Java ;
Obje tInputStream pour la le ture des objets sérialisés.

Exemple Exemple
import java . io .*; String ount ;
publi l a s s Test { while (( ount =d. readLine ())!= n u l l ){
p u b l i s t a t i void main ( String args [℄)
String u = ount . toUpperCase();
throws IOEx eption{ System . out. println (u );
DataInputStream d= new DataInputStream( new
out . writeBytes(u + " ," );}
FileInputStream(" test . txt " ));
d. lose ();
DataOutputStream out= new DataOutputStream(
out . lose ();}}
new FileOutputStream(" test1 . txt " ));

Chakir LOQMAN FSDM Fès


Introdu tion
Prin ipes des so kets
Cou he transport
Les so kets TCP
So kets

La lasse So ket
La lasse So ket
Les so kets implémentent le proto ole TCP (Transmission Control
Proto ol)
La lasse ontient les méthodes de réation des ux d'entrée et de sortie
orrespondants.
Cette lasse en apsule la onnexion à une ma hine distante par le réseau.
Elle gère la onnexion, l'envoi de données, la ré eption de données et la
dé onnexion

Exemple
So ket servi e = new So ket ( " 127.0.0.1" , PORT );
// onnexion établie
// la ommuni ation est désormais possible
// on ra ro he
servi e . lose ();

Chakir LOQMAN FSDM Fès


Introdu tion
Prin ipes des so kets
Cou he transport
Les so kets TCP
So kets

La lasse So ket
Constru teur
La lasse So ket possède plusieurs onstru teurs dont les prin ipaux sont :
Constru teur Rle
So ket() Constru teur par défaut
So ket(String, int) Créer une so ket sur la ma hine dont le nom et le port
sont fournis en paramètres
So ket(InetAddress, int) Créer une so ket sur la ma hine dont l'adresse IP et le
port sont fournis en paramètres

Méthode
La lasse So ket possède de nombreuses méthodes dont les prin ipales sont :

Méthode Rle
InetAddress getInetAddress() Renvoie l'adresse I.P. à laquelle la so ket est onne tée
void lose() Fermer la so ket
InputStream getInputStream() Renvoie un ux en entrée pour re evoir les données de la
so ket
OutputStream getOutputS- Renvoie un ux en sortie pour émettre les données de la
tream() so ket
int getPort() Renvoie le port utilisé par la so ket

Chakir LOQMAN FSDM Fès


Introdu tion
Prin ipes des so kets
Cou he transport
Les so kets TCP
So kets

Client TCP/IP

import java . io . DataInputStream;


import java . io . DataOutputStream;
import java . io . IOEx eption;
import java . net . So ket ;
import java . net . UnknownHostEx eption;
publi l a s s Client1 {
p u b l i s t a t i void main ( String [℄ args ) throws
UnknownHostEx eption ,
IOEx eption {
So ket lient = new So ket (" 127.0.0.1" ,1026);
System . out . println (" Nom du lient " );
S anner s = new S anner ( System . in );
String nomClient= s . next ();
// envoie des données au serveur
DataOutputStream out= new DataOutputStream( lient . getOutputStream());
out. writeUTF ( nomClient);
// ré uperetaion des données envoyées par le serveur
DataInputStream in = new DataInputStream( lient . getInputStream());
String resp = in . readUTF ();
System . out . println ( resp );
}
}

Chakir LOQMAN FSDM Fès


Introdu tion
Prin ipes des so kets
Cou he transport
Les so kets TCP
So kets

Exer i e 1
Exer i e 1
Développer une appli ation lient/serveur. Le lient transmet un nombre entier
au serveur, ensuite le serveur al ul son fa toriel et retransmet le résultat au
lient.

fact(3) =?

fact(3) = 6

Chakir LOQMAN FSDM Fès


Introdu tion
Prin ipes des so kets
Cou he transport
Les so kets TCP
So kets

Exer i e 1
Solution Server
import java . io . DataInputStream;
import java . io . DataOutputStream;
import java . io . IOEx eption;
import java . net . ServerSo ket;
import java . net . So ket ;
publi l a s s Server {
p r i v a t e s t a t i long fa toriel( i n t n) {
i f (n == 0 || n == 1) { return 1;
} e l s e i f (n == 2) { return 2;
} else {
return n * fa toriel(n - 1);
}}
publi stati void main ( String args [℄) throws IOEx eption {
ServerSo ket server = new ServerSo ket(2009);
So ket so ket = server . a ept ();
DataInputStream in = new DataInputStream( so ket . getInputStream());
i n t number = in . readInt ();
System . out . println (" Nombre reçu sur le serveur = " + number );
DataOutputStream out = new DataOutputStream( so ket . getOutputStream());
out. writeLong( fa toriel( number ));
out. flush ();
out. lose ();
}}

Chakir LOQMAN FSDM Fès


Introdu tion
Prin ipes des so kets
Cou he transport
Les so kets TCP
So kets

Exer i e 1
Solution Client
import java . net . InetAddress;
import java . net . So ket ;
import java . net . UnknownHostEx eption;
import java . util . S anner ;
publi l a s s Client {
p u b l i s t a t i void main ( String args [℄) {
try {
So ket so ket = new So ket ( InetAddress. getLo alHost() , 2009);
DataOutputStream out = new DataOutputStream( so ket . getOutputStream());
S anner s = new S anner ( System . in );
System . out . print (" Entrez un nombre : " );
i n t number = s . nextInt ();
out. writeInt ( number );
out. flush ();
DataInputStream in = new DataInputStream( so ket . getInputStream());
System . out . println ("\ nfa t (" + number + ") = " + in . readLong ());
} at h ( UnknownHostEx eption ex ) {
ex . printSta kTra e();
} at h ( IOEx eption ex ) {
ex . printSta kTra e();
}
}}

Chakir LOQMAN FSDM Fès


Introdu tion
Prin ipes des so kets
Cou he transport
Les so kets TCP
So kets

FIN

Chakir LOQMAN FSDM Fès

Vous aimerez peut-être aussi