Uploaded by ahmed louassef

08.http et e-mail

advertisement
Centre Universitaire d’Aflou
Architecture des réseaux avancés
Présentation #8 : HTTP
Computer Networking
•
Chapter 2 : Section 2.2
Architecture des réseaux avancés : HTTP
• une page web est constituée d'objets, chacun d'entre eux
pouvant être stocké sur différents serveurs web.
• Un objet peut être un fichier HTML, JPEG, Java applet,
audio,…
• Une page web est constituée d'un fichier HTML de base qui
comprend plusieurs objets référencés, chacun adressable par
une URL, par exemple,
Architecture des réseaux avancés : HTTP
Demande de la page
Envoie de la page
Serveur
Client
Architecture des réseaux avancés : HTTP
https://www.cu-aflou.dz/DocPdf/master/master_guide_inscr.pdf
nom_du_protocole://adresse_du_site/chemin_du_repertoire/fichier
• Nom du protocole: Définit le mécanisme de communication utilisé. Le
Web utilise le protocole http.
• Adresse du site: Correspond à l’emplacement du serveur contenant le
site web. L’adresse du serveur est de forme numérique: 161.97.117.156
• Chemin du répertoire: Le répertoire contenant le fichier.
• Fichier: Le nom du fichier désiré.
Architecture des réseaux avancés : HTTP
Client
1
Etablir une connexion
avec le serveur
2
Demander la page
Serveur
Architecture des réseaux avancés : HTTP
• le client établit une connexion TCP (crée un socket) avec le serveur
en utilisant le port 80
• Le serveur accepte la demande de connexion.
• Messages HTTP (messages du protocole de la couche application)
échangés entre le navigateur (client HTTP) et le serveur Web
(serveur HTTP).
• Connexion TCP fermée.
• HTTP is stateless: le serveur ne conserve aucune information sur les
demandes passées des clients.
Architecture des réseaux avancés : HTTP
Non-persistent HTTP
Persistent HTTP
1. Ouverture de connexion
2. Au plus un seul objet est
envoyé et reçu.
3. Fermeture de la connextion.
1. Ouverture de connexion
2. plusieurs objets peuvent être
envoyés sur une seule
connexion TCP entre le client
et le serveur.
3. Fermeture de la connexion.
le téléchargement de plusieurs
objets nécessite plusieurs
connexions.
Architecture des réseaux avancés : HTTP
Utilisateur saisie:
www.cu-aflou.dz/index.html
(contenant du texte et références à 10 images jpeg)
1a. Le client HTTP établit une
connexion TCP avec le serveur
HTTP (processus) à l'adresse
www.cu-aflou.dz sur le port 80.
2. Le client HTTP envoie un
message de demande HTTP
(contenant l'URL) dans le
socket de connexion TCP. Le
time
message indique que le client
veut l'objet index.html
1b. Le serveur HTTP attend une
connexion TCP sur le port 80. Il
"accepte" la connexion et en
informe le client.
3. Le serveur HTTP reçoit le message de
demande, forme le message de
réponse contenant l'objet demandé,
et envoie le message dans son socket.
Architecture des réseaux avancés : HTTP
Utilisateur saisie:
www.cu-aflou.dz/index.html
(contenant du texte et références à 10 images jpeg)
5. Le client HTTP reçoit un message de
4. Serveur HTTP ferme la
connexion.
réponse contenant un fichier html,
affiche le html. Analyse du fichier
html, trouve 10 objets jpeg référencés.
6. Etapes 1-5 répétées pour
chacun des 10 objets jpeg
time
Architecture des réseaux avancés : HTTP
Temps de réponse HTTP (par objet)
• 1 RTT pour initier une connexion.
• un RTT pour la demande HTTP et les
premiers octets de la réponse HTTP à
retourner
• Temps nécessaire à la transmission de
l’object/fichier.
initiate TCP
connection
RTT
request file
time to
transmit
file
RTT
file received
time
Temps de réponse = 2RTT+ temps transmission fichier
Architecture des réseaux avancés : HTTP
time
• Necessite 2 RTTs par object
• Surcharge pour le système d’exploitation.
• Les navigateurs ouvrent souvent plusieurs connexions TCP
parallèles pour récupérer les objets référencés.
Architecture des réseaux avancés : HTTP
• Le serveur laisse la connexion ouverte après avoir envoyé la réponse
• Les messages HTTP ultérieurs entre le même client/serveur sont
envoyés sur une connexion ouverte.
• Le client envoie une requête dès qu'il rencontre un objet référencé.
• Un seul RTT pour tous les objets référencés (réduisant de moitié le
temps de réponse).
Architecture des réseaux avancés : HTTP
GET / HTTP/1.1
Host: www.cu-aflou.dz
Client
HTTP/1.1 200 OK
…
<html> … </html>
Architecture des réseaux avancés : HTTP
Serveur
Message de requête
GET / HTTP/1.1
Host: www.cu-aflou.dz
User-agent: Mozilla/5.0
Connection: Keep-alive
Accept-language: fr
Message de réponse
HTTP/1.1 200 OK
Date: Tue, 01 Mar 2022 00:15:00 GMT
Server: Apache
Content-Length: 189286
Content-Type: text/html
Architecture des réseaux avancés : HTTP
method
sp
URL
header field name
sp
value
version
cr lf
cr lf
header
lines
~
~
~
~
header field name
value
request
line
cr lf
cr lf
~
~
entity body
Architecture des réseaux avancés : HTTP
~
~
body
• 200 OK: Requête acceptée. Les information demandé sont envoyés
avec le message retourné.
• 301 Moved Permanently: L’objet demandé a été transféré. La
nouvelle adresse est envoyé avec le message retourné.
• 400 Bad Request: Mauvaise requête (le serveur n’a pas compris cette
requête).
• 404 Not Found: L’objet demandé n’existe pas.
• 505 HTTP Version Not Supported: Le serveur ne prend pas en
charge la version HTTP utilisé.
Architecture des réseaux avancés : HTTP
• GET: Utilisé pour demander un objet.
• POST: Utilisé quand l’utilisateur envoie des information, comme
remplir un formulaire.
• HEAD: Quand un serveur reçois une requête HEAD, il répond mais
n’envoie aucun objet. Généralement utilisé par les développeurs pour
tester.
• PUT: Permettre à un utilisateur d’envoyer (upload) un objet à un
serveur (répertoire).
• DELETE: Permet de supprimer un objet d’un serveur Web.
Architecture des réseaux avancés : HTTP
stateful protocol: le client apporte
deux modifications à X, sinon aucune.
Comme discuté, HTTP ne conserve
aucune information (stateless)
 aucune notion d'échanges de
messages HTTP en plusieurs étapes
pour achever une transaction Web
• il n'est pas nécessaire que le
client/serveur suive l'état de l'échange en
plusieurs étapes.
• Toutes les requêtes HTTP sont
indépendantes les unes des autres
• Le client/serveur n'a pas besoin de
corriger une transaction partiellement
achevée.
X
X
X’
t’
X’’
X’’
time
time
Q: que se passe-t-il si la connexion réseau ou le
client se bloque au temps t' ?
Architecture des réseaux avancés : HTTP
Les sites Web et le navigateur du client utilisent des cookies
pour conserver certains états entre les transactions.
quatre composantes
1) L’entête du cookie dans la réponse HTTP.
2) L'en-tête du cookie dans le prochain message de requête HTTP
3) Fichier cookie conservé sur l'hôte de l'utilisateur, géré par le
navigateur de l'utilisateur.
4) Base de données du site Web (back-end).
Architecture des réseaux avancés : HTTP
client
serveur
Requête HTTP
Fichier cookie
Réponse HTTP
set-cookie: 1678
amazon 1678
Serveur Amazon
crée ID
1678
entrée
créé
Requête HTTP
spécification
du cookie
cookie: 1678
Réponse HTTP
Base de données
(back-end)
Une semaine
plus tard
accès
Requête HTTP
amazon 1678
spécification
du cookie
cookie: 1678
Réponse HTTP
time
accès
time
Architecture des réseaux avancés : HTTP
Les cookies sont utilisés pour:
• autorisation
• paniers d'achat
• recommendations
• état de session de l'utilisateur (e-mail Web)
Architecture des réseaux avancés : HTTP
Architecture des réseaux avancés : HTTP
1
4
2
GET fichier html de
base nytimes.com
5
récupérer la
publicité AdX.com
7
afficher la page
composée
nytimes.com
HTTP 1
GET
2 HTTP
reply
3
4
6
5
Page du NY Times avec
publicité intégrée affichée
AdX.com
Architecture des réseaux avancés : HTTP
1634: sports, 2/15/22
nytimes.com (sports)
HTTP
GET
“first party” cookie – du
site web que vous avez
choisi de visiter (fournit
le fichier html de base)
HTTP
reply
Set cookie: 1634
HTTP GET
Referer: NY Times Sports
4
“third party” cookie – à
partir d'un site web qu’on
a pas choisi de visiter
7493: NY Times sports, 2/15/22
5
HTTP reply
NY Times: 1634
AdX: 7493
Set cookie: 7493
Architecture des réseaux avancés : HTTP
AdX.com
1634: sports, 2/15/22
AdX:
nytimes.com
socks.com
2
HTTP 1
GET
HTTP GET
Referer: socks.com, cookie: 7493
 suit ma navigation sur
les sites contenant des
publicités AdX
 Renvoie des publicités
ciblées en fonction de
l'historique de navigation
4
7493: NY Times sports, 2/15/22
7493: socks.com, 2/16/22
5
HTTP reply
NY Times: 1634
AdX: 7493
Set cookie: 7493
Architecture des réseaux avancés : HTTP
AdX.com
1634: sports, 2/15/22
1634: arts, 2/17/22
nytimes.com (arts)
socks.com
HTTP
GET
cookie: 1634
HTTP
reply
Set cookie: 1634
HTTP GET
Referer:nytimes.com, cookie: 7493
4
7493: NY Times sports, 2/15/22
7493: socks.com, 2/16/22
7493: NY Times arts, 2/15/22
5
HTTP reply
NY Times: 1634 Set cookie: 7493
AdX: 7493 Renvoie pub pour
chaussettes!
Architecture des réseaux avancés : HTTP
AdX.com
Les cookies peuvent être utilisés pour:
• suivre le comportement des utilisateurs sur un site web donné
(first party cookies).
• suivre le comportement des utilisateurs sur plusieurs sites web
(third party cookies) même que l'utilisateur n’a pas choisi de visiter
le site!
• Le suivi peut être invisible pour l'utilisateur:
• plutôt qu'une publicité affichée déclenchant un HTTP GET vers le tracker, il
pourrait s'agir d'un lien invisible.
third party tracking via cookies:
• Désactivés par défault sur Firefox et Safari.
• sera désactivé sur Chrome en 2023.
Architecture des réseaux avancés : Couche transport
Les Web caches sont utlisés pour satisfaire les demandes des clients
localement (sans passer par le serveur d'origine)
• l'utilisateur configure son
navigateur pour qu'il pointe
2
1 Web
vers un cache Web (local)
cache
client
origin
• le navigateur envoie toutes
4
server
3
5
les requêtes HTTP au cache
• if objet dans le cache : le cache
renvoie l'objet au client
• else cache demande un objet au
serveur d'origine, met en cache
l'objet reçu, puis renvoie l'objet
au client.
6
client
Architecture des réseaux avancés : HTTP
• Le cache web agit à la fois comme client et comme serveur
• serveur pour le client demandeur original
• client pour server d’origine
• Le serveur le cache s’il peut sauvegarder une copie dans l’entête de la
réponse
Architecture des réseaux avancés : HTTP
• Reduire le temps de réponse
• cache est proche du client
• réduire la charge réseau trafic sur la liaison d'accès d'une institution.
• permet aux fournisseurs de contenu (serveur Web) non fiable de
diffuser plus efficacement leur contenu.
Architecture des réseaux avancés : HTTP
Scenario:
•
•
•
•
access link rate: 1.54 Mbps
RTT from institutional router to server: 2 sec
web object size: 100K bits
average request rate from browsers to origin
servers: 15/sec
• avg data rate to browsers: 1.50 Mbps
Performance:
retards
• access link utilization = .97
importants dans
• LAN utilization: .0015
les files d'attente
• end-end delay = Internet delay +
access link delay + LAN delay
= 2 sec + minutes + µsecs
Architecture des réseaux avancés : HTTP
origin
servers
public
Internet
1.54 Mbps
access link
institutional
network
1 Gbps LAN
Scenario:
•
•
•
•
154 Mbps
access link rate: 1.54 Mbps
RTT from institutional router to server: 2 sec
web object size: 100K bits
average request rate from browsers to origin
servers: 15/sec
• avg data rate to browsers: 1.50 Mbps
Performance:
.0097
• access link utilization = .97
• LAN utilization: .0015
• end-end delay = Internet delay +
access link delay + LAN delay
= 2 sec + minutes + usecs
msecs
Coût : liaison d'accès plus rapide (chère !)
Architecture des réseaux avancés : HTTP
origin
servers
public
Internet
154 Mbps
1.54 Mbps
access link
institutional
network
1 Gbps LAN
Scenario
•
•
•
•
access link rate: 1.54 Mbps
RTT from institutional router to server: 2 sec
web object size: 100K bits
average request rate from browsers to origin
servers: 15/sec
• avg data rate to browsers: 1.50 Mbps
Coût : cache web (bon marché !)
Performance
• LAN utilization: .?
• access link utilization = ?
• average end-end delay = ?
origin
servers
public
Internet
1.54 Mbps
access link
institutional
network
Comment calculer
l'utilisation du lien, le retard ?
Architecture des réseaux avancés : HTTP
1 Gbps LAN
local web cache
On suppose:
origin
servers
 40% des demandes sont servies par le cache(msec)
 60% satisfaites par le serveur d’origine
• rate to browsers over access link
= 0.6 * 1.50 Mbps = .9 Mbps
• access link utilization = 0.9/1.54 = .58 means
low (msec) queueing delay at access link
 Délais moyen
= 0.6 * (delay from origin servers)
+ 0.4 * (delay when satisfied at cache)
= 0.6 (2.01) + 0.4 (~msecs) = ~ 1.2 secs
public
Internet
1.54 Mbps
access link
institutional
network
1 Gbps LAN
local web cache
retard moyen à l'arrivée plus faible qu'avec une liaison de 154 Mbps (et moins cher aussi !)
Architecture des réseaux avancés : HTTP
serveur
client
ne pas envoyer l'objet si le
navigateur possède la dernière
version
HTTP request msg
If-modified-since: <date>
• aucun délai de transmission
HTTP response
HTTP/1.0
304 Not Modified
object
not
modifié
avant
<date>
• client: spécifier la date de la copie
en cache dans la requête HTTP
If-modified-since: <date>
• server: aucun objet n’est reçu si la
copie en cache est à jour :
HTTP request msg
If-modified-since: <date>
HTTP/1.0 304 Not Modified
Architecture des réseaux avancés : HTTP
HTTP response
HTTP/1.0 200 OK
<data>
object
modifié
après
<date>
• Le protocole HTTP1.1 permet d’envoyer multiples GETs en pipeline
sur une seule connexion TCP
• Le serveur répond dans l'ordre (FCFS : first-come-first-served) aux
requêtes GET.
• Avec l’algorithme FCFS, un petit objet peut devoir attendre la
transmission d’un ou plusieurs gros objets (Head of Line (HOL)
blocking).
• La récupération des pertes (retransmission des segments TCP
perdus) bloque la transmission des objets
Architecture des réseaux avancés : HTTP
• Le protocole HTTP/2 a été introduit en 2015 [RFC 7540]
• Diminue le délai relatis aux requêtes HTTP multi-objets.
• Offre une flexibilité plus grande aux serveur lors d’envoie des
objets.
• Utilises les même methodes, codes d’etats et presque tous les
champs d’entête que HTTP 1.1.
• Ordre de transmission des objets est basé sur la priorité des objets
spécifiée par le client (pas nécessairement FCFS).
• Envoyer (push) les objets non demandés vers le client.
• Diviser les objets en morceaux afin d’atténuer le blocage HOL.
Architecture des réseaux avancés : HTTP
HTTP 1.1 : le client demande un objet de grande taille (une vidéo) et trois
objets plus petits.
serveur
GET O4
GET O3
GET O2
GET O1
Objects demandés
client
O1
O1
O2
O3
O2
O3
O4
O4
les objets sont livrés dans l'ordre demandé : O2 ,O3 ,O4 attendent derrière O1
Architecture des réseaux avancés : HTTP
HTTP/2: objets divisés en morceaux
serveur
GET O4
GET O3
GET O2
GET O1
Objects demandés
client
O2
O4
O1
O3
O2
O3
O4
O1
O2 ,O3 ,O4 livrés rapidement, O1 légèrement retardé
Architecture des réseaux avancés : HTTP
• HTTP/2 sur une seule connexion TCP signifie :
• la récupération après une perte de paquets bloque toujours toutes
les transmissions d'objets
•
comme dans le protocole HTTP 1.1, les navigateurs sont incités à ouvrir
plusieurs connexions TCP parallèles afin de réduire les blocages et
d'augmenter le débit global.
• aucune sécurité sur une connexion TCP classique
• HTTP/3: Ajoute des mécanismes de sécurité, le contrôle d'erreur et
de congestion par objet (plus de pipelining) sur UDP.
Architecture des réseaux avancés : HTTP
E-mail
user
agent
Trois composantes majeures :
• user agents
• mail servers
• simple mail transfer protocol: SMTP
mail
server
user
agent
SMTP
SMTP
1. User Agent (lecteur d’emails)
• composer, éditer, lire des messages de
courrier
mail
server
• e.g., Outlook, Thunderbird
• messages sortants et entrants stockés sur
le serveur
user
agent
Architecture des réseaux avancés : E-mail
SMTP
mail
server
user
agent
user
agent
user
agent
outgoing
message queue
user mailbox
user
agent
2. mail servers
• mailbox contient les messages
entrants
• message queue file des messages à
envoyer
3. SMTP protocol entre les serveurs
de messagerie pour envoyer des
messages électroniques
•
•
client: serveur d'envoi de courier
server: serveur de réception
mail
server
user
agent
SMTP
SMTP
mail
server
user
agent
Architecture des réseaux avancés : E-mail
SMTP
mail
server
user
agent
user
agent
user
agent
outgoing
message queue
user mailbox
“client”
SMTP server
• protocole d'échange de messages
électroniques, défini dans la RFC 5321
• Utilise TCP, port 25
• Trois phases de transfert
“serveur”
SMTP server
Initier connexion TCP
RTT
Connexion ouverte
• SMTP handshaking (greeting)
• SMTP transfert de messages
• SMTP closure
220
SMTP
handshaking
250 Hello
• interaction commande/réponse (comme HTTP)
• commands: texte ASCII
• response: code d'état et phrase
HELO
SMTP transfer
time
Architecture des réseaux avancés : E-mail
1) Ahmed utilise l'UA pour composer un message
électronique "à" mohamed@someschool.edu.
4) Le client SMTP envoie le message
d'Ahmed via une connexion TCP.
2) L'UA d'Ahmed envoie un message à son serveur
de messagerie à l'aide du protocole SMTP ; le
message est placé dans la file d'attente
5) Le serveur de courrier de
Mohamed place le message
dans la boîte aux lettres
3) côté client du SMTP, le serveur de messagerie
ouvre une connexion TCP avec le serveur de
messagerie de Mohamed.
6) Mohamed invoque son UA
pour lire le message
1
user
agent
2
Ahmed
mail
server
3
user
agent
mail
server
4
Ahmed’s mail server
6
5
Mohamed’s mail server
Architecture des réseaux avancés : E-mail
Mohamed
•
•
•
•
•
•
•
•
•
•
•
•
HELO <domaine> : Initialisation de la session SMTP
MAIL FROM:<route-inverse> : déclaration de l’émetteur du mail
RCPT TO:<route-directe> : déclaration du destinataire du mail
DATA : initialisation de la séquence de saisie des données
RSET : initialisation de la séquence de saisie des données
SEND FROM:<route-inverse> : message direct plutôt que postage.
VRFY <chaîne> : vérification de l’existence d’un destinataire
EXPN <chaîne> : extraction des destinataires inscrits dans une liste de
diffusion
HELP [ <chaîne> ] : demande d’aide (éventuellement sur une commande)
NOOP : aucune opération
TURN : demande d’inversion des rôles d’émetteur et de récepteur
QUIT : clôture de la session SMTP
Architecture des réseaux avancés : E-mail
S:
C:
S:
C:
S:
C:
S:
C:
S:
C:
C:
C:
S:
C:
S:
220 hamburger.edu
HELO crepes.fr
250 Hello crepes.fr, pleased to meet you
MAIL FROM: <alice@crepes.fr>
250 alice@crepes.fr... Sender ok
RCPT TO: <bob@hamburger.edu>
250 bob@hamburger.edu ... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Do you like ketchup?
How about pickles?
.
250 Message accepted for delivery
QUIT
221 hamburger.edu closing connection
Architecture des réseaux avancés : E-mail
comparaison avec HTTP:
• HTTP: client pull-based
• SMTP: client push-based
• HTTP : chaque objet est encapsulé dans son propre message de
réponse.
• SMTP : envoi de plusieurs objets dans un message multipartite
• SMTP utilise des connexions persistantes.
• Le SMTP exige que le message (en-tête et corps) soit en ASCII 7 bits.
• Le serveur SMTP utilise CRLF.CRLF pour déterminer la fin du message.
Architecture des réseaux avancés : E-mail
La RFC 2822 définit la syntaxe du message électronique lui-même
(comme le HTML définit la syntaxe des documents Web).
• header lines, e.g.,
• To:
• From:
• Subject:
• Ces lignes, dans le corps du message
électronique, sont différentes des
commandes SMTP MAIL FROM :, RCPT TO:
• Body: le message en ASCII
Architecture des réseaux avancés : E-mail
header
body
blank
line
user
agent
SMTP
SMTP
e-mail access
protocol
user
agent
(e.g., IMAP,
HTTP)
Serveur e-mail
de l’emetteur
Serveur e-mail
du recepteur
• IMAP: Internet Mail Access Protocol [RFC 3501].
• IMAP permet de récupérer, de supprimer, de classer les messages stockés
sur le serveur.
• HTTP: Gmail, Hotmail, Yahoo!, etc. fournit une interface web en plus de
STMP (pour envoyer), IMAP (ou POP) pour récupérer les messages
électroniques.
Architecture des réseaux avancés : E-mail
Download