Académique Documents
Professionnel Documents
Culture Documents
1
Couche application : Introduction
Deux processus
Les entités communicantes
s’éxécutant sur deux hôtes
sont des processus différents communiquent
échangeant des messages ou en s'échangeant des
partageant une mémoire messages avec un protocole
de couche application
Un processus est un Processus émetteur /
programme qui s’éxécute sur récepteur
un hôte
Le processus suppose qu'il
Deux processus existe une infrastructure
communiquent dans un même de transport en-dessous
hôte avec des
communications
interprocessus definies par
le système d’exploitation 3
Protocoles applicatifs
Une (grosse) partie des applications
Applications •Web : standards pour les formats de
et protocoles applicatifs documents (HTML), browsers Web,
serveurs Web et le protocole
applicatif HTTP pour définir l'échange
des messages
•Courrier électronique : serveurs de
Applications mails (qui hébergent les boîtes aux
lettres), mail readers, standard pour
S’exécutent dans les hôtes dans le format des mails et protocole
l’espace utilisateur applicatif pour l'échange des messages
Échangent des messages (ex : SMTP)
Ex : email, transfert de fichier, Définissent :
Web
•le format et l'ordre des messages
échangés par les applications,
•les actions consécutives à l'émission
ou la réception d'un message
Certains services sont proposés par
les protocoles de couches inférieures
4
Protocole applicatif
Définit : application
transport
Le type des messages échangés : network
data link
requête, réponse… physical
au serveur request
Pour le Web, le client est implanté
dans le browser ;
Pour l'e-mail, dans le mail reader
reply
Serveur:
application
Propose les services demandés par le transport
network
client data link
physical
Ex : Le serveur Web envoie les pages
Web demandées
8
Socket
Porte d'entrée d'un processus
Interface entre la couche application et la couche transport d'un
hôte
Le développeur contrôle toute la partie application des sockets ;
il n'a que peu de contrôle sur la partie transport (choix du
protocole et éventuellement ajustement de quelques paramètres)
Socket = API Internet
controlled by
controlled by process application
application process
developer
developer socket socket
TCP with TCP with controlled by
controlled by
buffers, operating
operating buffers, internet system
system variables variables
host or host or
server server
9
Protocole applicatif
Adressage des processus
Comment un processus identifie-t-il un processus distant
pour communiquer ?
10
Agent utilisateur
Perte de données
Bande passante
Délai
13
Quel est le service de transport nécessaire
à une application?
Perte de données
15
Quel est le service de transport nécessaire
à une application?
Délai
Certaines applications nécessitent un délai de
bout-en-bout faible (moins de quelques centaines
de ms)
17
Services proposés dans Internet
19
Le Web : jargon
L’Agent Utilisateur
Page Web :
pour le Web est le
Contient des “objets”
browser :
Adressée par une URL
MS Internet Explorer
La plupart des pages Web Netscape Communicator
pages contiennent :
Page HTML de base
Le serveur Web :
Objets référencés
Apache (domaine public)
L’URL a deux composantes : MS Internet
nom d’hôte Information Server
chemin d’accès
www.someSchool.edu/someDept/pic.gif
20
Le Web : le protocole HTTP
HTTP : HyperText
Transfer Protocol
Couche applicative Web PC exécutant
Explorer
Modèle client/serveur
Client : le browser, qui
demande, reçoit,
affiche les objets Web Server
Serveur : le serveur exécutant
Apache
Web, qui envoie les server
réponses aux requêtes
http1.0 : RFC 1945 Mac exécutant
http1.1 : RFC 2068 Netscape
21
Le protocole HTTP
22
Exemple HTTP
Si un utilisateur entre l’URL :
www.someSchool.edu/someDepartment/home.index
24
Connexions Persistantes et Non-persistantes
Non-persistante Persistante
HTTP/1.0 Par défaut dans HTTP/1.1
Le serveur interprète les Une seule connexion TCP
requêtes, répond et ferme est ouverte vers le serveur
la connexion TCP Le client envoie la requête
2 RTTs sont nécessaires de tous les objets requis
pour lire chaque objet dès qu’ils sont réferencés
Chaque transfert doit dans le HTML
supporter le slow-start Moins de RTTs et moins de
Exemple : page contenant : slow start.
1 fichier HTML Deux versions : avec/sans
10 images JPEG pipeline
Ligne de requête
(commandes GET /somedir/page.html HTTP/1.0
GET, POST, HEAD) Host: www.someschool.edu
Connection: close
Lignes User-agent: Mozilla/4.0
d’entête Accept: text/html, image/gif,image/jpeg
Accept-language:fr
Le retour chariot
indique la fin
du message
26
Format de message http : requête
27
Format de message http : réponse
Ligne d'état
(protocole,
code d'état, HTTP/1.0 200 OK
message d'état) Connection: close
Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Lignes
Last-Modified: Mon, 22 Jun 1998 …...
d’entête
Content-Length: 6821
Content-Type: text/html
28
Format de message http : réponse
Status
Line
29
Code de réponse HTTP
Dans la première ligne de la réponse serveur->client.
200 OK
La requête a réussi et l’objet demandé est à la suite
301 Moved Permanently
L’objet demandé a changé définitivement de place, son
nouvel emplacement est donné dans la suite du message
400 Bad Request
La requête est erronée
404 Not Found
Le document demandé n’est pas disponible sur le serveur
505 HTTP Version Not Supported
30
Essayer le serveur http
31
Interaction entre le client et le serveur
Authentification
De nombreux sites demandent un identifiant
et un mot de passe
HTTP fournit des codes et des entêtes d'état
pour permettre l'auhentification
Client : requête
Serveur : 401 Authorization Required
Client : Authorization : …
user name
password
32
Interaction entre le client et le serveur
Cookies
RFC 2109 client server
Le serveur envoie un requête http
“cookie” vers le client dans
la reponse Réponse http +
Set-cookie: #
Set-cookie: 1678453
Le client présente le
cookie dans les requêtes requête http+
suivantes cookie: # Opération
cookie: 1678453 Spécifique
Réponse http au cookie
Le serveur vérifie le cookie
avec ces informations
enregistrées
authentification
Rappel des préférences
utilisateur
33
Utilité des cookies
Serveur nécessitant une authentification,
sans demander systématiquement un
identifiant et un mot de passe
Trace des préférences de l'utilisateur, par
exemple pour faire de la publicité ciblée
Garder une trace des achats de
l'utilisateur lors d'achats en ligne
…
Problème : utilisateurs nomades accédant à
un même site depuis différentes machines
34
GET conditionnel
client serveur
Objectif : ne pas envoyer un
objet que le client a déjà
dans son cache Requête http
Problème : les objets
If-modified-since: objet
contenus dans le cache
<date>
non
peuvent être obsolètes Réponse http modifié
HTTP/1.0
client: spécifie la date de la 304 Not Modified
copie cachée dans la
requête http
If-modified-since:
<date> Requête http
serveur: la réponse est vide If-modified-since:
objet
<date>
si la copie cachée est à jour modifié
HTTP/1.0 304 Not Réponse http
Modified HTTP/1.1 200 OK
…
<data>
35
Cache Web / proxy server
Objectif : satisfaire la requête du client sans utiliser le
serveur initial
origin
Configuration du server
browser pour qu'il
pointe vers le cache Proxy
server
Le client envoie toutes client
ses requêtes HTTP
vers le cache Web
Si l’objet est dans le
cache, on le renvoie
Sinon on demande au
serveur initial et on
répond ensuite à la client
origin
requête server
36
Intérêt du cache Web
origin
servers
Hypothèse : le cache est
proche du client public
Internet
Réduction du temps de
réponse
Réduction du débit 1.5 Mbps
vers les serveurs access link
distants institutional
network
10 Mbps LAN
institutional
cache
37
DNS: Domain Name System
38
Autres services fournis
par le DNS
Host aliasing
Répartition de la charge
40
DNS : Root name servers
Contactés par les serveurs
de noms locaux qui
n'arrivent pas à résoudre ce
nom
Serveur de nom racine :
Contacte le serveur de
nom "authoritative" si la
correspondance
nom/adresse IP n'est
pas connue
Obtient la
correspondance
Renvoie la
correspondance au
serveur de noms local
~ une douzaine de serveurs
de noms racines dans le
monde
41
Exemple de DNS root name server
L'hôte surf.eurecom.fr
veut connaître l'adresse IP 2 4
de gaia.cs.umass.edu 5 3
42
Principe (illustration)
$ telnet m1.centralweb.fr DNS
Demande de résolution
m1.centralwebfr ????
serveur
client DNS
Telnet Réponse
193.148.37.201
serveur
193.148.37.201 DNS
serveur serveur
Telnetd DNS
43
Le domaine
Un domaine est un sous-arbre de l’espace nom de domaine
Domaine complet
fr
Domaine fr
m1 noeud m1.centralweb.fr
sun2.ethernet1.centralweb.fr 193.148.37.201
vers le plus significatif vers le plus significatif
sous-domaine CentralWeb
45
Exemple de DNS root name server
Le serveur de noms 2 6
racine : 7 3
gaia.cs.umass.edu
46
DNS: Requêtes itératives root name server
Requête récursive : 2
iterated query
Confie la tâche de la 3
résolution de nom au 4
serveur de noms
contacté 7
Lourde tâche ? local name server intermediate name server
dns.eurecom.fr dns.umass.edu
Requête itérative : 5 6
1 8
Le serveur de noms
contacté fournit en
authoritative name server
réponse le nom du dns.cs.umass.edu
serveur à contacter requesting host
“Je ne connais pas ce surf.eurecom.fr
nom, mais demande à ce
gaia.cs.umass.edu
serveur”
47
Cache DNS
48
Enregistrements DNS
DNS : BD distribuée stockant des enregistrements de Ressources (Resource Records
- RR)
Type=A Type=CNAME
Nom = hostname Nom = alias à la
Valeur = addresse IP place d’un nom
“canonique” (vrai
Type=NS
Nom = domaine (ex. foo.com) nom)
Valeur = adresse IPdu Valeur = nom
serveur de nom d’origine
pour ce domaine canonique
Type=MX
Valeur = hostname du
serveur de mail associé
au nom
49
DNS : protocole, messages
Protocole DNS : messages de requête et de réponse, avec le
même format de message
50
DNS : protocole, messages
enregistrements pour
les serveurs authoritative
Information "utile"
additionnelle
51
FTP : Protocole de tranfert de fichiers
52
ftp : Connexions séparées
pour le contrôle et les données
Les client FTP contacte le
serveur FTP sur le port 21, en
spécifiant TCP comme
protocole de transport TCP control connection
port 21
Ouverture de 2 connexions
TCP parallèles :
Contrôle : échange des TCP data connection
commandes et des FTP port 20 FTP
réponses entre le client client server
et le serveur
“contrôle hors-bande”
Données : fichiers de
données vers / depuis
l'hôte distant
Le serveur FTP maintient un
"état” : répertoire courant,
authentification précédente 53
FTP : commandes, réponses
Ex de commandes : Ex de réponses :
Envoyées comme du texte status code and phrase (as
ASCII sur le canal de in http)
contrôle
331 Username OK,
USER username
password required
PASS password
125 data connection
LIST renvoie la liste des already open;
fichiers du répertoire transfer starting
courant
425 Can’t open data
RETR filename : connection
rappatrie le fichier (get)
452 Error writing
STOR filename : stocke file
le fichier sur l'hôte distant
(put)
54
Courrier électronique outgoing
message queue
user mailbox
user
3 composants principaux : agent
Agents utilisateurs mail
user
Serveurs de mail server
agent
Simple mail transfer
protocol : smtp
SMTP mail
server user
Agent utilisateur SMTP agent
“mail reader”
Composition, édition, lecture
SMTP
mail user
des messages mail server agent
Ex : Eudora, Outlook, elm,
Netscape Messenger user
Les messages entrants et agent
sortants sont stockés sur le user
serveur agent
55
Courrier électronique : serveurs de mail
Serveurs de mail
user
agent
La boîte aux lettres mail
contient les messages user
server
agent
entrants (à lire) pour
l'utilisateur SMTP mail
server user
File d'attente de messages SMTP agent
mail sortants (à envoyer)
SMTP
mail user
Protocole smtp entre les agent
server
serveurs de mail pour l'envoi
des messages
user
Client : server de mail agent
émetteur user
Serveur : serveur de mail agent
récepteur 56
Courrier électronique : smtp [RFC 821]
Utilise TCP pour transférer des messages mail de façon fiable,
depuis un client vers un serveur, en utlisant de port 25
3 phases de transfert
handshaking (établissement de la connexion)
transfert des messages
Fermeture de la connexion
58
Essayez vous-mêmes !
telnet servername 25
Voir la réponse 220 du serveur
Essayer les commandes HELO, MAIL FROM, RCPT
TO, DATA, QUIT
pour envoyer des mails sans utiliser de client email
(reader)
59
Smtp : quelques mots encore
smtp utilise des connexions Comparaison avec http
persistentes
http : pull
smtp demande que les
messages (en-tête ET corps) Email : push
soient en ASCII
Les 2 ont des interactions
Certaines chaînes de commande/réponse ASCII
caractères ne sont pas et des codes d'état
autorisées dans les messages
(ex : CRLF.CRLF). Les http : chaque objet est
messages doivent alors être encapsulé dans son propre
codés (généralement en message de réponse
base-64) Smtp : Un message
Le serveur smtp utilise contenant plusieurs objets
CRLF.CRLF pour reconnaître est envoyé dans un message
la fin du message "multipart"
60
Format de message mail
Smtp : protocole pour
échanger des messages header
mail blank
RFC 822 : standard pour le line
format de messages
textuels :
Lignes d'en-tête, ex : body
To :
From :
Subject :
différentes des commandes
SMTP !
Corps du message
le “message”, caractères
ASCII uniquement
61
Format de message : extensions multimedia
MIME : multimedia mail extension, RFC 2045, 2056
Lignes supplémentaires dans l'en-tête du message pour
déclarer un contenu de type MIME
From: alice@crepes.fr
MIME version To: bob@hamburger.edu
Subject: Picture of yummy crepe.
Méthode utilisée MIME-Version: 1.0
pour coder les données Content-Transfer-Encoding: base64
Content-Type: image/jpeg
type, sous-type
des données multimédia
base64 encoded data .....
Déclaration de paramètres
.........................
......base64 encoded data
Données codées
62
Types MIME
Content-Type: type/subtype; parameters
Texte Vidéo
Ex de sous-types : plain, Ex de sous-types : mpeg,
html quicktime
Image
Ex de sous-types : jpeg, Application
gif D'autres données doivent
être traitées par le reader
Audio avant d'être "visibles"
Ex de sous-types : basic Ex de sous-types :
(8-bit mu-law encoded), msword, octet-stream
32kadpcm (32 kbps
coding)
63
Type Multipart
From: alice@crepes.fr
To: bob@hamburger.edu
Subject: Picture of yummy crepe.
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=98766789
--98766789
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain
Dear Bob,
Please find a picture of a crepe.
--98766789
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
65
Protocole POP3 S: +OK POP3 server ready
C: user alice
Phase d'autorisation S: +OK
C: pass hungry
Commandes client :
S: +OK user successfully logged on
user: déclare username
pass: password
C: list
S: 1 498
Réponses serveur : S: 2 912
+OK S: .
-ERR C: retr 1
Phase de transaction, S:
S:
<message 1 contents>
.
client : C: dele 1
list: liste les numéros de C: retr 2
messages S: <message 1 contents>
retr: rappatrie un message à S: .
partir de son numéro C: dele 2
dele: efface
C: quit
S: +OK POP3 server signing off
quit
66
Protocole DHCP
Dynamic Host Configuration Protocol
67
Fonctionnement de DHCP
Serveur DHCP :
Distribue les adresses IP
A une adresse IP fixe
Déroulement :
Le client émet en broadcast un paquet de type
DHCPDISCOVER, pour identifier les serveurs DHCP
disponibles ;
Le serveur répond par un paquet DHCPOFFER
(broadcast), qui contient les premiers paramètres ;
Le client établit sa configuration et envoie un
DHCPREQUEST pour valider son adresse IP ;
Le serveur répond par un DHCPAK avec l’adresse IP pour
confirmer l’attribution.
68
DHCP : Allocation dynamique
d'adresses IP
Serveur DHCP
Client DHCP
Serveur DHCP
69
Les baux DHCP
Adresses IP délivrées avec une date de début et une date de
fin de validité : bail.
Demande (par le client) de prolongation du bail :
DHCPREQUEST ;
Proposition de prolongation du bail, lorsque celui-ci expire :
DHCPNAK ;
Optimisation de l’attribution des adresse IP en jouant sur la
durée des baux
Courte durée pour les réseaux où les ordinateurs se branchent
et se débranchent souvent,
Longue durée pour les réseaux constitués en majorité de
machines fixes.
Serveur DHCP le + répandu : développé par l’Internet
Software Consortium.
70
Protocole SNMP
Simple Network Management Protocol
Permet aux administrateurs réseau de
gérer les équipements du réseau.
Permet d’interroger les éléments du réseau sans
se déplacer
Agent SNMP = petit programme installé sur
chaque machine
• Enregistre des informations relatives à la machine
• Informations stockées dans une base de données : la
MIB (Management Information Base)
71
SNMP
Fonctionne au-dessus d’UDP
Modèle client / serveur
1 seul client = station d’administration
Beaucoup de serveurs = chaque agent SNMP
• Chaque agent est placé sur un nœud dit administrable
– Hôtes (stations de travail ou serveurs)
– Éléments d’interconnexion (switchs, hubs, routeurs)
– Supports physiques (câbles)
72
Différents types d’opérations
2 situations possibles :
L’administrateur réseau demande une
information à un agent et obtient une réponse
• Get-request / get-response
• Get-next-request / get-response
• Set-request / get-response
L’agent envoie lui-même une alarme à
l’administrateur lorsqu’un événement particulier
se produit sur le réseau
• trap
73
Protocole et application Telnet
Émulation de terminal à distance :
exécution de commandes saisies au clavier
sur une machine distante
Outil Telnet = implémentation du protocole
Telnet
Environnement client / serveur :
la machine distante est configurée en serveur
Elle attend qu’une machine lui demande un
service
74
Exécution de Telnet
Telnet est fourni en standard sous diverses
plateformes.
75
Commandes sous Telnet
?
Close
Display
Environ
Logout
Mode
Open
Quit
Set
Unset
76
Protocole Telnet
Telnet s’appuie sur une connexion TCP
Protocole de base, sur lequel s’appuient d’autres
protocoles de la suite TCP/IP (FTP, SMTP, POP3,
…)
Les spécifications de Telnet ne mentionnent pas
d’authentification
Protocole de transfert de données non sûr
les données circulent en clair sur le réseau
Utilisation du port 23 pour le serveur Telnet
Spécifications basiques : RFC 854
77
Programmation de Sockets
But : construire des applications client / serveur qui
communiquent en utilisant des sockets
controlled by
controlled by process application
application process
developer
developer socket socket
TCP with TCP with controlled by
controlled by
buffers, operating
operating buffers, internet system
system variables variables
host or host or
server server
79
Programmation de sockets avec TCP
Le client doit contacter le Quand le client crée une
serveur socket : le client TCP établit
Le processus serveur doit une connexion vers le
déjà tourner serveur TCP
Le serveur doit avoir créé Quand il est contacté par le
une socket (porte) qui client, le server TCP crée
accueille le client qui le une nouvelle socket pour que
contacte le processus serveur puisse
communiquer avec le client
Le client contacte le serveur
Permet au serveur de
en :
parler avec plusieurs
Créant une socket TCP clients
locale au client
Spécifiant une adresse IP, Point de vue application
un numéro de port qu TCP fournit un transfert
processus serveur d'octets fiable, dans l'ordre,
entre le client et le serveur
80
Programmation de sockets avec TCP
Exemple d'application client- Input stream: sequence of
server : bytes into process
Le client lit une ligne à partir
Output stream: sequence of
de l'entrée standard
(inFromUser stream) et bytes out of process
l'envoie vers le serveur via sa
socket (outToServer
stream)
Le serveur lit la ligne à partir
de sa socket
Le server convertit la ligne en
majuscules et la renvoie au
client
Le client lit et écrit la ligne
modifée à partir de sa socket client socket
(inFromServer stream)
81
Client/server socket interaction: TCP
Server (running on hostid) Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()
write reply to
connectionSocket read reply from
clientSocket
close
connectionSocket close
clientSocket
82
Exemple : client Java (TCP)
import java.io.*;
import java.net.*;
class TCPClient {
sentence = inFromUser.readLine();
Send line
to server outToServer.writeBytes(sentence + '\n');
clientSocket.close();
}
}
84
Exemple : serveur Java (TCP)
import java.io.*;
import java.net.*;
class TCPServer {
85
exemple : Java serveur (TCP), cont
Create output
stream, attached DataOutputStream outToClient =
to socket new DataOutputStream(connectionSocket.getOutputStream());
Read in line
from socket clientSentence = inFromClient.readLine();
86
programmation socket avec UDP
87
Client/server socket interaction: UDP
Server (running on hostid) Client
write reply to
serverSocket
specifying client read reply from
host address, clientSocket
port umber close
clientSocket
88
exemple : Java client (UDP)
import java.io.*;
import java.net.*;
class UDPClient {
public static void main(String args[]) throws Exception
{
Create
input stream BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Create
client socket DatagramSocket clientSocket = new DatagramSocket();
Translate
InetAddress IPAddress = InetAddress.getByName("hostname");
hostname to IP
address using DNS byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];
90
exemple : Java server (UDP)
import java.io.*;
import java.net.*;
class UDPServer {
public static void main(String args[]) throws Exception
Create {
datagram socket
DatagramSocket serverSocket = new DatagramSocket(9876);
at port 9876
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
Create space for
DatagramPacket receivePacket =
received datagram
new DatagramPacket(receiveData, receiveData.length);
Receive serverSocket.receive(receivePacket);
datagram
91
exemple : Java server (UDP), cont
String sentence = new String(receivePacket.getData());
Get IP addr
InetAddress IPAddress = receivePacket.getAddress();
port #, of
sender int port = receivePacket.getPort();
sendData = capitalizedSentence.getBytes();
Create datagram
DatagramPacket sendPacket =
to send to client new DatagramPacket(sendData, sendData.length, IPAddress,
port);
Write out
datagram serverSocket.send(sendPacket);
to socket }
}
} End of while loop,
loop back and wait for
another datagram
92