Mr A.
Dekhinet
Université BATNA 2 / Département Informatique
[Link]@[Link]
[Link]
Chapitre 5 : Couche Application
1
Introduction
La couche Application
La couche la plus importante et la plus visible dans les réseaux
Les applications réseaux résident dans cette couche
Les utilisateurs finaux interagissent avec le monde de communication (Couches inferieures) via cette couche
Permet de mettre en place des applications distribuées (Applications réseau, Services réseaux) , en utilisant les
services de transport
Les protocoles de la couche application font, en général, partie des applications. Ils ne possèdent pas de GUI, tels
que HTTP, SMTP, FTP, DNS, …
Le protocole de la couche application, à l’instar d’autres protocoles, définit :
o le type de PDU échangé : Requête, Réponse, …
o La syntaxe du message : Les champs
o La sémantique du message : La signification de chaque champs
o Les règles du protocole : Quand et comment les entités paires envoient
et répondent au messages
Exemples d’applications réseau :
E-mail, Web, Messagerie instantanée, Remote login, Partage de fichier P2P,
Jeux réseau , Streaming stored video (Youtube), VoIP (Skype),
Real-time vidéo conférence, IPTV, Réseaux sociaux, …
Mr [Link] 2
Besoins des applications
Besoins des applications : Services
Le choix des services , et par conséquent le protocole adéquat, dépend de la nature de
l’application. Les services fournis aux applications sont divers :
o Transfert fiable de données : Certaines applications nécessitent une fiabilité
maximale (Transfert de fichier/ Download , Transaction BD, Document Web, mail,
…). D’autres peuvent tolérer des pertes (Audio, Vidéo, Jeux,…).
o Timing : Certaines application sont sensibles au timing (Retard, …). Elles exigent une
qualité de service (QOS) et ne tolèrent pas la gigue (variation de la latence), comme
la Voix, les Jeux Interactifs, Real Time Audio/Vidéo, …
o Bande passante : Certaines applications nécessitent un seuil minimal de la bande
passante pour être effectives (Audio: 5Kbps-1Mbps, Vidéo: 10Kbps-5Mbps, Jeux
interactifs : Kbps-10Kbps… ).
o Sécurité : Certaine applications exigent des services et des mécanismes de sécurité
(Cryptographie, Hachage, …). Et ce pour assurer la confidentialité des données,
l’intégreté des données, l’authenticité, … , telles que les transactions bancaires.
Mr [Link] 3
Besoins des applications
Exemples dans TCP/IP
HTTP, FTP, SMTP, Telnet : TCP (Fiabilité)
DNS, TFTP, RTP : UDP (Non fiable)
HTTPS : TLS, SSL (Sécurité)
Mr [Link] 4
Modèles d’Applications
Client/Serveur
Peer-To-Peer
Mr [Link] 5
Un protocole d’Application : HTTP
Un protocole de la couche application : HTTP (HyperText Transfert Protocol)
Versions : HTTP/1.1 RFC 2616, HTTP/1.0 RFC 1945, HTTP/2.0 RFC 7540, HTTP/3.0 RFC 9114
HTTP transporte divers types de données (Objets Web) : Texte, Image, Vidéo, Audio, …
MIME (Multi-purpose Internet Mail Extensions) : Types de données transportées dans Internet
Format : Type/Sous-Type,
Exemple : image/gif, image/jpeg, text/html, application/pdf
Concepts de HTTP
- Client : Navigateur (Browser). Exemple: Microsoft Edge, FireFox, Chrome,…
- HTTP Server : Processus (Daemon) Serveur. Exemple: Apache, IIS, Nginx
- HTML (HyperText Markup Language) : langage de description d’écriture des pages Web
- Page Web : Consiste en un ensemble d’objets
- Objet : Texte, Image, Vidéo, Fichier HTML, Fichier Audio, Applet Java, …
- Un objet est adressable par une URL (Uniform Resource Locator)
Mr [Link] 6
Un protocole d’Application : HTTP
Uniform Resource Locator (URL)
protocol://host-name:port/directory-path/resource
Exemple :
[Link]
protocole = http
host-name = [Link]
Nom du serveur Web de l’Université BATNA 2 qui sera traduit en adresse IP par le DNS.
port = 8080 (Si port non spécifié Alors port = port standard)
directory-path = “/itc”
Chemin relative au répertoire Web dans le serveur (Ex : public_html)
ressource = [Link]
La même ressource peut etre récupurèe par la ligne de commande :
> telnet [Link] 8080
GET /itc/[Link] HTTP/1.1
Mr [Link] 7
Un protocole d’Application : HTTP
HTTP utilise TCP (TSAP= Numéro de port standard 80)
Mode connecté : Connexion TCP, Transfert de données (Messages HTTP), Déconnexion TCP
PDU : Message
HTTP : Client/Serveur
Les processus (Client ou Serveur) sont identifiés par un couple : Adresse IP et Numéro de port
Pourquoi le PID OS n’est pas utilisé pour identifier le processus ?
Stateless : Le serveur ne maintient aucune information (Historique des requêtes) du client, juste les
informations de la requête courante.
RTT (Round Trip Time) : Temps de transfert (Aller et Retour) de PDU de petite taille. Il inclut le temps de
propagation, le temps de traitement et le temps d’attente dans les systèmes intermédiaires
PLT (Page Load Time) : Dépend de la structure et du contenu de la page web (taille des objets, gzip, …) ,
le RTT, la bande passante, HTTP (TCP), …
Amélioration des performances de HTTP : Réduction du PLT
- Persistance de la connexion
- Web cache : Local et Proxy
- Cookies
Mr [Link] 8
HTTP-PDUs
PDU du protocole HTTP
PDU = Message HTTP
Message HTTP : Requête ou Réponse
Les données applicatives (Texte html, image, …) sont encapsulées par un entête (AH) pour former le
message HTTP
L’ entête contient plusieurs champs, repartis sur un ensemble de lignes
La sémantique des champs dépend du type du message HTTP : Requête ou Réponse
Requête : Première ligne = Request line, Entity body= peut être vide (Dépend de la méthode)
Réponse : Première ligne = Status line, Entity body= données (Data)
Mr [Link] 9
HTTP-PDUs
Mr [Link] 10
HTTP-PDUs
Requête HTTP -Request line-
GET /[Link] HTTP/1.1
Connection: Keep-Alive
User-Agent: Mozilla/5.0
Host: [Link]
Accept: image/gif, image/jpeg, */*
Accept-Encoding: gzip
Accept-Language: fr-FR, fr, en
Accept-Charset: iso-8859-1,utf-8
Method
GET, POST (forms), HEAD (Reponse sans objets), PUT, DELETE, TRACE, ...
Connection
Close (Connection non persistante)
Keep-Alive (Connection persistante)
Mr [Link] 11
HTTP-PDUs
Réponse HTTP -Status line-
HTTP/1.1 200 OK
Date: Sun, 20 Jan 2015 20:09:20 GMT
Server: Apache/2.0.52 (CentOS)
Last-Modified: Tue, 30 Oct 2014 17:00:02 GMT
Content-Length: 5086
…………
Content-Type: text/html; charset=ISO-8859-1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
3.2//EN">
<HTML>
<body>Mohamed ……..</body>
</HTML>
Status Codes :
- 200 OK
- 400 Bad Request
- 404 Not Found
- 505 HTTP Version Not Supported
- Etc …
Mr [Link] 12
HTTP-PDUs
Mr [Link] 13
Amélioration des Performances de HTTP
Persistance de la connexion
La connexion HTTP peut être persistante (keep-alive) ou non persistante
HTTP/1.0 : Non persistante
HTTP/1.1 : Par défaut persistante
HTTP/2.0 : Persistant (Multiplexage) basé sur SPDY
HTTP/3.0 : Basé sur QUIC
(Protocole de transport utilisant UDP)
HTTP Non persistant
Etablir connexion TCP
Transférer un objet
Fermeture de la connexion
Temps total de transfert d’un objet
Web = 2RTT + T, T = Temps de transmission de l’objet
Le transfert de plusieurs objets nécessite
plusieurs connexions, 2RTT par objet
Les navigateurs ouvrent , généralement,
des connexions parallèles
Exemple : Un fichier [Link] qui fait référence à
8 objets JPEG. Le processus de transfert s’exécute
9 fois. En négligeant le T, le PLT = 18 RTT
Mr [Link] 14
Amélioration des Performances de HTTP
HTTP Persistant
Etablir la connexion TCP, Envoyer plusieurs objets, Fermeture de la connexion
Plusieurs objets peuvent être transférés par connexion TCP
Réduction de la surcharge du serveur. Le serveur maintient la connexion ouverte après le transfert d’un objet
Permet le pipeline : Persistant avec Pipeline et Persistant sans Pipeline
Persistant sans Pipeline : 1 RTT pour chaque objet
Persistant avec pipeline :
- HTTP/1.1
- Le client émet plusieurs requêtes
- Quand la taille des objets référencés est petite,
un seul RTT leur suffira (Plusieurs PDU par RTT)
- HTTP/2 (Multiplexage)
Mr [Link] 15
Amélioration des Performances de HTTP
Exemple
• Une page web (en HTML) référence avec 10 objets, soient des images de petites taille. référencés.
• On veut calculer le temps total (PLT), de chargement de la page entière par le client, toute en
considérant le type de persistance de la connexion.
• On néglige le temps de transmission de l’objet
• Le temps est exprimé en terme de RTT
HTTP Non-Persistant
2 RTT (Connexion + html) + 2 RTT * 10 (10 Objets) = 22 RTT
Chaque objet 2RTT : Connexion + Objet
HTTP Persistant
2 RTT (Connexion + html) + RTT * 10 (10 Objets) = 12 RTT
Une seule connexion pour tous les objets
HTTP Non-Persistant avec Pipeline (5 objets en parallèle)
2 RTT (Connexion + html) + 2*RTT (Connexion + Objets 1-5) + 2*RTT (Connexion + Objets 6-10) = 6 RTT
Mr [Link] 16
Amélioration des Performances de HTTP
Web cache
Réduire le PLT par réutilisation, en conservant des copies des objets déjà transférés (très) proche du client
Le cache peut être local (Browser) ou système dédié (Proxy)
Browser cache
Maintient un cache local
L’algorithme suivant illustre le principe du cache
Given : A URL for an item on a web page
Obtain : A copy of the item
Method :
if (item is not in the local cache) {
Issue GET request and place a copy in the cache;
} else {
Issue HEAD request to the server;
if (cached item is up-to-date : ) {
use cached item;
} else {
Issue GET request and place a copy in the cache;
}
} /End if
La validité de la copie locale dépend des informations d’expiration : Last-Modified, Etag
Mr [Link] 17
Amélioration des Performances de HTTP
Web proxy
Mise en place d’un intermédiaire (proxy) entre un pool de clients et les serveurs externes
Le proxy peut être une machine dédiée (Appliance), tel que BlueCoat, ou un software, tel que SQUID.
En plus du cache, la politique de sécurité (Les règles) d’un organisme peuvent être définies et assurées par
le proxy
Utilisation des informations de l’entête :
- GET conditionnel
- Le champ if-modified-since
- Le statut 304 Not Modified
- …
Mr [Link] 18
Amélioration des Performances de HTTP
Conditional GET
Les objets à jours ne sont pas transférés
Gain en bande passante
Utilisation du champ : if-modified-since
L’exemple suivant illustre le principe du GET conditionnel
Client 1:
- Le client 1, via son navigateur, envoi une requête HTTP au proxy, demandant l’objet [Link] (image)
- Le proxy, après consultation de son cache, redirige la requête vers le serveur Web
- Le serveur Web envoi une réponse HTTP contenant l’image demandée
- Le proxy cache l’image et l’envoi au client
Après 5 jours
Client 2:
- Un client 2, sur une autre machine, envoi une requête HTTP au proxy, demandant le même
objet [Link]
- Le proxy consulte son cache, et trouve l’objet, mais il doit s’assurer de sa validité (Expiration). Il
envoi une requête HTTP au serveur Web, pour voir si l’objet en question a été mis à jour depuis
la dernière date de mise en cache
- Le serveur Web envoi une réponse HTTP, indiquant la validité de l’objet
- Le proxy envoi une réponse HTTP au client contenant l’objet (l’image) demandée
Mr [Link] 19
Amélioration des Performances de HTTP : Web cache
Mr [Link] 20
Amélioration des Performances de HTTP : Cookies
Cookies
HTTP est un protocole Stateless : Le serveur HTTP ne garde aucune trace (états) du client
Cookies : Mécanisme HTTP de gestion et de maintient des informations d’états du client
Cookies : Petits fragments d’informations (Chaîne de caractères), générés par le serveur, et stockés
dans le client.
Exemples d’informations : Autorisation, Authentification, Carte de Crédit, Préférences client,
Shopping carts, Recommendations, …
La technologie de cookies est fondée sur quatre composants :
- Ligne d’entête dans la réponse HTTP (Set-cookie) :
Set-Cookie: name=value[; expires=date][; domain=domain]
[; path=path][; secure] [; HttpOnly]
- Ligne d’entête dans la requête HTTP (Cookie)
Cookie: name1=value1; name2=value2; ….
- Un fichier cookie stocké dans le client et géré
par le navigateur
- Une base de données potentielle d’arrière
plan, stockée et maintenue par le serveur
Mr [Link] 21
Amélioration des Performances de HTTP : Cookies
Mr [Link] 22
HTTP/2.0
Caractéristiques
Protocole de transfert de données binaires : Binary Framing Layer
Compression d’entête : Header compression
Multiplexage : Plusieurs, par priorité, des requêtes (Stream) sur une seule connexion
Service de serveur PUSH
Supporte TLS en option
Concepts : Stream, Message, Frame
Mr [Link] 23
HTTP/2.0
Mr [Link] 24
HTTP/2.0
Multiplexage
Mr [Link] 25
HTTP/2.0
Server Push
Mr [Link] 26