Vous êtes sur la page 1sur 24

Applications et protocole applicatif

Application: communiquant, application


transport
processus distribués network
data link
? S’exécutent dans les hôtes physical

dans l’« espace utilisateurs »


? Échangent des messages
pour implanter des applis
? e.g., email, transfert de
fichier, le Web
Protocoles applicatifs
application
? Définissent les messages application
transport
transport
network
échangés entre les applis et network
data link
data link
physical
les actions physical

? Certains services sont par


proposés par les protocoles
de couches inférieures
1: Introduction 1

Applications réseaux : le jargon

? Un processus est un ? Un agent utilisateur


programme qui s’éxécute sur est une interface
un hôte
entre l’utilisateur et
? Deux processus communiquent
dans un même hôtes avec des
l’application réseau
communication interprocessus ? Web:browser
defini par le système ? E-mail: eudora, outlook
d’exploitation ? streaming audio/video:
? Deux processus s’éxécutant real player, media
sur deux hôtes communiquent player
avec un protocole de couche
application

1: Introduction 2

1
Paradigme client-serveur
Les réseaux typiques ont deux
application
parties : le client et le serveur transport
network
data link
Client: physical

? Initie le contact avec le


request
serveur (“parle en premier”)
? Typiquement demande un
service du serveur
? Pour le Web, le client est reply
implanté dans le browser; pour
application
le e-mail dans le lecteur de mail transport
network
Serveur: data link
physical

? Propose les services demandés


par le client
? e.g., Le Web serveur envoi les
pages Web demandés l
1: Introduction 3

Protocole applicatif

API: Application Q: Comment un


Programming Interface processus « identifie »
? Défini l’interface entre un processus distant
l’application et la couche pour communiquer
transport ? Adresse IP de l’hôte
distant
? socket: API Internet
? “Numéro de port” –
? Deux processus permet de différencier
communiquent en les différents
émettant et recevant des processus locaux auquel
données via les sockets le message doit être
transmis

1: Introduction 4

2
Quel est le service de transport nécessaire
à une application?
Pertes de données
? Certaines applis (e.g., audio)
peuvent tolérer des pertes
? D’autres applis (e.g., ftp,
telnet) nécessitent une Timing
fiabilité à 100%
? Certaines applis (e.g., voix
sur IP, jeux interactifs)
Bande passante nécessite un délai faible
? Certaines applis (e.g.,
multimedia) requiert une
bande passante minimale
? D’autre applis (“applis
elastique”) utilisent la
bande passante disponible

1: Introduction 5

Besoin en service de transport

Application Pertes Bande passante Sensibilité temp.

Transfer de fichier Sans pertes elastique Non


e-mail Sans pertes elastique Non
Web tolérant elastique Non
Audio/video Temps/réel tolérant audio: 5Kb-1Mb oui, 100’s msec
video:10Kb-5Mb
Audio/video enregistré tolérant similaire oui, quelques secs
Jeux interactifs tolérant Quelques kbps oui, 100’s msec
Applis financiére Sans pertes elastique Oui et non

1: Introduction 6

3
Services proposés dans Internet

Service TCP: Service UDP:


? Orienté connexion: connexion
nécessaire entre le client et
? Transfert de données
le serveur non fiable
? Transport fiable entre le ? Ne propose pas de
processus émetteur et
récepteur connexion, de
? Contrôle de flot: l’émetteur fiabilité, de contrôle
ne submerge pas le récepteur de flot, de contrôle
? Contrôle de Congestion : de congestion, de
réduit le débit de l’émetteur garantie temporel ou
quand le réseau et
congestionné de bande passante
? Ne propose pas: de garanties
de délai ou de bande passante
minimale
1: Introduction 7

Applis Internet: protocols applicatif et transport

Protocole de
Application Protocol applicatif transport

e-mail smtp [RFC 821] TCP


Accès distant telnet [RFC 854] TCP
Web http [RFC 2068] TCP
Transfert de fichier ftp [RFC 959] TCP
streaming multimedia proprietaire TCP or UDP
(e.g. RealNetworks)
Fichier distant NSF TCP or UDP
Voix sur IP proprietaire typically UDP
(e.g., Vocaltec)

1: Introduction 8

4
Le Web: jargon
? L’Agent Utilisateur
? Page Web:
pour le Web est le
? Contient des “objects”
browser:
? Adressé par une URL
? MS Internet Explorer
? La plupart des pages Web ? Netscape Communicator
pages contiennent :
? Le serveur Web:
? Page HTML de base
? Apache (domaine public)
? Objets référencé
? MS Internet
? L’URL a deux composants: Information Server
nom d’hôte et chemin
d’accès

www.someSchool.edu/someDept/pic.gif
1: Introduction 9

Le Web: le protocole HTTP

HTTP: hypertext
transfer protocol htt
p re
que
? Couche applicative Web PC exécutant htt st
p re
Explorer spo
? Modèle client/serveur nse
?client: browser qui
demande, reçoit,
est
affiche les objets Web requ Server
p se
? serveur: serveur Web htt spon exécutant
e
pr Apache
envoit les réponses aux htt
server
requêtes
? http1.0: RFC 1945 Mac exécutant
? http1.1: RFC 2068 Netscape

1: Introduction 10

5
Le protocole HTTP
HTTP: service de HTTP est « sans état »
transport TCP : ? Le serveur ne maintient
aucunes informations au
? Le client initie un connexion sujets des requêtes
TCP (crée une socket) au précédentes des clients
serveur, port 80
? Le serveur accepte la Les protocoles gardant un
connexionTCP du client “état” sont complexe!
? Les messages HTTP ? L’histoire passée doit être
(protocole applicatif) sont gardée
échangés entre le browser ? Si le serveur ou le client se
(client HTTP) et le serveur crashe les états peuvent
Web être inconsistent
? La connexion TCP est close

1: Introduction 11

Exemple HTTP
Si un utilisateur entre l’URL
www.someSchool.edu/someDepartment/home.index

1a. Le client HTTP initie une


connexion TCP au serveur
1b. Le serveur HTTP du site
HTTP sur le site
www.someSchool.edu attend
www.someSchool.edu. Le port
une connexion TCP sur le port
80 est choisi par défaut
80. “accepte” la connexion, et
l’annonce au client
2. Le client HTTP envoit les
requêtes HTTP (contenant des
URLs) par les sockets TCP 3. Le serveur HTTP reçoit le
message de requêtes, génére
les messages de réponse
contenant l’objet requis
(someDepartment/home.index),
et l’envoie sur une socket
time
1: Introduction 12

6
http example (cont.)
4. Le serveur HTTP ferme la
connexion TCP
5. Le client HTTP reçoit la
réponse contenant le fichier
HTML file, l’affiche. En
décodant le fichier le browser
trouve les URLs référés
6. Les étapes 1-5 sont répétés
pour chaque URLs référencés
time

1: Introduction 13

Connexions Persistantes et Non-persistantes

Non-persistante Persistante
? HTTP/1.0 ? Par défaut dans HTTP/1.1

? Le serveur interprète ? Une seule connexion TCP


est ouverte vers le serveur
les requêtes, répond
et ferme la connexion ? Le client envoit la requête
TCP de tout les objets requis
dès qu’ils sont réferenciés
? 2 RTTs sont dans le HTML
nécessaire pour lire ? Moins de RTTs et moins de
chaque objet slow start.
? Chaque transfert doit
supporter le slow-
start
Mais la plupart des navigateurs de version
1.0 utilisent des connexions parallèle
1: Introduction 14

7
Format de message http : requête

? Deux types de messages http : requête, réponse


? message de requête http :
? ASCII

Ligne de requête
(commandes GET /somedir/page.html HTTP/1.0
GET, POST, HEAD) User-agent: Mozilla/4.0
Accept: text/html, image/gif,image/jpeg
Lignes Accept-language:fr
d’entête

Le retour chariot,
indique la fin
du message

1: Introduction 15

Format de message http : requête

1: Introduction 16

8
Format de message http : réponse
Ligne de status
(protocole
Code de status HTTP/1.0 200 OK
Etat) Date: Thu, 06 Aug 1998 12:00:15 GMT
Server: Apache/1.3.0 (Unix)
Last-Modified: Mon, 22 Jun 1998 …...
Lignes
Content-Length: 6821
d’entêtes
Content-Type: text/html

data data data data data ...


données, e.g.,
Le fichier
html

1: Introduction 17

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

1: Introduction 18

9
Essayer le serveur http

1. Telnet à votre serveur web favori


telnet www.eurecom.fr 80
Ouvre une connexion TCP vers le port 80
de www.eurecom.fr.

2. Taper une requête HTTP


GET /~ross/index.html HTTP/1.0

1: Introduction 19

Interaction entre le client et le serveur


: cookies
? Le serveur envoit un client server
“cookie” vers le client dans requête http
la reponse
Set-cookie: 1678453 Réponse http +
Set-cookie: #
? Le client presente le
cookie dans les requêtes
suivantes requête http+
cookie: 1678453 cookie: # Opération
? Le serveur vérifie le cookie
Spécifique
Réponse http au cookie
avec ces informations
enregistrées
? authentification
? Rappel des préférences
utilisateur

1: Introduction 20

10
GET conditionel

? Objectif : ne pas envoyer unclient


server
objet que le clien a déjà
Requête http
dans son cache If-modified-since: object
? client: specifie la date de la <date>
Non
copie cachée dans la Réponse http modifié
requête http HTTP/1.0
If-modified-since: 304 Not Modified
<date>
? serveur: la réponse est vide
si la copie cachée est à jour Requête http
objet
HTTP/1.0 304 Not If-modified-since:
<date>
Modified modifié
Réponse http
HTTP/1.1 200 OK

<data>
1: Introduction 21

Caches Web
Goal: satisfaire la requête du client sans utiliser le
serveur initial
origin
? L’utilisateur pointe son server
navigateur vers le
cache : htt
Proxy
t
p re server eques
? Le client envoit toutes qu est r se
client http p
ses requête http vers res htt espon
pon pr
se
le cache web htt
t
ues htt
? Si l’objet est dans le
p req se p re
que
htt o n htt st
cache, on le retourne p
p res p re
sp
? Sinon on demande au htt on se
serveur initial et on
répond ensuite à la client
origin
requête server

1: Introduction 22

11
Pourquoi le 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

distant institutional
network
10 Mbps LAN

institutional
cache

1: Introduction 23

DNS: Domain Name System

Gens: plusieurs identifiant: Domain Name System:


? NSS, name, # Passeport ? Base de données
Hôte, routeurs: distribuées implantér
? Adresse IP (32 bit) dans plusieurs serveurs
? “nom”, e.g., de nom hiérarchique
gaia.cs.umass.edu
? Protocole applicatif
Q: Comment lier les ? hote, routeurs, serveurs
adresses et les noms ? de nom communique pour
résoudre un nom
? La complexité est
repoussé à la bordure
du réseau
1: Introduction 24

12
DNS name servers
Pourquoi pas de DNS ? Aucun serveur n’a tout les
centralisé? relations nom-vers-@IP
? Tolérance aux pannes serveurs de noms local:
single point of failure ? Chaque ISP, entreprise a
son propre (default) name
? Volume de trafic
server
? maintenance ? Les requêtes DNS vont en
premier au serveur de nom
local
Ne passe pas à l’échelle !
Serveur de nom autorisé
? Effectue les translations
nom/adresse d’un domaine

1: Introduction 25

DNS: Serveurs de racine


? Contacté par le DNS local
si il ne peut faire la
résolution
? Serveurs de racine :
? Contacte le serveur
autorisé (si la
résolution reste
inconnue)
? Trouve la résolution
? Retourne directement
l’adresse au serveur
de nom local
? ~ une douzaine de serveur
de racine de par le monde

1: Introduction 26

13
Simple DNS example root name server

host surf.eurecom.fr
2 4
wants IP address of 3
gaia.cs.umass.edu 5

1. Contacts its local DNS


server, dns.eurecom.fr
2. dns.eurecom.fr contacts local name server authorititive name server
root name server, if dns.eurecom.fr dns.umass.edu
necessary
1
3. root name server contacts 6
authoritative name server,
dns.umass.edu, if
necessary requesting host gaia.cs.umass.edu
surf.eurecom.fr

1: Introduction 27

DNS example root name server

Root name server: 2 6


? may not know 7 3
authoratiative name
server
? may know
intermediate name local name server intermediate name server
server: who to dns.eurecom.fr dns.umass.edu
contact to find 4 5
1
authoritative name 8
server
authoritative name server
dns.cs.umass.edu
requesting host
surf.eurecom.fr

gaia.cs.umass.edu

1: Introduction 28

14
DNS: iterated queries root name server

recursive query: 2
iterated query
? puts burden of name 3
resolution on 4
contacted name
server 7
? heavy load? local name server intermediate name server
dns.eurecom.fr dns.umass.edu
iterated query: 5 6
1
? contacted server
8
replies with name of
authoritative name server
server to contact dns.cs.umass.edu
? “I don’t know this requesting host
name, but ask this surf.eurecom.fr
server”
gaia.cs.umass.edu

1: Introduction 29

DNS: caching and updating records


? once (any) name server learns mapping, it caches
mapping
? cache entries timeout (disappear) after some
time
? update/notify mechanisms under design by IETF
? RFC 2136
? http://www.ietf.org/html.charters/dnsind-charter.html

1: Introduction 30

15
DNS records
DNS: distributed db storing resource records (RR)
RR format: (name, value, type,ttl)

? Type=A ? Type=CNAME
? name is hostname ? name is an alias name
? value is IP address for some “cannonical”
(the real) name
? Type=NS
? value is cannonical
? name is domain (e.g.
foo.com) name
value is IP address of
?
authoritative name server
? Type=MX
for this domain ? value is hostname of
mailserver associated with
name
1: Introduction 31

DNS protocol, messages


DNS protocol : query and reply messages, both with same
message format

msg header
? identification: 16 bit # for
query, repy to query uses
same #
? flags:
? query or reply
? recursion desired
? recursion available
? reply is authoritative

1: Introduction 32

16
DNS protocol, messages

Name, type fields


for a query

RRs in reponse
to query

records for
authoritative servers

additional “helpful”
info that may be used

1: Introduction 33

Socket programming
Goal: learn how to build client/server application that
communicate using sockets

Socket API socket


? introduced in BSD4.1 UNIX,
1981 a host-local, application-
created/owned,
? explicitly created, used,
released by apps OS-controlled interface
(a “door”) into which
? client/server paradigm
application process can
? two types of transport
both send and
service via socket API:
receive messages to/from
? unreliable datagram
another (remote or
? reliable, byte stream-
local) application process
oriented

1: Introduction 34

17
Socket-programming using TCP
Socket: a door between application process and end-
end-transport protocol (UCP or TCP)
TCP service: reliable transfer of bytes from one
process to another

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

1: Introduction 35

Socket programming with TCP


Client must contact server ? When client creates socket:
? server process must first client TCP establishes
be running connection to server TCP
? server must have created ? When contacted by client,
socket (door) that server TCP creates new
welcomes client’s contact socket for server process to
communicate with client
Client contacts server by:
? allows server to talk with
? creating client-local TCP
multiple clients
socket
? specifying IP address, port application viewpoint
number of server process
TCP provides reliable, in-order
transfer of bytes (“pipe”)
between client and server

1: Introduction 36

18
Socket programming with TCP

Example client-server app: Input stream: sequence of


? client reads line from bytes into process
standard input (inFromUser Output stream: sequence of
stream) , sends to server via bytes out of process
socket (outToServer
stream)

iinFromServer
outToServer
? server reads line from socket
? server converts line to
uppercase, sends back to
client
inFromUser
? client reads, prints modified
line from socket
(inFromServer stream) client socket

1: Introduction 37

Client/server socket interaction: TCP


Server (running on hostid) Client
create socket,
port=x, for
incoming request:
welcomeSocket =
ServerSocket()

TCP create socket,


wait for incoming
connection request connection setup connect to hostid, port=x
connectionSocket = clientSocket =
welcomeSocket.accept() Socket()

send request using


read request from clientSocket
connectionSocket

write reply to
connectionSocket read reply from
clientSocket
close
connectionSocket close
clientSocket
1: Introduction 38

19
Example: Java client (TCP)
import java.io.*;
import java.net.*;
class TCPClient {

public static void main(String argv[]) throws Exception


{
String sentence;
String modifiedSentence;
Create
input stream BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));
Create
client socket, Socket clientSocket = new Socket("hostname", 6789);
connect to server
Create DataOutputStream outToServer =
output stream new DataOutputStream(clientSocket.getOutputStream());
attached to socket
1: Introduction 39

Example: Java client (TCP), cont.

Create BufferedReader inFromServer =


input stream new BufferedReader(new
attached to socket InputStreamReader(clientSocket.getInputStream()));

sentence = inFromUser.readLine();
Send line
to server outToServer.writeBytes(sentence + '\n');

Read line modifiedSentence = inFromServer.readLine();


from server
System.out.println("FROM SERVER: " + modifiedSentence);

clientSocket.close();

}
}
1: Introduction 40

20
Example: Java server (TCP)
import java.io.*;
import java.net.*;

class TCPServer {

public static void main(String argv[]) throws Exception


{
String clientSentence;
Create String capitalizedSentence;
welcoming socket
ServerSocket welcomeSocket = new ServerSocket(6789);
at port 6789
while(true) {
Wait, on welcoming
socket for contact Socket connectionSocket = welcomeSocket.accept();
by client
BufferedReader inFromClient =
Create input new BufferedReader(new
stream, attached InputStreamReader(connectionSocket.getInputStream()));
to socket

1: Introduction 41

Example: Java server (TCP), cont

Create output
stream, attached DataOutputStream outToClient =
to socket new DataOutputStream(connectionSocket.getOutputStream());
Read in line
from socket clientSentence = inFromClient.readLine();

capitalizedSentence = clientSentence.toUpperCase() + '\n';


Write out line
outToClient.writeBytes(capitalizedSentence);
to socket
}
}
} End of while loop,
loop back and wait for
another client connection

1: Introduction 42

21
Socket programming with UDP

UDP: no “connection” between


client and server
? no handshaking
? sender explicitly attaches application viewpoint
IP address and port of
destination UDP provides unreliable transfer
of groups of bytes (“datagrams”)
? server must extract IP
between client and server
address, port of sender
from received datagram
UDP: transmitted data may be
received out of order, or
lost

1: Introduction 43

Client/server socket interaction: UDP


Server (running on hostid) Client

create socket, create socket,


port=x, for clientSocket =
incoming request: DatagramSocket()
serverSocket =
DatagramSocket()
Create, address (hostid, port=x,
send datagram request
using clientSocket
read request from
serverSocket

write reply to
serverSocket
read reply from
specifying client
host address, clientSocket
port umber close
clientSocket

1: Introduction 44

22
Example: 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
hostname to IP InetAddress IPAddress = InetAddress.getByName("hostname");
address using DNS byte[] sendData = new byte[1024];
byte[] receiveData = new byte[1024];

String sentence = inFromUser.readLine();


sendData = sentence.getBytes();
1: Introduction 45

Example: Java client (UDP), cont.


Create datagram
with data-to-send, DatagramPacket sendPacket =
length, IP addr, port new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

Send datagram clientSocket.send(sendPacket);


to server
DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
Read datagram
clientSocket.receive(receivePacket);
from server
String modifiedSentence =
new String(receivePacket.getData());

System.out.println("FROM SERVER:" + modifiedSentence);


clientSocket.close();
}
}

1: Introduction 46

23
Example: 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
received datagram DatagramPacket receivePacket =
new DatagramPacket(receiveData, receiveData.length);
Receive serverSocket.receive(receivePacket);
datagram
1: Introduction 47

Example: Java server (UDP), cont


String sentence = new String(receivePacket.getData());
Get IP addr
InetAddress IPAddress = receivePacket.getAddress();
port #, of
sender int port = receivePacket.getPort();

String capitalizedSentence = sentence.toUpperCase();

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
1: Introduction 48

24

Vous aimerez peut-être aussi