Vous êtes sur la page 1sur 299

Partie 2 : Applications de

lInternet de type Client/Serveur


Olivier GLCK
Universit LYON 1/Dpartement Informatique
Olivier.Gluck@univ-lyon1.fr
http://perso.univ-lyon1.fr/olivier.gluck

Copyright

Copyright 2014 Olivier Glck; all rights reserved


Ce support de cours est soumis aux droits dauteur et nest
donc pas dans le domaine public. Sa reproduction est
cependant autorise condition de respecter les conditions
suivantes :

Si ce document est reproduit pour les besoins personnels du


reproducteur, toute forme de reproduction (totale ou partielle) est
autorise la condition de citer lauteur.
Si ce document est reproduit dans le but dtre distribu des tierces
personnes, il devra tre reproduit dans son intgralit sans aucune
modification. Cette notice de copyright devra donc tre prsente. De
plus, il ne devra pas tre vendu.
Cependant, dans le seul cas dun enseignement gratuit, une
participation aux frais de reproduction pourra tre demande, mais elle
ne pourra tre suprieure au prix du papier et de lencre composant le
document.
Toute reproduction sortant du cadre prcis ci-dessus est interdite
sans accord pralable crit de lauteur.

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

Remerciements

Certains transparents sont bass sur des


supports de cours de :

Olivier Aubert (LYON 1)

Olivier Fourmaux (UPMC)

Bndicte Le Grand (UPMC)

Des figures sont issues des livres cits en


bibliographie

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

Bibliographie

Rseaux , 4ime dition, Andrew Tanenbaum, Pearson


Education, ISBN 2-7440-7001-7
La communication sous Unix , 2ime dition, Jean-Marie
Rifflet, Ediscience international, ISBN 2-84074-106-7
Analyse structure des rseaux , 2ime dition, J. Kurose et
K. Ross, Pearson Education, ISBN 2-7440-7000-9
TCP/IP Illustrated Volume 1, The Protocols , W. R. Stevens,
Addison Wesley, ISBN 0-201-63346-9
TCP/IP, Architecture, protocoles, applications , 4ime
dition, D. Comer, Dunod, ISBN 2-10-008181-0
Internet

http://www.w3.org/
http://www.rfc-editor.org/ (documents normatifs dans TCP/IP)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

Plan de la partie 2

Introduction / Rappel

Connexions distance (telnet/rlogin/rsh/ssh/X11)

Applications de transfert de fichiers (FTP/TFTP)

Accs aux fichiers distants (NFS/SMB)

Gestion d'utilisateurs distants (NIS)

DNS : un annuaire distribu

LDAP : un annuaire fdrateur scuris

La messagerie lectronique (SMTP/POP/IMAP)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

Introduction / Rappels

La couche application

La couche application

gre les logiciels utilisateurs (applications) en


s'appuyant sur les services de bout en bout dfinis
dans les couches de niveau infrieur
repose gnralement sur le modle Client/Serveur
(modle requte/rponse)
supporte les environnements htrognes

On distingue l'application et le protocole applicatif

le protocole applicatif dfinit les changes entre les


parties cliente et serveur de l'application
une interface (API) permet au protocole applicatif
d'utiliser les services de bout-en-bout fournis par un
protocole de transport sous-jacent

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

Quel service de transport ?

Socket = interface entre le processus applicatif et


le protocole de transport

Ct metteur : l'application envoie des messages par


la porte
De l'autre ct de la porte, le protocole de transport
doit dplacer les messages travers le rseau, jusqu'
la porte du processus rcepteur

De nombreux rseaux (dont Internet) fournissent


plusieurs protocoles de transport

Lequel choisir lorsqu'on dveloppe une application ?


tude des services fournis par chaque protocole
Slection du protocole qui correspond le mieux aux
besoins de l'application

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

Quel service de transport ?

Faut-il choisir le train ou l'avion pour faire Paris/


Nice ?

tout dpend des critres du voyageur (rapidit,


confort, scurit, prix, arrive en centre ville)

3 types de besoins au niveau des applications :

fiabilit du transfert (S'autorise t-on perdre quelques


donnes ? Dans quelle proportion ?)
bande passante (Quelle est la taille minimale du tuyau
de communication ?)
dlai : latence et gigue (variation du dlai)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

Quel service de transport ?

Fiabilit du transfert

Certaines applications ncessitent une fiabilit 100%


Courrier lectronique (SMTP)
Transfert de fichiers (FTP)
Accs distant (Telnet)
Transfert de documents Web (HTTP)
Applications financires
D'autres peuvent tolrer des pertes (loss-tolerant
applications)
Applications multimdia : audio/vido (une perte
d'une faible quantit de donnes n'induit qu'une petite
irrgularit dans l'coute ou la vision du film)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

10

Quel service de transport ?

Bande passante

Certaines applications requirent une bande passante


minimale
Tlphonie sur Internet : si la voix est code 32
Kbps, les donnes doivent tre transmises et reues
ce dbit
Applications multimdia
Dautres utilisent la bande passante disponible
(applications lastiques)
Courrier lectronique, transfert de fichiers, accs
distant, Web
Plus il y a de bande passante, mieux c'est !

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

11

Quel service de transport ?

Dlai (contraintes temporelles)

Certaines applications ncessitent un dlai de bouten-bout faible (moins de quelques centaines de ms)

Applications temps rel interactives :

Tlphonie sur Internet

Environnements virtuels

Tlconfrence

Jeux en rseau

Pour les application non temps rel, un dlai court est


prfrable, mais pas de contrainte forte

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

12

Quel service de transport ?


Application
Transfert de fichiers
e-mail
Pages Web
Audio/vido
temps rel
Audio/vido
enregistr
Jeux interactifs
Applis financires

Olivier Glck - 2014

Sensibilit temp.
Non
Non
Non
Oui, 100s ms

tolrant

Bande passante
lastique
lastique
lastique
audio: 5Kb - 1Mb
vido:10Kb - 5Mb
idem

tolrant
sans perte

quelques Kbps
lastique

Oui, 100s ms
Oui et non

Pertes
sans perte
sans perte
sans perte
tolrant

Oui, quelques s

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

13

Services proposs dans Internet


Service TCP :
Service UDP :
orient connexion : connexion
transfert de donnes non
ncessaire entre le client et le
fiable
serveur
ne propose pas
transport fiable entre le
de connexion,
processus metteur et rcepteur
de fiabilit,
de contrle de flot,
contrle de flot : lmetteur ne
de contrle de congestion,
submerge pas le rcepteur
de garantie temporelle,
contrle de congestion : rduit
de bande passante
le dbit de lmetteur quand le
beaucoup plus simple que
rseau est congestionn
TCP (UDP=IP) donc plus
ne propose pas :
rapide
de garantie de dlai,
pas de limitation du dbit
de bande passante minimale
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

14

Principales applications Internet


Application
e-mail
Accs distant
Web
Transfert de fichiers
Streaming multimedia
Serveur Fichiers
Voix sur IP

Olivier Glck - 2014

Protocole de
Protocole applicatif
transport
SMTP [RFC 821,2821] TCP
telnet [RFC 854]
TCP
HTTP [RFC 2068,2616] TCP
FTP [RFC 959]
TCP
propritaire
TCP ou UDP
NFS
TCP ou UDP
propritaire
En gnral UDP

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

15

Principales applications Internet


HTTP
Numro de
port (dans

l'en-tte TCP
ou UDP)

FTP

TELNET SMTP

DNS

port=21
port=25
port=80
port=23
port=53

TCP

ICMP

BOOTP

...

port=161
port=67 ou 68

UDP

proto=6
proto=1

SNMP

proto=17

IP

Identifiant de protocole
(dans l'en-tte IP)

ARP

RARP

Tous les ports sur http://www.iana.org/


assignments/port-numbers
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

16

Applications de connexion distance


Principes
telnet, rlogin, rsh, ssh, X11

Connexions distance

Application permettant un utilisateur de se


connecter (prendre partiellement le contrle)

sur un ordinateur distant ( partir d'un terminal local)


pourvu que cet utilisateur dispose d'un accs autoris
cette machine
excution de commandes saisies localement au clavier
sur une machine distante
les environnements local et distant peuvent tre
htrognes (windows-->unix, )
Client

mulation de terminaux :
Serveur =
machine distante
Olivier Glck - 2014

Prsentation

Logique

telnetd
Donnes

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

18

Connexions distance

Plusieurs protocoles

telnet : le standard (existe sur de nombreuses


plate-formes)
rlogin : uniquement entre machines unix
ssh : scuris (authentification + cryptage), peut
transporter le DISPLAY

Besoin de l'application : inter-activit

tout ce qui est tap au clavier sur le client est envoy


sur la connexion au serveur
tout ce qui est envoy par le serveur vers le client, sur
la connexion, est affich dans le terminal

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

19

Connexions locales

Fonctionnement d'une connexion locale


stdin

ls

stdout

Shell
/dev/tty

OS

Driver de terminal
matriel
Interface utilisateur
(clavier/cran)
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

20

Connexions distantes

Fonctionnement d'une connexion distante


Machine cliente

ls

Machine distante

Client telnet

Serveur telnet

Shell

TCP/IP

Driver de
pseudo-terminal

OS
Driver de
terminal

TCP/IP

pseudo-tty

tty

matriel
Interface utilisateur
(clavier/cran)
Olivier Glck - 2014

Internet

donne l'illusion au
Shell local que les
caractres
proviennent du
clavier

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

21

Telnet : protocole et application


TELecommunication NETwork protocol

un des premiers standard de l'Internet : RFC 854,855 (1983)


connexion TCP sur le port 23 ct serveur
authentification sur le shell distant (mot de passe en clair)
quand un caractre est tap au clavier, il est envoy au
serveur qui renvoie un "cho" du caractre ce qui provoque
son affichage dans le terminal local
prise en compte de l'htrognit
mcanisme de ngociation d'options la connexion
(codage des caractres ASCII sur 7 ou 8 bits ?)
exemple : telnet d'une machine Windows vers une
machine Unix --> tous les caractres ASCII n'ont pas la
mme signification

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

22

Excution de Telnet

Les diffrentes excutions possibles (ct client)

sans argument (paramtrer sa connexion distante)

telnet

par le nom de la machine distante (DNS+port 23)

telnet nom_du_serveur

par l'adresse IP de la machine distante (port 23)

telnet adr_IP_du_serveur

accs un autre service (connexion sur un autre port)

telnet adr_IP_du_serveur numro_port


Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

23

Excution de Telnet

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

24

Telnet : gestion de l'htrognit

Exemples d'htrognit lie l'OS :

interprtation du saut de ligne


sous UNIX : CR-LF
sous Windows : CR
interruption du processus en cours d'excution
Ctrl-c sur certains systmes, ESC sur d'autres

NVT - Network Virtual Terminal

un terminal "virtuel rseau" qui permet de supporter


des environnements htrognes
ralise la conversion des caractres spciaux ou des
squences particulires en un format NVT

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

25

Telnet : gestion de l'htrognit


connexion TCP
Client
TELNET

Systme
client

format local

Serveur
TELNET
format NVT

Systme
serveur

format local

Le format NVT

tous les caractres sont cods sur 8 bits


les 128 caractres ASCII sont transmis tels quels
NVT redfinit la signification de certains caractres
de commande ASCII :

CR (13d) = retour au dbut de la ligne


LF (10d) = dplacement d'une ligne vers le bas

--> dans le format NVT, RETURN ou ENTER se


traduit par CR-LF
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

26

Telnet : gestion de l'htrognit

Format NVT

le 8ime bit 1 permet de dfinir des caractres de


commande NVT spcifiques (touches virtuelles)
chaque caractre de commande est prcd d'un
caractre d'chappement spcifique : IAC

Commande Code

Signification
L'octet suivant n'est pas une donne mais un caractre de contrle
Rejette une demande d'excution d'une option donne (fais pas)
Accepte une demande d'excution d'une option donne (fais)
Refus de mettre en uvre une option donne (je ne vais pas)
Acceptation de mettre en uvre une option donne (je vais)
Dbut de ngociation d'option
Effacer la ligne
Interruption du processus
Fin de ngociation d'option

IAC
255
DON'T 254
DO
253
WON'T 252
WILL
251
SB
250
EL
248
IP
244
SE
240
La squence Ctrl-c sous unix se traduira par la squence NVT IAC IP
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

27

Telnet : gestion de l'htrognit

Envoi des commandes NVT hors-bande

--> utilisation des donnes urgentes TCP


pourquoi ? Exemple :
1) le processus distant tourne en boucle, il ne lit/
crit plus aucune donne sur le pseudo-terminal
2) les donnes en provenance ou destination du
client remplissent les tampons
3) le contrle de flux TCP empche le client et le
serveur telnet de communiquer
4) le client ne peut mme plus interrompre le
processus fautif sur le serveur
--> les donnes urgentes ne sont pas soumises au
contrle de flux TCP

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

28

Telnet : les options

Exemples :

l'cho peut tre fait par le site distant ou localement


(dpend de la charge du rseau)
clavier

A
A
Z

cran

stdin
cho local

cho distant
stdout

mode ligne : envoi ligne par ligne plutt que caractre par
caractre
type du terminal (couleur, redimensionnement), vitesse
du terminal, taille de la fentre,

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

29

Telnet : ngociation d'options

Avec WILL, WON'T, DO, DON'T

le client met des requtes d'option (WILL WON'T DO


DON'T)
DO Echo
WILL Negociate About Window Size
le serveur renvoie des rponses (DO DON'T WILL
WON'T)
WILL Echo
DON'T Negociate About Window Size

3 octets pour transmettre une option :


<IAC> <command code> <option number>
ex : IAC WILL Terminal_type soit 255 251 24

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

30

Paramtrer la connexion (Commandes Telnet)


Pour passer en mode commande durant une connexion, il
suffit de taper le caractre d'chappement

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

31

RLOGIN : principe
Remote LOGIN (service login dans inetd.conf)

Application standard d'unix BSD (RFC 1282) (dec 1991)


Connexion TCP sur le port 513 ct serveur
Plus simple que telnet (que sous Unix)
Ide : lors de la connexion, les paramtres du terminal local
sont envoys au site distant (pas de ngociation)
Intrts de rlogin par rapport telnet

permet l'administrateur de dfinir un ensemble de machines


"quivalentes" sur lesquelles les noms d'utilisateurs et les droits
d'accs sont partags
exemple : un utilisateur a un login X sur m1 et Y sur m2
permet des accs automatiques sans saisir de mot de passe
permet d'exporter sur la machine distante une partie de
l'environnement local (type du terminal $TERM, taille de la fentre) :
un terminal distant a alors un comportement similaire a un terminal
local (couleurs)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

32

RLOGIN : authentification

Authentification

si un mot de passe est ncessaire, il circule en clair

Authentification automatique

pour ne pas avoir saisir de mot de passe, il faut


soit que la machine cliente soit dans le fichier /etc/
hosts.equiv de la machine distante
soit que le couple (machine cliente, user) soit dans le
fichier $HOME/.rhosts de la machine distante
le dmon rlogind examine d'abord si le fichier /
etc/hosts.equiv permet une authentification
automatique, puis si tel n'est pas le cas, il regarde le
fichier $HOME/.rhosts

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

33

RLOGIN : authentification

le fichier $HOME/.rhosts permet d'viter


l'authentification de certains couples (machine cliente/
utilisateur)
ogluck@192.168.69.1# cat .rhosts
192.168.69.2 ogluck
le fichier /etc/hosts.equiv contient les machines
"quivalentes" ou des entres de type .rhosts
ogluck@192.168.69.2# cat /etc/hosts.equiv
192.168.69.1 # autorise tout le monde
192.168.69.1 ogluck # que ogluck
+ ogluck # ogluck depuis n'importe o

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

34

RSH : principe

Remote SHell
Connexion TCP port 514 - le pendent de rlogin
Excution de commandes sur une machine distante
de faon transparente
rsh host cmd
authentification automatique comme avec rlogin
tout se passe comme si l'excution tait locale
l'entre standard et la sortie standard de cmd sont
directement connectes la socket cliente
avantage : peut tre utilis directement dans un
programme (pas de saisie de mot de passe)
quand cmd se termine sur le site distant, le processus
rsh client se termine
une squence Ctrl-c termine le processus distant cmd
35
Olivier Glck - 2014
M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

RSH : principe

Exemple
ogluck@192.168.69.1# rsh 192.168.69.2 ls
interfaces
iperf-1.7.0
iperf-1.7.0-source.tar.gz
iperf.deb

Fonctionnement du dmon rshd quand une


requte arrive

1- lecture sur la socket jusque '\0' (octet nul) ; la


chane lue est interprte comme un numro de port
2- une deuxime connexion est tablie vers le client
vers ce numro de port pour transmettre stderr
(permet de distinguer stderr et stdout dans les >)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

36

RSH : principe

3- rcupration de l'@ IP cliente pour dterminer un nom


ventuel (requte DNS) pour l'authentification
4- lecture sur la socket initiale
du username sur la machine cliente (user_l)
du username sur la machine distante (user_d)
de la ligne de commande excuter
5- le dmon authentifie l'excution distante
il vrifie que user_d est bien dans /etc/passwd
si user_l=user_d, regarde dans /etc/hosts.equiv
sinon regarde dans $HOME/.rhosts
6- une fois user_d authentifi, le dmon renvoie '\0' au
client puis passe la ligne de commande au shell local

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

37

RSH : principe
Requte cliente (socket initiale)

\0 ls \0
ogluck \
0 ogluck
\0 1048
rsh client
Ouverture d'une deuxime socket

rshd

/etc/passwd
/etc/hosts.equiv
/home/ogluck/.rhosts

Authentification

\0
Excution de la commande

clavier

socket initiale

stdin
stdout

cran
Olivier Glck - 2014

deuxime socket

ls

stderr

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

38

SSH : un shell distant scuris

Secure SHell
Les communications sont cryptes
Authentification base de cls
Un des seuls protocoles de connexion distance
qui passe les pare-feux de nos jours
Permet de transporter des fentres graphiques
via le tunnel SSH (multiplexage de plusieurs flux
dans la connexion)
Connexion TCP sur le port 22 ct serveur
Pas encore de RFC (ietf-internet-draft)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

39

SSH : syntaxes
Connexions distance (style rlogin)
ssh -l user hostname
ssh user@hostname
Excution de commande distance (style rsh)
ssh -l user hostname cmd
ssh user@hostname cmd
Copie de fichiers distance (style rcp)
scp file1 file2 user@hostname:
scp -r dir user@hostname:/tmp
ssh et scp remplacent rlogin, rsh, rcp,

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

40

SSH : tunnels (port forwarding)

telnet pop.univ-lyon1.fr 110 ---> non scuris !


On peut faire passer nimporte quoi dans un tunnel ssh :

ssh L 3280:pop.univ-lyon1.fr:110 pop.univ-lyon1.fr


telnet localhost 3280

Tout ce quon envoie sur localhost/3280 arrive sur pop/


110 mais les donnes sont chiffres (encapsules dans le
protocole ssh)

Donnes chiffres par ssh

1538

localhost:3280
Olivier Glck - 2014

Internet

1538|22 3280|110 pass xxx


M2 SIR/RTS - Services et Protocoles Applicatifs sur
Internet

22

pop:110
41

SSH : chiffrement

Principe du chiffrement

f(msg,cl)

La qualit de la scurit dpend

du secret de la cl
de la longueur de la cl (plus il y a de bits, plus il est
difficile d'essayer toutes les cls)
de la difficult d'inversion de l'algorithme de chiffrement

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

42

SSH : chiffrement

Deux types d'algorithme

symtrique : mme cl prive secrte partage utilise


pour le chiffrement et le dchiffrement
l'metteur et le rcepteur doivent se mettre d'accord
sur la cl utiliser
asymtrique : utilisation d'une cl publique pour le
chiffrement et d'une cl prive pour le dchiffrement
mchiffr=f(mclair, cpublique) et mclair=g(mchiffr, cprive)
pour qu'un metteur envoie un message chiffr, il
suffit qu'il connaisse la cl publique du destinataire
pb : comment tre sr que la cl publique est bien
celle du destinataire escompt ?
certificat : association d'une cl publique et d'un nom
de destinataire signe par un tiers de confiance

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

43

source : M. Herrb

Le client ssh Bob envoie


sa cl publique Alice
pour que le serveur ssh
Olivier Glck - 2014
M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet
puisse chiffrer

44

SSH : chiffrement

Dans SSH :

algorithme asymtrique pour l'authentification


(gnralement RSA : bas sur l'arithmtique modulo)
algorithme symtrique pour les communications

utilisation de RSA pour changer la cl de


l'algorithme symtrique
chiffrement et dchiffrement moins coteux

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

45

source : M. Herrb

ssh de Bob vers Alice, Bob envoie sa cl publique


Alice, Alice fabrique une cl secrte (la cl de
session) pour lenvoyer chiffre Bob. Cest
cette cl secrte qui sera utilise ensuite pour
chiffrer/dchiffrer de manire symtrique avec
AES.
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

46

source : M. Herrb

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

47

SSH : authentification

4 mthodes sont essayes dans l'ordre par sshd

authentification automatique (souvent dsactive sur le serveur car


considre insecured)
avec /etc/hosts.equiv ou /etc/ssh/shosts.equiv
avec ~/.rhosts ou ~/.shosts
authentification automatique forte "amliore"
idem (avec fichiers rhosts ou hosts.equiv) mais
combine avec une authentification des hosts par RSA : le serveur
vrifie la cl en provenance de la machine cliente
Mot de passe demand lors de la premire connexion puis ajout du
couple (@IP, cl publique) dans les fichiers
Si la cl publique change pour cette @IP alors on redemande une
authentification forte par mot de passe
/etc/ssh/ssh_known_hosts ou ~/.ssh/ssh_known_hosts

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

48

SSH : authentification

4 mthodes sont essayes dans l'ordre par sshd

authentification automatique forte par RSA (asymtrique)


le client gnre un couple (cl_pub, cl_pri) avec sshkeygen et copie la cl publique dans le fichier ~/.ssh/
authorized_keys sur le serveur ; liste les cls
publiques autorises (quivalent du ~/.rhosts !)
le client envoie au serveur sa cl publique ; si elle est
dans le fichier, le serveur gnre un nb alatoire de 256
bits qu'il chiffre avec la cl envoye par le client ; le client
dchiffre avec sa cl prive puis la renvoie avec hachage
MD5 ; le serveur calcule le hachage MD5 et vrifie
authentification par saisie du mot de passe mais ce dernier
est chiffr par RSA avant d'tre envoy au serveur

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

49

X : multi-fentrage rparti

Systme de multi-fentrage sous Unix

appel X ou X Window System ou X11


ensemble de programmes ralisant l'interface Homme/
Machine bas sur l'utilisation des priphriques
(clavier, souris, cran, )

X est constitu de plusieurs entits

un serveur X : gre le matriel (clavier, cran, ) et


leur utilisation par les applications graphiques ;
accessible sur le port TCP 6000+n o n est le numro
de DISPLAY
des clients X : applications graphiques qui ncessitent
un serveur X (xemacs, xterm, xcalc, xv, )
le protocole X : fait communiquer les clients et le
serveur

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

50

X : multi-fentrage rparti

Systme rparti : permet de travailler sur plusieurs


machines simultanment

les clients X peuvent s'excuter sur des machines


distantes (3 connexions TCP dans l'exemple)
station2

station3

La souris
a boug ! Client X

Client X

vnement

requte
Crer une
fentre

Client X
station4

Serveur X : DISPLAY="station1:0.0"
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

51

X : multi-fentrage rparti

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

52

X : multi-fentrage rparti

Chaque client X peut dfinir ses caractristiques

spcifications standards
fontes, gomtrie de la fentre, background,
foreground, borderwidth, couleurs
spcifications particulires l'application
affichage ou non d'un ascenseur

Gestion de fentres : Window Manager

un client X particulier qui gre


dplacement/redimensionnement de fentre
crer/dtruire/iconifier des fentres
lancer ou terminer des applications X

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

53

X : multi-fentrage rparti

Le protocole X permet au serveur X de contrler


l'autorisation des accs

Quels clients X peuvent se connecter au serveur X ?


La commande xhost

ogluck@lima:~$ xhost
access control enabled,only authorized clients can connect
ogluck@lima:~$ echo $DISPLAY
140.77.13.102:0.0
ogluck@lima:~$ xhost + ble
ble being added to access control list
ogluck@lima:~$ rlogin ble
ogluck@ble:~$ export DISPLAY=140.77.13.102:0.0
ogluck@ble:~$ xterm &
Qui est le
ogluck@ble:~$ exit
serveur X ?
Connection to ble closed.
ogluck@lima:~$ xhost - ble
bleOlivier
being
from
access
list sur Internet
54
Glck -removed
2014
M2 SIR/RTS
- Servicescontrol
et Protocoles Applicatifs

SSH : X11 et TCP forwarding

X11 Forwarding

permet d'avoir une encapsulation chiffre du protocole


X11 dans la connexion ssh avec une gestion
automatique de la variable $DISPLAY
si la variable $DISPLAY du client ssh est positionne,
ssh -X permet au serveur d'exporter les fentres
graphiques lances partir de la connexion ssh vers
le $DISPLAY du client (un "proxy X server" est cr
sur la machine serveur pour transfrer les connexions
X vers le client via la session ssh)

Possibilit de rediriger n'importe quel port TCP


(dpend
de Applicatifs
ssh) sur Internet
Olivier
Glck - 2014de la
M2configuration
SIR/RTS - Services et Protocoles

55

SSH : X11 forwarding


ssh -X station2
Station1 (client ssh)
Client X

Station2 (serveur ssh)

Chiffrement
Dchiffrement
Pseudo client X

SSH

SSH

Chiffrement
Dchiffrement
Pseudo serveur X
DISPLAY="station2:11.0"

Client X

Client X

DISPLAY="station1:0.0"
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

56

Applications de transfert de fichiers


Protocoles de transfert de fichiers
FTP : File Transfer Protocol
TFTP : Trivial File Transfer Protocol

Protocoles de transfert de fichiers

Copie intgrale d'un fichier d'un systme de fichiers


vers un autre en environnement htrogne
L'htrognit concernant les fichiers est
dpendante d'un systme l'autre

de la faon de reprsenter les noms de fichier (longueur,


caractre espace,)
des droits d'accs au fichier (lecture, criture, excution,
propritaire, )
de la reprsentation des donnes contenues dans le fichier
(saut de ligne)
--> mode ascii : transfert au format NVT avec
conversion au format local (TYPE A)
--> mode binary : transfert sans conversion (TYPE I)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

58

Protocoles de transfert de fichiers

Plusieurs protocoles

Type client/serveur

copie de fichiers distance : rcp, scp


protocole de transfert de fichiers avec accs aux systmes
de fichiers local et distant : ftp, tftp, sftp
le client (initiateur de la connexion) interagit avec
l'utilisateur, le systme de fichiers local et les protocoles
rseau
le serveur (hberge les fichiers distants) interagit avec les
protocoles rseau et le systme de fichiers distant

Ne pas confondre avec les protocoles d'accs aux


fichiers distants : NFS (RPC), SMB (Microsoft)
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

59

Protocoles de tranfert de fichiers

Transfert de fichiers vers/depuis un hte distant


Impossible d'afficher l'image. Votre ordinateur manque peut-tre de mmoire pour ouvrir l'image ou l'image est endommage. Redmarrez l'ordinateur, puis ouvrez nouveau le fichier. Si le x rouge est toujours affich, vous devrez peut-tre supprimer l'image avant de
la rinsrer.

Machine cliente
Interface
utilisateur FTP

Machine distante

Client FTP

Serveur FTP
OS

Pilotes de
priphriques

TCP/IP

/dev/hda3

TCP/IP

Pilotes de
priphriques

/dev/hda1

matriel

matriel

Clavier, cran,
souris...

Internet
Systme de
fichiers local

Olivier Glck - 2014

Systme de
fichiers distant

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

60

Interfaces utilisateur

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

61

FTP : File Transfer Protocol - RFC 959

Standard TCP/IP pour le transfert de fichiers


Connexion TCP sur le port 21 ct serveur
Contrle d'accs au serveur distant (login,mdp)

le mot de passe circule en clair

Particularit de FTP par rapport TELNET :


utilisation de 2 connexions TCP

ogluck@lima:~$ cat /etc/services | grep ftp


ftp-data
20/tcp
ftp
21/tcp
tftp
69/udp
sftp
115/tcp # FTP over SSH
ftps-data
989/tcp #FTP over SSL (data)
ftps
990/tcp # FTP over SSL
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

62

FTP : Connexions contrle et donnes

Les clients FTP contactent le serveur FTP sur le port


TCP/21
Ouverture de 2 connexions TCP parallles :

Contrle : change des commandes et des rponses entre le


client et le serveur - contrle hors-bande
Donnes : transfert des fichiers de donnes vers/depuis
l'hte distant (sur le port TCP/20 ct serveur)

Le serveur FTP maintient un "tat" : rpertoires


courants local et distant, username
Client FTP
TCP/IP

Contrle : ftp tcp/21


Internet

Serveur FTP
TCP/IP

Donnes : ftp-data tcp/20


Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

63

FTP : Connexions contrle et donnes

Scnario d'une connexion

Client

Serveur

le client FTP se connecte sur le


Conne
xion, a
ut
port 21 du serveur
(USER hentificatio
n
, PASS
le port 21 sert envoyer des
)
PORT
commandes au serveur FTP (put,
h1,h2
,h3,h4
,p1,p2 port 21
get, cd, )
(@IP,
npor
si une commande ncessite que
t)
des donnes soient reues ou
port 21
LIST
transmises (ls, get, put, ), le
client envoie une commande
PORT au serveur indiquant un
port 21
port (p1*256+p2) sur lequel le
serveur va crer une connexion
data
port 20
ftp-data depuis son port 20
la connexion ftp-data est close port 33217
ds que le transfertM2est
termin
SIR/RTS
- Services et Protocoles Applicatifs sur

Olivier Glck - 2014

Internet

64

FTP : Connexions contrle et donnes

Connexion contrle (ftp) :

change des requtes/rponses (dialogue client/serveur)


permanente, full-duplex, besoin de fiabilit (et faible
dlai !)
initie par le client

Connexion donnes (ftp-data) :

envoi de fichier ou liste de fichiers/rpertoires (donnes)


temporaire, full-duplex, besoin de dbit (et fiabilit !)
initie par dfaut par le serveur
ouverture active (connect()) du serveur vers le
client (depuis le port 20 vers le port ??)
la connexion est ferme ds que le caractre EOF est lu

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

65

FTP : Connexions contrle et donnes

Active transfer & Passive transfer

Active transfer : la connexion ftp-data est initie par le


serveur
--> problme de firewall ou de NAT : impossibilit de
crer la connexion partir du serveur mme s'il
connat le numro de port du client
Passive transfer : ftp-data initie par le client
intgr dans les navigateurs, paramtrable sur
certains clients
fonctionnement : le client envoie la commande PASV
au lieu de PORT sur le port 21 (RFC 1579 : FirewallFriendly FTP) ce qui revient demander au serveur de
faire un listen() sur le port 20

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

66

Commandes du client FTP

Ne pas confondre avec les commandes du protocole FTP !

Varie d'un client


l'autre !

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

67

Requtes du protocole FTP


ABOR : interrompt le transfert en cours
( la suite d'un ctrl-c lors d'un transfert)

Olivier Glck - 2014

ne s'affiche
M2 SIR/RTS - Services Pourquoi
et Protocoles rien
Applicatifs
sur Internet ???

68

Requtes du protocole FTP

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

69

Requtes du protocole FTP

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

70

Rponses du protocole FTP


Les rponses sont de la forme
status_code description
Le code est un nombre sur trois chiffres signifiant :

Status

Signification

1yz

Rponse positive prliminaire (une autre


rponse suivra)
Rponse positive finale (une autre requte
est possible)
Rponse positive intermdiaire (une autre
requte doit suivre)
Rponse ngative temporaire (la mme
requte peut russir plus tard)
Rponse ngative dfinitive (la requte
nest pas accepte)

2yz
3yz
4yz
5yz

Olivier Glck - 2014

Status
Signification
x0z Erreur de syntaxe
x1z Rponse Informative
(HELP)
x2z Relatif une
connexion
x3z Relatif
lauthentification
x5z

Relatif au systme de
fichier

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

71

Exemples de rponses

125 Data connection already open


150 Opening BINARY mode data connection
200 Command successful
214 Help message
220 lima.cri2000.ens-lyon.fr FTP server
(Version 6.4/OpenBSD/Linux-ftpd-0.17)
ready
226 Transfer complete
230 User ogluck logged in
331 Passwd required for ogluck
425 Can't open data connection
452 Error writing file
500 Command not understood
550 No files found

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

72

Exemple de dialogue FTP


ogluck@lima:~$ ftp -d -v localhost
Connected to localhost.
220 lima.cri2000.ens-lyon.fr FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17)
ready.
Name (localhost:ogluck): ogluck
---> USER ogluck
331 Password required for ogluck.
Password:
---> PASS XXXX
230- Linux lima 2.4.22-1-686 #6 Sat Oct 4 14:09:08 EST 2003 i686 GNU/Linux
230 User ogluck logged in.
---> SYST
215 UNIX Type: L8 (Linux)
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> lcd /tmp
Local directory now /tmp
ftp> cd FTP
---> CWD FTP
250 CWD command successful.
ftp> ls
---> PORT 127,0,0,1,133,83
200 PORT command successful.
---> LIST
150 Opening ASCII mode data connection for '/bin/ls'.
total 4
-rw-r--r-1 ogluck
2692 Mar 12 17:12 ftp.log
226 Transfer complete.
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

73

Exemple de dialogue FTP


ftp> get ftp.log
local: ftp.log remote: ftp.log
---> TYPE I
200 Type set to I.
---> PORT 127,0,0,1,133,84
200 PORT command successful.
---> RETR ftp.log
150 Opening BINARY mode data connection for 'ftp.log' (2692
226 Transfer complete.
2692 bytes received in 0.00 secs (45326.0 kB/s)
ftp> put ftp.log ftp2.log
local: ftp.log remote: ftp2.log
---> PORT 127,0,0,1,133,85
200 PORT command successful.
---> STOR ftp2.log
150 Opening BINARY mode data connection for 'ftp2.log'.
226 Transfer complete.
2692 bytes sent in 0.00 secs (90651.9 kB/s)
ftp> mkdir TOTO
---> MKD TOTO
257 "TOTO" directory created.
ftp> ls
---> TYPE A
200 Type set to A.
---> PORT 127,0,0,1,133,86
200 PORT command successful.
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

bytes).

74

Exemple de dialogue FTP


---> LIST
150 Opening ASCII mode data connection for '/bin/ls'.
total 12
drwxr-x--2 ogluck
4096 Mar 12 17:17 TOTO
-rw-r--r-1 ogluck
2692 Mar 12 17:12 ftp.log
-rw-r----1 ogluck
2692 Mar 12 17:16 ftp2.log
226 Transfer complete.
ftp> passive
Passive mode on.
ftp> get ftp2.log
local: ftp2.log remote: ftp2.log
---> TYPE I
200 Type set to I.
---> PASV
227 Entering Passive Mode (127,0,0,1,133,87)
---> RETR ftp2.log
150 Opening BINARY mode data connection for 'ftp2.log' (2692
226 Transfer complete.
2692 bytes received in 0.00 secs (53651.1 kB/s)
ftp> bye
---> QUIT
221 Goodbye.
ogluck@lima:~$
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

bytes).

75

FTP : autorisation d'accs

Contrle fin possible au niveau de chaque


utilisateur : le fichier /etc/ftpusers permet
d'empcher les connexions FTP de certains
utilisateurs

ogluck@lima:~$ cat /etc/ftpusers


# /etc/ftpusers: list of users disallowed
ftp access. See ftpusers(5).
root
ftp
anonymous
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

76

TFTP : Trivial File Transfer Protocol

Transfert de fichiers au-dessus d'UDP, port 69

ogluck@lima:~$ grep tftp /etc/services


tftp
69/udp
ogluck@lima:~$ grep tftp /etc/inetd.conf
tftp
dgram
udp
wait
nobody
sbin/tcpd /usr/sbin/in.tftpd /tftpboot

/usr/

Pourquoi TFTP ?

TFTP, c'est en gros FTP sans pouvoir lister les


rpertoires distants et ne ncessitant pas de mot de
passe pour rcuprer ou dposer des fichiers
protocole lger donc facilement implantable par des
systmes sans disque (en ROM) qui utilisent TFTP au
boot pour rcuprer un fichier de configuration
(terminaux X, imprimantes rseau, routeurs Cisco)
UDP car ces systmes n'implantent pas forcment TCP

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

77

TFTP : Trivial File Transfer Protocol

Protocole lger - RFC 1350

pas de contrle d'accs


5 types de messages seulement
fiabilit assure par acquittement positif avec timer de
retransmission sur l'metteur et le rcepteur
les messages DATA font 512 octets max ; ils sont
numrots et sont aussitt acquitts par un ACK

Comme il n'y a pas d'authentification, les accs


sur le serveur sont limits aux rpertoires passs
en arguments du dmon tftpd (/tftpboot
par dfaut)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

78

TFTP : types de messages

Les 5 types de messages


Opcode
1
2
3
4
5

Olivier Glck - 2014

Op ration
RRQ
WRQ
DATA
ACK
ERROR

Description
Read request
Write request
Data
Acknowledgment
Error (sert aussi dACK)

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

79

TFTP : format des messages


2 octets

RRQ/WRQ

DATA

ACK

ERROR

N octets 1 oct N octets 1 oct

Opcode Filename

Transfer
Mode

2 octets

2 octets

N octets (Max 512)

Opcode

Block#

Data

2 octets

2 octets

Opcode

Block#

Pourquoi ne termine
pas par un 0 ?

0
2 octets 2 octets N octets 1 oct 1
2
Opcode ErrCode ErrMsg 0 3
4
5
6
7

Olivier Glck - 2014

Not defined.
File not found.
Access violation.
Disk full or allocation exceeded.
Illegal TFTP operation.
Unknown transfer ID.
File already exists.
No such user.

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

80

TFTP : commandes utilisateurs

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

81

TFTP : exemples d'changes


get toto (512 octets)

Client

Serveur

put toto (512 octets)

Client

Serveur

RRQ toto 0
netascii 0

WRQ toto 0
netascii 0

DATA 1 xxxx (512 octets)

ACK 0

ACK 1

DATA 1 xxx
x (512 octe
t s)

DATA 2 (0 octet)

ACK 1

ACK 2

DATA 2 (0 o
ctet)

Protocole dit
"Stop-and-wait"

Olivier Glck - 2014

ACK 2

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

82

Accs aux fichiers distants


Les protocoles NFS et SMB

Accs aux fichiers distants

Diffrences avec le transfert de fichiers

l'accs aux fichiers distants est compltement


transparent pour l'utilisateur
tout se passe comme si le systme de fichiers distant
tait local
l'utilisateur peut diter le fichier, le modifier, ; les
modifications seront rpercutes sur le systme de
fichiers distant

Les deux principaux protocoles

NFS : Network File System (Unix/Sun-RPC)


SMB : Server Message Block (issu du monde Microsoft)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

84

NFS : Network File System

Prsent par Sun en 1985 pour permettre ses


stations sans disque d'accder un systme de
gestion de fichiers distant (RFC 1094)
Utilise les appels de procdures distantes Sun-RPC
(qui sont issues des travaux sur NFS)

a priori, les client et serveur NFS devraient tre des


processus utilisateur s'excutant au-dessus de RPC/XDR/
UDP/IP
en fait, le client et serveur NFS s'excutent dans le noyau
le client pour rendre transparent l'accs un fichier
via NFS (pas de diffrence d'utilisation d'un fichier
local et d'un fichier distant)
le serveur pour des raisons d'efficacit

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

85

NFS : principe de fonctionnement


Machine cliente

Machine distante

Processus utilisateur accdant


un fichier (xemacs /mnt/y.c)
/usr/x.c

/mnt/y.c

OS

Pilote d'accs au systme de


gestion de fichiers

Serveur
NFS

Accs local
Client NFS RPC/
(IDE/SCSI )
XDR/UDP/IP
matriel

Accs local
(IDE/SCSI)

matriel
Internet

y.c
Systme de
fichiers distant

Systme de
fichiers local

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

86

Les lments d'accs aux fichiers


Processus utilisateur : lecture/
criture dans un fichier
Virtual File System (VFS)
Ext2
VFAT
NFS
...
Block Device Layer
IDE
SCSI
...

Disques

Olivier Glck - 2014

Manipule des chemins, descripteurs,


dplacements
Manipule des Files, Dentries, Inodes,
dplacements
Masque les diffrences l'application
(API uniforme, )
Manipule des blocks
Matriel-dpendant

Le choix entre Ext2, VFAT,


NFS, se fait lors de
l'ouverture du fichier
M2 SIR/RTS - Services et Protocoles Applicatifs sur
Internet

87

NFS : en pratique
root@192.168.69.1#
192.168.69.2:/home
root@192.168.69.1#
root@192.168.69.1#
root@192.168.69.1#
drwxr-xr-x 2 1003
root@192.168.69.1#
Filesystem
/dev/hda2
192.168.69.2:/home

Client NFS
tail -1 /etc/fstab
/nfshome nfs defaults,noauto 0 0
mkdir /nfshome
mount /nfshome
ls -l /nfshome
/nfshome
5000
1024 fv 16 13:32 olivier
df
1k-blocks
Used
Available Use% Mounted on
3898108
2766592 930304 75% /
16128636 1493328 13815996 10% /nfshome
open(),read(),write()

root@192.168.69.2# cat /etc/exports


# /etc/exports: the access control list for filesystems which
# may be exported to NFS clients. See exports(5).
/home 192.168.69.0/255.255.255.0(rw,root_squash,async)

/home

Serveur NFS
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

88

NFS : en pratique
root@192.168.69.1# rpcinfo -u 192.168.69.2 showmount

Client NFS

program 100005 version 3 ready and waiting


root@192.168.69.1# rpcinfo -u 192.168.69.2 nfs
program 100003 version 3 ready and waiting
root@192.168.69.1# showmount -a 192.168.69.2
All mount points on 192.168.69.2:
192.168.69.1:/home
root@192.168.69.1# showmount -d 192.168.69.2
Exported directories on 192.168.69.2:
/home
root@192.168.69.1# showmount -e 192.168.69.2
Export list for 192.168.69.2:
/home 192.168.69.0/255.255.255.0

/nfshome

root@192.168.69.2# showmount
Hosts on 192.168.69.2:
192.168.69.1

/home

Serveur NFS
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

89

NFS et la scurit

Principe d'authentification :

(uid, gid)local est mapp en (uid, gid)distant


--> quivalence entre les droits locaux et distants
problme pour root :
quels droits possde le root d'une machine cliente
sur les fichiers exports par un serveur NFS ?
par dfaut, root est mapp en nobody pour des
raisons de scurit (sinon il faut mettre
no_root_squash dans /etc/exports)

Rgle de non transitivit de NFS :

si A exporte /home B ; si B monte A:/home dans /


home2 et exporte /home2 C alors C n'aura pas
accs au /home de A
sinon il n'y aurait aucun contrle possible des rgles
d'exportation donc pas de scurit (B pourrait
exporter C alors que A ne veut pas autoriser C)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

90

NFS : les procdures distantes (v2)

GETATTR : retourne les attributs d'un fichier (type, taille,


permissions, propritaire, date de dernire modification, )
SETATTR : modifie les attributs d'un fichier
STATFS : retourne l'tat d'un SGF (espace libre, )
LOOKUP : recherche le fichier dont le nom et en argument,
retourne un file handle et les attributs (appele l'ouverture
du fichier)
READ : lecture dans le fichier d'au plus N octets partir d'un
certain offset (N doit tre infrieur 8192)
WRITE : criture dans le fichier de N octets partir d'un
certain offset, les donnes se trouvant dans le tampon @
CREATE/REMOVE/RENAME : crer, supprimer, renommer
LINK/SIMLINK/READLINK : cration/lecture d'un lien
MKDIR/RMDIR/READDIR : manipulation des rpertoires

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

91

MOUNT : les procdures distantes

Procdures distantes utilises par mount et


showmount

MNT : montage d'une partition distante, retourne un


file handle correspondant au rpertoire mont (racine)
DUMP : retourne la liste de tous les file system monts
UMNT : supprime un point de montage
UMNTALL : supprime tous les points de montage pour
ce client
EXPORT : retourne les informations sur les file system
qui sont exports

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

92

NFS : procdures non-idempotentes

Toutes les oprations prcdentes ne sont pas


idempotentes : deux excutions identiques
successives ne donnent pas le mme rsultat
Ne sont pas idempotentes CREATE, REMOVE,
RENAME, LINK, SIMLINK, MKDIR, RMDIR

Solution :

le serveur utilise un cache des requtes/rponses


rcentes pour les procdures non-idempotentes
quand une nouvelle requte arrive, le serveur regarde
dans son cache si la rponse est dj prsente, auquel
cas il renvoie cette rponse sans re-excuter la proc.

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

93

NFS : un serveur sans tat

Le serveur NFS est sans tat : entre deux requtes,


il ne conserve aucune information sur

les accs prcdents un fichier donn,


les fichiers ouverts, ...
le LOOKUP correspond au open() mais il n'y a pas de
procdure correspondant au close()
aprs un LOOKUP, le serveur ne sait pas si le client va
effectivement "utiliser" le fichier ou non

Pourquoi sans tat ?

en cas de crash du serveur NFS


permet de simplifier son redmarrage
transparent pour le client : il n'a pas besoin de ritrer
certaines requtes en cas de crash

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

94

NFS au dessus de TCP

En principe, pour plus de ractivit, NFS utilise les


RPC sur UDP (dans le cadre d'un LAN)
Mais pour tendre NFS aux WAN, les dernires
versions permettent d'excuter NFS sur RPC/TCP
Caractristiques de NFS sur TCP
le serveur fait une ouverture passive sur le port TCP/2049
quand un client monte une partition NFS, cela se traduit
par une ouverture active --> une connexion TCP par point
de montage (soit une par file system)
toutes les applications qui utilisent ce systme de fichiers
partagent la mme connexion TCP
plus rsistant aux pannes du serveur NFS : le client essaie
rgulirement de rtablir la connexion et conservent les
requtes RPC M2
enSIR/RTS
attente
95
Olivier Glck - 2014
- Services et Protocoles Applicatifs sur Internet

SMB : Server Message Block

Protocole de Microsoft et Intel permettant le partage de


ressources (disques, imprimantes) travers un rseau (1987)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

96

SMB : Server Message Block

SMB est prvu pour tre utilis sur linterface NetBIOS

utilise les noms NetBIOS (15 caractres + 1 pour le type)


utilise le mcanisme datagram de NetBIOS par broadcast comme
service de nommage (NOM-->@MAC, pas d'adresse de niveau 3)
Application
SMB
Netbios

TCP/IP

NetBEUI

IPX/SPX

802.x

PPP

...

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

97

SMB : Server Message Block

Chaque machine (client ou serveur) possde un


nom sur 15 caractres
SMB ajoute un 16ime caractre pour distinguer

Notion de domaine

les serveurs de fichiers et dimprimantes, les clients,


un ensemble dutilisateurs (avec nom et mot de passe) et
de serveurs (avec des droits daccs)
un primary domain server contient la base de donnes
des utilisateurs et de leurs mots de passe

Un serveur partage une ou plusieurs ressources

fichiers, imprimantes,
chaque triplet (domaine, serveur, ressource) correspond
un nom unique \\server\resource_name

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

98

SMB : Server Message Block

Deux niveaux de protection des accs :

au niveau de chaque utilisateur : bas sur le nom des


utilisateurs (user, passwd), permet de grer laccs
aux ressources voire aux lments dune ressource
au niveau de chaque ressource : un mot de passe
commun tous les utilisateurs est associ une
ressource pour y autoriser laccs

CIFS : Common Internet File System

dernire version de SMB proposant un meilleur


passage l'chelle (extensibilit)
divulgation du protocole SMB par Microsoft l'IETF en
1996 sous ce nom --> a permis l'apparition de Samba

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

99

SMB : Server Message Block

Samba : implmentation de SMB sous Unix qui


permet un partage de ressources entre les mondes
Unix et Windows ; Samba permet de

partager un disque Unix pour des machines Windows


accder un disque Windows depuis une machine Unix
partager une imprimante Unix pour des machines
Windows
utiliser une imprimante Windows partir d'un hte Unix

Le serveur Samba sur la machine Unix mule un


domaine SMB

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

100

SMB : Server Message Block

Commandes Unix lies au serveur Samba


smbpasswd : permet de changer le mot de passe d'un utilisateur SMB
smbclient : permet d'interroger un serveur samba depuis Unix
smbclient -L host # liste les ressources offertes par le serveur
smbclient //host/ressource # permet l'accs la ressource

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

101

Gestion d'utilisateurs distants

NIS : un annuaire rpliqu

NIS : Network Information System

introduit par SUN en 1985 (Yellow Pages (yp) l'origine)


n'est pas un standard de l'Internet mais est largement
utilis
une base de donnes distribue qui permet le partage
d'informations systme (/etc/passwd, /etc/hosts, )

Objectif : rduire le temps d'administration d'un parc


de machines

simplifier la gestion des comptes, des mots de passe et les


travaux d'administration dans le monde Unix
typiquement, il suffit de crer un nouvel utilisateur sur le
serveur NIS pour que chaque machine client NIS ait accs
aux informations de login de cet utilisateur

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

103

NIS : un exemple courant


ogluck@192.168.90.2# grep ogluck /etc/passwd
ogluck:x:1001:1001:,,,:/home/ogluck:/bin/bash

Serveur NIS
HOSTS

toto titi
.. .

GROUP

PASSWD

Client NIS/NFS

Serveur NFS

root@192.168.69.2# showmount -a 192.168.90.1


/home
All mount points on 192.168.90.1:
192.168.69.2:/home
root@192.168.69.2# su - ogluck
ogluck@192.168.90.1# cd /home/ogluck
ogluck@192.168.69.2# ls
ogluck@192.168.90.1# ls
toto titi .. .
toto titi .. .
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

104

NIS : architecture

Architecture : dcoupage en domaines

modle Client/Serveur au dessus des SUN-RPC


un domaine NIS contient
un serveur NIS matre qui maintient les
"maps" (informations contenues dans la base)
zro, un ou plusieurs serveurs NIS esclaves :

permet de dcharger le serveur principal et d'tre plus


rsistant aux pannes
le matre rplique ses informations vers les serveurs
secondaires

des clients NIS qui peuvent interroger les serveurs


matre ou secondaires

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

105

NIS : architecture
Serveur NIS
HOSTS

GROUP

PASSWD

Seul le matre peut modifier une map


Les slave server diffusent les maps sans pouvoir
les modifier (diminue les problmes de cohrence)
Mise jour via RPC

Serveur NIS slave1

??

GROUP

Client NIS 3

PASSWD

HOSTS

Olivier Glck - 2014

Client NIS 2

GROUP

PASSWD

Client NIS 1

Serveur NIS slave2

Client NIS 4

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

106

NIS : en pratique...

Les maps sont stockes sur le serveur dans /


var/yp/nom-de-domaine
Quand le fichier source d'une map est modifi
(sur le serveur), il faut rgnrer la map associe
et ventuellement propager les modifications aux
serveurs NIS esclaves

Chaque map stocke des couples cl/valeur

/etc/hosts
----------------------------/etc/passwd
----------------------------Olivier Glck - 2014

cd /var/yp

make

hosts.byname

Diffusion

hosts.byaddr
passwd.byname
passwd.byuid

aux esclaves

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

107

NIS : en pratique...

La commande ypcat permet de voir le contenu


d'une map depuis n'importe quel client
Un client NIS

doit raliser un binding pour interroger le serveur NIS


il faut donner le nom de domaine et prciser la mthode
de localisation du/des serveurs : broadcast (le premier
qui rpond !) ou dsignation explicite d'un serveur
nom de domaine positionn par la commande
domainname ou dans le fichier /etc/defaultdomain
ou en renseignant la variable NISDOMAIN dans /etc/
doit faire tourner le dmon ypbind qui recherche
rgulirement le serveur NIS appropri
ypbind -broadcast
ypset nom-serveur-NIS ; ypbind
ypwhich permet d'afficher le nom du serveur NIS

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

108

NIS : en pratique...

Un client NIS

est aussi configurable dans /etc/yp.conf

root@192.168.69.2# cat /etc/yp.conf


#plusieurs entres de ce type sont possibles
domain grid5000 server 192.168.90.2
#domain grid5000 broadcast

il faut indiquer la fin de chaque fichier d'aller consulter


les maps associes si ncessaire et mettre compat
dans /etc/nsswitch.conf (man nsswitch.conf)

root@192.168.69.2# tail -1 /etc/passwd


+::::::
root@192.168.69.2# tail -1 /etc/group
+::::

Un serveur NIS esclave doit faire tourner

ypserv pour rpondre aux requtes de ses clients NIS


ypbind s'il est lui-mme un client NIS (pas obligatoire)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

109

NIS : en pratique...

Un serveur NIS matre doit faire tourner

ypserv pour rpondre aux requtes de ses clients NIS


ypbind s'il est lui-mme un client NIS (pas obligatoire)
ypxfrd pour rpondre aux demandes de mise jour des
maps de la part des serveurs esclaves
rpc.yppasswdd pour assurer les demandes de
changement de mots de passe (yppasswd)

Les netgroups (/etc/netgroup)


le systme NIS permet de dfinir des groupes de
machines ou d'utilisateurs et ainsi d'autoriser ou nom
l'accs une ressource
le fichier de netgroup constitue une map
un groupe est dfini par une liste de triplets
(machine, user, nis-domain)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

110

NIS : en pratique...

Exemple d'utilisation des netgroups

root@192.168.90.2# cat /etc/netgroup (sur le serveur NIS)


mes_mach (192.168.69.1,,grid5000) (192.168.69.2,,grid5000)
net_admins (,ogluck,) (,root,)
mes_users (,toto,) (,titi,)
root@192.168.90.1# cat /etc/exports (sur le serveur NFS)
#j'autorise mes_machines monter /home
/home @mes_mach(rw,root_squash,async)
root@192.168.69.2# tail -2 /etc/passwd (sur le client NIS)
#lignes toto,titi de la map passwd non visibles du client
-@mes_users:
#lignes root,ogluck de la map passwd visibles du client
+@net_admins::::::

Pour installer les NIS (mise en place de la base)

ypinit -m sur le serveur NIS matre


ypinit -s master-server sur serveur esclave

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

111

NIS : en pratique...

Savoir si les services sont en place

root@ 192.168.69.2# rpcinfo -u


program 100004 version 1 ready
program 100004 version 2 ready
root@ 192.168.69.2# rpcinfo -u
program 100007 version 1 ready
program 100007 version 2 ready
root@ 192.168.69.2# ypwhich
192.168.90.2

192.168.90.2 ypserv
and waiting
and waiting
192.168.69.2 ypbind
and waiting
and waiting

Contrle de l'accs au serveur NIS

root@ 192.168.90.2# cat /etc/ypserv.securenets


#This file defines the access rights to your NIS server
255.0.0.0
127.0.0.0
255.255.255.0
192.168.69.0
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

112

NIS : les procdures distantes

Exemples de RPC permettant l'interrogation d'un


serveur NIS

YPPROC_DOMAIN : retourne vrai si le serveur rpond au


domaine reu en paramtre, faux sinon ; utilis en
particulier par ypbind pour savoir si le serveur NIS
actuel rpond toujours (~ 20 secondes) sinon il en
cherche un autre dans /etc/yp.conf
YPPROC_MATCH : retourne la valeur associe la cl
passe en paramtre (ypmatch cl mapname)
YPPROC_ALL : retourne tous les couples cl/valeur de
la map passe en paramtre
YPPROC_MAPLIST : retourne la liste de tous les noms
de map pour le domaine pass en paramtre
YPPROC_XFR : permet de demander au serveur la mise
jour d'une map (dans la crontab, sur les serveurs
esclave : ypxfr passwd.byname)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

113

NIS : volutions

Dfauts des NIS

pas d'authentification des clients NIS : il suffit de


connatre le nom de domaine pour interroger le serveur
et connatre le contenu de ses maps
les maps sont transmises en totalit mme en cas de
faible modification de leurs contenus
pas adapt aux WAN (broadcast)

NIS+ un successeur phmre sans succs qui a


t officiellement abandonn au profit de LDAP
Cependant, les NIS sont encore largement utiliss
dans le cadre dun rseau local simple

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

114

Partie 2 : Applications de lInternet


de type Client/Serveur (suite1)
Olivier GLCK
Universit LYON 1/UFR dInformatique
Olivier.Gluck@ens-lyon.fr
http://www710.univ-lyon1.fr/~ogluck

Plan de la partie 2

Introduction / Rappel

Connexions distance (telnet/rlogin/rsh/ssh/X11)

Applications de transfert de fichiers (FTP/TFTP)

Accs aux fichiers distants (NFS/SMB)

Gestion d'utilisateurs distants (NIS)

DNS : un annuaire distribu

LDAP : un annuaire fdrateur scuris

La messagerie lectronique (SMTP/POP/IMAP)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

116

DNS : un annuaire distribu des


adresses de l'Internet
Le systme DNS
Une base de donnes distribue
Notions de zones et domaines
Les diffrents types de serveurs
Rsolutions rcursives et itratives
Cache DNS, Format des messages DNS
Commandes et fichiers lis au DNS

DNS : Domain Name System

Gens : plusieurs identifiants

Htes, routeurs :

#scu, nom, #Passeport


adresse IP (32 bits)
nom :
www.google.com
www.education.gouv.fr

Problme rsolu par le DNS : Comment relier les


adresses IP utilises pour acheminer les paquets
aux noms utiliss par les utilisateurs ou les
applications ?

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

118

DNS : Domain Name System

C'est une base de donnes distribue

implante dans une hirarchie de serveurs de noms

C'est un protocole applicatif

les htes, routeurs, serveurs de noms communiquent


pour effectuer la traduction
DNS est utilis par d'autres protocoles applicatifs mais
n'est pas utilis directement par l'application comme
SMTP...
modle Client/Serveur : un metteur interroge un
serveur de noms (serveur DNS)
port 53/UDP (ou 53/TCP pour les mises jour)
RFC 1034, 1035, 2181,

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

119

Les services fournis par le DNS

Le service principal : la traduction d'adresses


Autres services :

permettre le "Host aliasing" : donner un pseudonyme


une machine qui a un nom peu parlant
permettre le "Mail server aliasing" : un serveur Web et un
serveur Mail peuvent avoir le mme pseudonyme mme
s'ils nont pas la mme adresse IP (2 machines )
permettre la rpartition de la charge : un nom de serveur
Web ou Mail peut correspondre plusieurs adresses IP
(serveurs Web ou Mail rpliqus) avec un systme de
rotation dans les rponses du serveur DNS

Pour l'utilisateur, le DNS n'est qu'une bote noire


mais en ralit trs complique

une requte DNS peut impliquer plusieurs serveurs de


noms rpartis dans le monde entier

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

120

Un systme centralis ?

Pourquoi pas de DNS centralis ? Un seul serveur


contiendrait toutes les correspondances requises
par les applications de l'Internet

dimension de l'Internet : trop de correspondances


grer, nombre de requtes au serveur trop important
tolrance aux pannes : si le serveur DNS tombe, tout
l'Internet aussi !
volume de trafic impossible supporter par un seul
serveur
dlais de rponse : il faut faire en sorte que la
rponse soit la plus proche possible du demandeur
problme li la maintenance et aux mises jour
perptuelles de la base

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

121

Un systme distribu

Aucun serveur ne connat toutes les


correspondances nom <--> adresse IP

si un serveur ne connat pas une correspondance, il


interroge un autre serveur jusqu' atteindre le serveur
dtenant l'information dsire

Trois types de serveur DNS

les serveurs de noms locaux ( qui s'adressent les


requtes locales ; en charge de la rsolution)
les serveurs de noms racine (sont censs savoir
comment s'approcher de la rponse)
les serveurs de noms de source autorise
(contiennent les correspondances "officielles")

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

122

Un systme distribu
Le systme DNS

$ ssh ssh.ens-lyon.fr

client ssh

Quelle est l'adresse de


ssh.ens-lyon.fr ?
Rponse 140.77.167.6

serveur
DNS
local

Hte miage.univ-lyon1.fr
connexion ssh vers
140.77.167.6

serveur ssh

serveur
DNS
racine

serveur
DNS de
serveur
source
DNS
autoris
e

Hte ssh.ens-lyon.fr
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

123

La notion de domaine DNS


Un domaine est un sous-arbre entier de lespace de nommage
Label d'un nud : 63 caractres max.
Nom de domaine ou hte : 255 caractres max.

edu

com

Domaine complet

uk

fr

ens-lyon.fr univ-lyon1.fr

Domaine fr
Domaine ens-lyon.fr

ssh

Olivier Glck - 2014

hte ssh.ens-lyon.fr
Deux noeuds peuvent avoir le
mme nom dans des domaines
diffrents :
ssh.ens-lyon.fr et
ssh.univ-lyon1.fr

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

124

La notion de domaine DNS

Le premier niveau de l'arbre


Top Level Domain (TLD)
gr par l'ICANN (Internet Corporation for Assigned
Names and Numbers)
on distingue deux catgories de TLD
les "Generic TLD" : .com, .org, .gov, .gouv, .net, ...
les "Countries TLD" : .fr, .uk, .us, .jp, (240 en tout)

La gestion des autres niveaux est laisse aux


entits correspondantes (AFNIC pour .fr)

zone DNS : un sous-arbre de l'arbre administr


sparment par un organisme qui gre la dlgation des
noms et sous-domaines de la zone

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

125

La notion de zone DNS

Une zone = une administration centralise avec au moins un


serveur DNS (gnralement 1 primaire et 1 secondaire)

le secondaire (redondance) met jour ses donnes partir du primaire

Une zone doit connatre les adresses des serveurs DNS des
zones subordonnes
domaine univ-lyon1.fr
univ-lyon1.fr
cri

bat710

zone univ-lyon1.fr
zone bat710.univ-lyon1.fr
Zones
Domaine univ-lyon1.fr

Olivier Glck - 2014

NB : en ralit, bat710 n'est pas


une zone DNS de univ-lyon1.fr

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

126

La rsolution de noms inverse

Retrouver le nom
canonique partir de
l'adresse IP
Le domaine arpa : un
domaine particulier
gr par l'ICANN
permettant la
rsolution inverse
Rsolution

fr
ens-lyon.fr

140

255

ssh

Rsolution inverse
6.167.77.140.in-addr.arpa --> ?
Olivier Glck - 2014

in-addr

ssh.ens-lyon.fr --> ?

arpa

77

255
167

M2 SIR/RTS - Services et Protocoles Applicatifs sur


Internet

255
255
127

Les diffrents types de serveur DNS

Les serveurs de noms locaux

chaque organisation a un serveur de noms local


serveur DNS par dfaut de la zone
contient parfois les correspondances relatives la
zone de l'organisation
toutes les requtes DNS en provenance de cette
organisation vont vers ce serveur de nom local

Les serveurs de noms racine [RFC 2870]

il existe actuellement 13 serveurs racine dans l'Internet


(liste sur http://gnso.icann.org/gtld-registries/)
chaque serveur DNS local connat un serveur de noms
racine qu'il peut interroger s'il ne connat pas une
correspondance
un serveur de noms racine connat au moins les serveurs
de source autorise du premier niveau (.fr., )

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

128

Les diffrents types de serveur DNS

Un serveur de noms racine qui ne connat pas


une correspondance interroge un autre serveur
de noms le rapprochant de la rponse,
gnralement le serveur de noms de source
autorise qui connat la correspondance
Les serveurs de noms de source autorise

chaque hte est enregistr auprs d'au moins deux


"authoritative servers" (le primaire et le secondaire),
qui stocke son adresse IP et son nom
un serveur de noms est dit de source autorise pour
un hte s'il est responsable de la correspondance
nom/@ pour cet hte (serveur primaire de la zone)
un serveur de noms local n'est pas forcment de
source autorise (ex. bat710.univ-lyon1.fr)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

129

Les diffrents types de serveur DNS


1 primaire et
12 secondaires

1 serveur racine traite


plus de 1 milliard de
requtes par jour, soit
plus de 15000/s
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

130

Rsolution de noms rcursive/itrative

Requte rcursive

Requte itrative

la machine qui demande la rsolution de nom


contacte un serveur DNS et attend que ce dernier lui
retourne la rponse dsire
le serveur de noms contact fournit en rponse le
nom d'un autre serveur DNS contacter pour avancer
dans la rsolution
"je ne connais pas ce nom mais demande ce
serveur

Dans le cheminement d'une rsolution de nom,


certaines requtes peuvent tre itratives,
d'autres rcursives

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

131

Principe d'une rsolution rcursive


root name server
6 messages DNS

L'hte miage.univ-lyon1.fr
veut connatre l'adresse IP de
ssh.ens-lyon.fr

1. L'hte contacte son serveur DNS


local : bat710.univ-lyon1.fr
1

authoritative name server


cri.ens-lyon.fr

6
2. bat710.univ-lyon1.fr
local name server
contacte le serveur de noms
bat710.univ-lyon1.fr
racine (si ncessaire)

3. le serveur de noms racine


contacte le serveur de nom
"authoritative" (si ncessaire)
Olivier Glck - 2014

Hte formulant la requte


miage.univ-lyon1.fr

Hte distant
ssh.enslyon.fr 132
M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

Principe d'une rsolution rcursive


Cas o un serveur
intermdiaire est ncessaire

root name server

2
Le serveur de noms
7
racine ne connat pas
forcment le serveur
de source autorise
qui le renseignera sur 1 8
la correspondance local name server
bat710.univ-lyon1.fr
recherche
Passage par un ou
plusieurs serveurs de
noms intermdiaires
Hte formulant la requte
miage.univ-lyon1.fr
Olivier Glck - 2014

8 messages DNS
6

3
intermediate name server
(zone fr)
ns1.nic.fr
5

authoritative name server


cri.ens-lyon.fr

Hte distant
ssh.ens-lyon.fr

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

133

Principe d'une rsolution itrative


root name server
A qui dois-je demander pour
ssh.ens-lyon.fr ?

2
Gnralement les
3
requtes sont toutes
4
rcursives sauf celle
entre le serveur de
7
noms local et le
1
8
serveur de noms
local name server
racine
bat710.univ-lyon1.fr
--> permet de moins
solliciter le serveur
racine (moins
exigeant en termes
de ressources) Hte formulant la requte
miage.univ-lyon1.fr
Olivier Glck - 2014

Requte/Rponse itratives
intermediate name server
(zone fr)
ns1.nic.fr
6

authoritative name server


cri.ens-lyon.fr

Hte distant
ssh.ens-lyon.fr

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

134

La mise en mmoire cache DNS

Ide gnrale des caches : rduire le temps de


rponse

ici, le temps de rponse d'une rsolution de nom, en


diminuant le nombre de messages DNS en transit
ncessaires !
le serveur de noms (quelconque) stocke dans son
cache les informations rcentes (en particulier les
enregistrements de type NS)
comme la mmoire n'est pas infinie et que les
donnes du cache peuvent ne plus tre valables au
bout d'un certain temps, les donnes expirent du
cache aprs un certain temps TTL (environ 2 jours)
un serveur qui mmorise dans son cache un
enregistrement DNS n'a pas autorit dessus
--> spcifie "no authoritative" dans la rponse

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

135

Etude de diffrents cas de figure

Source : http://media.pearsoncmg.com/aw/aw_kurose_network_2/applets/dns/
dns.html

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

136

Les messages DNS

[RFC 1034, 1035]

Un message de rponse DNS contient un ou


plusieurs RR (Resource Record)
l'unit de stockage d'une correspondance dans le cache
RR = (Nom, Type, Classe, TTL, Valeur)
Type (16 bits) : type de l'enregistrement ; la signification
de Nom (N octets) et Valeur dpend du type
Classe (16 bits) : famille de protocoles ; Classe=1
pour Internet (IN)
TTL (32 bits) : temps en secondes pendant lequel il faut
conserver l'enregistrement dans le cache
Valeur = RDLENGTH (16 bits) + RDATA (N octets)

Un message de requte DNS contient des questions


du type (Nom, Type, Classe)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

137

Les messages DNS

[RFC 1034, 1035]

Un unique format pour les Requtes/Rponses


12 octets d'en-tte DNS

un identifiant qui permet au client d'associer la rception


d'une rponse une requte formule
les fanions : 2 octets

QR : 0 si requte, 1 si rponse
OPCODE (4 bits) : 0 (QUERY), 1 (Inverse QUERY),
AA : 1 si le serveur de noms qui rpond a autorit sur la rponse sollicite
TC : le message a t tronqu --> utiliser TCP
RD : 1 dans la requte si le client souhaite que le serveur de noms effectue
une rcursion s'il ne dispose pas de la traduction demande
RA : 1 dans la rponse si le serveur de noms contact assure la rcursion
AD et CD (dans Z) : "Authentic Data" et "Checking Disabled" (DNSSEC)
RCODE (4 bits) : 0 (pas d'erreur), 3 (Name error), 5 (Refused),
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

138

Les messages DNS

[RFC 1034, 1035]

512 octets max. avec UDP


Identification

Fanions

Nombre de
Nombre de rponses
12 octets d'en-tte
questions
(RR)
Nombre de
Nombre de RR
"authority servers"
supplmentaires
Questions
QUESTION SECTION
(nombre variable de questions)
Rponses
(RRs rpondant la demande)

ANSWER SECTION

Noms des serveurs de source autorise


(RRs des serveurs primaire/secondaire)

AUTHORITY SECTION

Adresses des serveurs de source autorise


(nb. variable de RRs)

ADDITIONAL SECTION

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

139

Les messages DNS

[RFC 1034, 1035]

12 octets
d'en-tte
TTL

Classe Type

Valeur

Serveur primaire
Serveurs
secondaires

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

140

Les messages DNS

[RFC 1034, 1035]

Type=A (val=1) : sert dcrire une correspondance


Nom=nom d'hte (canonique), Value=@IPv4
Type=AAAA (val=28, RFC 1886) : idem mais adresse IPv6
Nom=nom d'hte, Value=@IPv6
Type=PTR (val=12) : sert la rsolution inverse
Nom=un nom de la zone arpa, Value=nom canonique
(valeur pointe)
Type=NS (val=2) : sert associer un nom de domaine un
serveur de noms de source autorise
Nom=domaine, Value=nom du serveur de noms
Type=CNAME (val=5) : sert dfinir un alias pour un hte
Nom=un alias, Value=nom canonique (le vrai nom)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

141

Les messages DNS

[RFC 1034, 1035]

Type=MX (val=15) : alias rservs aux serveurs mail


permettant d'associer plusieurs serveurs de mail avec
diffrentes priorits une mme adresse (RFC 974)
Nom=un alias, Value=nom canonique d'un serveur de mail
Type=SOA (val=6) : sert donner des infos sur la zone gre
Nom=nom d'une zone, Value=informations sur la zone
Type=ANY (val=255) : utilis dans les questions pour indiquer
n'importe quel type (*)
Type=AXFR (val=252) : utilis dans les questions pour
demander le transfert d'une zone entire (mise jour d'un
serveur secondaire)
Type=HINFO (val=13) : sert indiquer les CPU et OS de l'hte
interrog

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

142

Les messages DNS

[RFC 1034, 1035]

Exemples

ssh.ens-lyon.fr.

CNAME

fulmar.ens-lyon.fr.

ens-lyon.fr.

NS

cri.ens-lyon.fr.

ens-lyon.fr.

NS

ens.ens-lyon.fr.

cri.ens-lyon.fr.

140.77.1.32

relaissmtp.ens-lyon.fr.

CNAME

pluvier.ens-lyon.fr.

ens-lyon.fr.

MX

20 pluvier.ens-lyon.fr.

ens-lyon.fr.

MX

30 pluvier2.ens-lyon.fr.

listes.ens-lyon.fr.

MX

20 pluvier.ens-lyon.fr.

fulmar.ens-lyon.fr.

140.77.167.6

6.167.77.140.in-addr.arpa.PTR
Olivier Glck - 2014

fulmar.ens-lyon.fr

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

143

Routage de courrier et DNS

Centraliser la rception des messages sur une


machine qui a un systme plus robuste

[RFC 974]

anti-virus, anti-spam,
seule machine accessible sur le port 25 depuis l'extrieur
via le pare-feu

Les MX permettent ensuite de rpartir la charge sur


diffrents serveurs de mail et de disposer de
serveurs de secours

en cas de saturation, le serveur SMTP peut aiguiller les


messages via un autre serveur SMTP interne

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

144

La commande host

ogluck@lima:~$ host ssh.ens-lyon.fr


ssh.ens-lyon.fr is an alias for fulmar.ens-lyon.fr.
fulmar.ens-lyon.fr has address 140.77.167.6
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

145

La commande host

Pour connatre les serveurs de source autorise d'une zone :


host -a nom_zone ou host -t ns nom_zone

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

146

Les messages DNS - type PTR


6.167.77.140.in-addr.arpa est un pointeur
vers fulmar.ens-lyon.fr

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

147

Les messages DNS - types AXFR, SOA


Demande du contenu de toute la zone ens-lyon.fr

REFRESH RETRY EXPIRE


Indique l'email de la
Numro de srie
personne responsable de
de la zone
la zone (lire admin@)
Olivier Glck - 2014

TTL export dans


les RR de la zone

Serveur
primaire

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

148

Le DNS Round-robin

Les alias : plusieurs noms correspondent une mme


adresse IP
Le Round-robin : un mme nom correspond plusieurs
adresses IP --> permet d'avoir de la redondance (plusieurs
RRs de type A)
Le DNS change l'ordre chaque nouvelle requte pour
rpartir la charge

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

149

La mise en mmoire cache

Rponse non authoritative :


flag aa absent (rponse
provenant du cache)

Lors de chaque nouvelle


requte, le TTL a diminu !
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

150

La commande dig

Rend les mmes services que host mais est


encore plus bas niveau : permet en particulier de
voir l'ensemble des requtes/rponses
Un serveur DNS
local donne les
serveurs de source
autorise pour la
zone
"." (serveurs
racines)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

151

La commande dig

Suite...

Le serveur racine I donne les serveurs de


source autorise pour la zone "fr."

Finalement, la
rponse est
donne par
imag.imag.fr
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

152

Du ct client - le resolver

Le resolver a en charge les rsolutions de noms


(inverse ou pas) chaque fois que cela est
ncessaire --> man resolver
Deux fichiers de configuration lui sont associs
/etc/resolv.conf permet de paramtrer les requtes
DNS effectues (man resolv.conf)
/etc/host.conf permet de paramtrer le resolver
(man host.conf), en particulier ordre de rsolution
order hosts,bind,nis
/etc/nsswitch.conf est consult en premier s'il existe

Extrait de l'API du resolver pour les applications

gethostbyname(name)
gethostbyaddr(addr)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

153

Du ct client - les commandes


Le nom complet de la machine est
fix au dmarrage (souvent nom
court dans /etc/hostname)
Nom de domaine
Nom court (avant le premier .)
Permet root de changer le nom
Nom complet

/etc/hosts permet de dfinir des alias


(@IP nom_canonique aliases)
Rsolution inverse par le resolver
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

154

Le fichier /etc/nsswitch.conf
Permet de spcifier l'ordre des mthodes de
rsolutions (ligne hosts pour la rsolution de noms)
man nsswitch.conf

Ici /etc/hosts, map


hosts.by... via les NIS, DNS
Pour chaque source, on peut prciser l'action
entreprendre selon le statut retourn ; par dfaut :
[SUCCESS=return NOTFOUND=continue
UNAVAIL=continue TRYAGAIN=forever]
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

155

Configuration d'un poste de travail

Indiquer le(s)
serveur(s) de noms
locaux
Olivier Glck - 2014

Suffixe DNS principal


pour cette connexion

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

156

Le fichier /etc/resolv.conf
ogluck@lima:~$ cat /etc/
resolv.conf
search univ-lyon1.fr
search cri2000.ens-lyon.fr
search ens-lyon.fr
search abbloi.org
nameserver 140.77.1.32
nameserver 140.77.1.183

Le ct client du DNS :
permet de spcifier
comment et qui
formuler les requtes
Au maximum 6 lignes
search
Au maximum 3 lignes
nameserver
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

157

Le fichier /etc/resolv.conf

Importance de
l'ordre des
suffixes de
recherche

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

158

Le serveur de noms named (BIND)

BIND : Berkeley Internet Name Domain

http://www.isc.org/sw/bind
implantation d'un serveur DNS du domaine publique

Le dmon rpondant aux requtes DNS est named


fichier de configuration : named.conf
il faut y associer les fichiers dcrivant les zones
administres (syntaxe master files : voir RFC 1035)
--> dans /etc/namedb ou /etc/bind

Des utilitaires

rndc permet de contrler distance le fonctionnement


de named (avec authentification)
named-checkconf et named-checkzone permettent
de vrifier la syntaxe des fichiers de zones ou config.

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

159

Le fichier named.conf
man named.conf

######$ cat /etc/bind/named.conf


// This is the primary configuration file
// for the BIND DNS server named.
options {
// rpertoire de travail de named
directory "/var/cache/bind";
// si le serveur n'a pas la rponse
// il forward un autre
forward first;
forwarders {
134.214.88.23;
134.214.88.10;
};
};
// prime the server with knowledge
// of the root servers
zone "." {
// copie m.a.j. au dmarrage
type hint;
file "/etc/bind/db.root";
};
Olivier Glck - 2014

// be authoritative for the localhost


// forward and reverse zones, and
// for broadcast zones as per RFC 1912
zone "localhost" {
type master; // autorit pour la zone
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
// add entries for other zones below here
//

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

160

Les fichiers dcrivant une zone


RFC 1035

######$ cat /etc/bind/db.root


;
This file holds the information on root name servers needed to
;
initialize cache of Internet domain name servers
;
This file is made available by InterNIC
;
Sur ftp://ftp.rs.internic.net/domain/named.root
.
3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.
3600000
A
198.41.0.4
;
.
3600000
NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.
3600000
A
128.9.0.107
;
; formerly C.PSI.NET
;
.
3600000
NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.
3600000
A
192.33.4.12
;
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

161

Les fichiers dcrivant une zone


######$ cat /etc/bind/db.local
; BIND data file for local loopback interface
$TTL 604800
@
IN
SOA
localhost. root.localhost. (
1
; Serial
604800
; Refresh
@ dsigne le nom de la
86400
; Retry
zone (ici localhost)
2419200
; Expire
604800 )
; Negative Cache TTL
;
@
IN
NS
localhost.
@
IN
A
127.0.0.1
######$ cat /etc/bind/db.127
; BIND reverse data file for local loopback interface
$TTL 604800
@
IN
SOA
localhost. root.localhost. (
1
; Serial
; Refresh
@ dsigne le nom de la zone 604800
86400
; Retry
(ici 127.in-addr.arpa)
2419200
; Expire
604800 )
; Negative Cache TTL
;
@
IN
NS
localhost.
1.0.0.127.in-addr.arpa
1.0.0 IN
PTR
localhost.
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

162

Partie 2 : Applications de lInternet


de type Client/Serveur (suite2)
Olivier GLCK
Universit LYON 1/UFR dInformatique
Olivier.Gluck@ens-lyon.fr
http://www710.univ-lyon1.fr/~ogluck

Plan de la partie 2

Introduction / Rappel

Connexions distance (telnet/rlogin/rsh/ssh/X11)

Applications de transfert de fichiers (FTP/TFTP)

Accs aux fichiers distants (NFS/SMB)

Gestion d'utilisateurs distants (NIS)

DNS : un annuaire distribu

LDAP : un annuaire fdrateur scuris

La messagerie lectronique (SMTP/POP/IMAP)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

164

LDAP : un annuaire fdrateur scuris

Problmatique rsolue par LDAP

Permettre la fusion de multiples BD dans un unique


annuaire informatique

base Microsoft Excel du personnel administratif


base Microsoft Access du personnel enseignant
base Microsoft Excel des numros de tlphone
base /etc/passwd des comptes Unix des utilisateurs
base /etc/aliases (ou Sympa) de listes de Mail
base Samba des utilisateurs Windows
autres bases MySQL, Oracle, maps NIS,

Comment envoyer un mail l'ensemble du


personnel administratif sachant que l'administrateur
systme recevra uniquement une liste de (Nom,
Prnom) ?

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

166

Le concept d'annuaire

Annuaire informatique

service permettant d'accder des informations


relatives des personnes, des machines (ou autres
ressources) de manire organise
objectif : maintenir de faon cohrente et contrle
une grande quantit de donnes

Systme de gestion de base de donnes (SGBD)

le schma des donnes stockes est dfini pour


rsoudre un certain problme ; il est connu des applis
les objets sont gnralement complexes, stocks dans
diffrentes tables ayant des relations entre elles
un langage spcifique permet la lecture et mise jour
des tables (requtes SQL, )

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

167

Le concept d'annuaire

Diffrences annuaire/SGBD - dans un annuaire :

pas de liens de dpendances entre les objets stocks


les objets peuvent tre distribus sur plusieurs
annuaires pour assurer une meilleure disponibilit
le schma de stockage des donnes est standardis
pour assurer un partage des donnes
les applications de l'annuaire n'ont pas besoin de
connatre la structure interne des donnes stockes
un annuaire est principalement consult en lecture et
optimis pour cela

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

168

L'annuaire LDAP

LDAP : Lightweight Directory Access Protocol


Hritier de l'annuaire X500 (propose par l'ISO)

standard conu par les oprateurs tlcom pour


interconnecter leurs annuaires tlphoniques
X500 adapt Internet --> LDAP (mme modle de
schma, )

Propos l'IETF en 1995

standard d'annuaire sur TCP/IP


le standard ne concerne pas le contrle d'accs aux
donnes de l'annuaire
Version 3 actuellement [RFC 2251]
Aussi : RFC 2252 2256, RFC 2829 2830, RFC 2849

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

169

L'annuaire LDAP

Objectifs

fournir aux utilisateurs des informations fiables,


facilement accessibles
permettre aux utilisateurs de mettre jour eux-mmes
leurs informations personnelles
rendre les informations accessibles de faon contrle
faciliter le nomadisme des utilisateurs
viter la redondance d'informations : un seul annuaire
pour l'ensemble des services
faciliter la gestion (administration) des postes de
travail, des quipements rseau

sans remettre en cause les applications existantes !


Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

170

L'annuaire LDAP

Un modle d'information : type des informations


contenues dans l'annuaire
Un protocole d'accs : comment accder aux
informations contenues dans l'annuaire
Un modle de nommage : comment l'information
est organise et rfrence
Un modle fonctionnel : une syntaxe des requtes
permettant l'interrogation de la base et la mise
jour des informations
Un modle de duplication : comment la base est
rpartie sur diffrents serveurs (tolrance aux
pannes, rpartition de la charge du serveur, )
Un modle de scurit : comment contrler l'accs
aux donnes ainsi que leur transfert

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

171

Le protocole LDAP

Il dfinit

les changes de la connexion Client/Serveur


commandes de connexion au service : bind,
unbind, abandon (le client abandonne la requte
en cours)
commandes de mises jour des entres de
l'annuaire : add, delete, modifiy, rename
commandes d'interrogation : recherche (search)
et comparaison (compare) d'entres
le format de transport des donnes
pas de l'ASCII comme SMTP, HTTP,
encodage LBER : Lightweight Basic Encoding Rules

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

172

Le protocole LDAP

Il dfinit

les changes de la connexion Serveur/Serveur


la rplication (replication service), en cours de
normalisation (LDUP : LDAP Duplication Protocol)
crer des liens entre diffrents annuaires (referral
service) - dfini dans LDAPv3
les mcanismes de scurit
mthodes d'authentification pour se connecter
l'annuaire (qui peut se connecter l'annuaire et
comment)
mcanismes de rgles d'accs aux donnes (une fois
connect, quoi peut-on accder et avec quels droits)
mcanismes de chiffrement des transactions

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

173

Le protocole LDAP

LDAPv3 est conu pour tre extensible sans avoir


modifier la norme

permet l'ajout d'oprations (en plus des 9 de base)


permet l'ajout de paramtres associs une opration
les mcanismes de scurit sont dfinis dans une
couche spar : permet des mthodes
d'authentification externes

ogluck@lima:/etc/ldap$ cat /etc/services | grep ldap


ldap 389/tcp # Lightweight Directory Access Protocol
ldap 389/udp # Lightweight Directory Access Protocol
ldaps 636/tcp # LDAP over SSL
ldaps 636/udp # LDAP over SSL
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

174

Se connecter une base LDAP


Deux principaux diteurs graphiques : GQ sous Unix
(http://biot.com/gq/)et LDAP Browser\Editor sous
Windows (http://www.iit.edu/~gawojar/ldap/)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

175

Le modle d'information

Un annuaire est constitu de schmas LDAP qui vont


dterminer les objets utilisables dans l'annuaire
Un schma LDAP

dfinit une liste des classes d'objets, les types des attributs
et leur syntaxe rpondant aux normes de l'Object
Management Group (OMG)
standardis (IANA) : pour l'interoprabilit entre logiciels
permet l'interfaage avec les applications (Samba, )

ogluck@lima:/etc/ldap$ ls /etc/ldap/schema/
README core.schema inetorgperson.schema krb5-kdc.schema
nis.schema corba.schema cosine.schema java.schema
misc.schema openldap.schema
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

176

Le modle d'information

Un attribut est dfini par

Les classes d'objets modlisent

un nom, un identifiant unique (OID), mono/multi-valu,


une syntaxe et des rgles de comparaison (matching
rules), une valeur (format+taille limite), modifiable ou non
des objets rels : un compte Unix (posixAccount), une
organisation (o), un dpartement (ou), un personnel
(organizationPerson), une imprimante (device),
ou abstraits : l'objet pre de tous les autres (top),

Une classe d'objet est dfinie par

un nom, un OID, des attributs obligatoires, des attributs


optionnels, un type (structurel, auxiliaire ou abstrait)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

177

Le modle d'information
Exemple d'attribut

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

178

Le modle d'information
Exemple de classe d'objet

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

179

Le modle d'information

Les classes d'objets forment une structure arborescente :


tout en haut, l'objet top
top
person

organisationalUnit

organisationalPerson
inetOrgPerson

Chaque objet hrite des attributs de l'objet dont il est le fils


Plus d'infos :
http://www.it.ufl.edu/projects/directory/ldap-schema/
http://ldap.akbkhome.com/

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

180

Le modle d'information

top
person

organisationalUnit

organisationalPerson
inetOrgPerson
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

181

Le modle de nommage

Il dfinit comment sont organises les entres


(=objets) de l'annuaire et comment elles sont
rfrences
Structure arborescente contenant deux catgories
d'objets

les conteneurs (une zone de rangement) : dpart d'une


nouvelle branche
peuvent contenir des conteneurs ou des feuilles
gnralement, une sous-organisation de l'organisation
(dpartement, zone gographique, )
les feuilles (vritables donnes) : terminaison des
branches (gnralement les machines, les utilisateurs, )

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

182

Le modle de nommage

Structure logique hirarchique : le DIT (Directory


Information Tree)
Une entre est identifie par un nom unique : le
DN (Distinguish Name)
RDN - Relative Distinguish Name
dc=lip,dc=ens-lyon,dc=fr

ou=Hosts

ou=People ou=Group
uid=ogluck

Olivier Glck - 2014

Root Entry ou
base DN
cn=admin

ou=group,dc=lip,dc=ens-lyon,dc=fr

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

183

Le modle de nommage
Une structure arborescente

baseDN ou suffix

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

184

Le format LDIF

LDAP Data Interchange Format (LDIF)


Standard de reprsentation des entres sous
format texte --> permet de

faire des imports/exports de la base ou d'une partie


crer, ajouter, modifier, un grand nombre d'entres
de faon automatise

dn: uid=ogluck,ou=People,dc=lip,dc=ens-lyon,dc=fr
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
uid: ogluck
uidNumber: 44132
gidNumber: 200
homeDirectory: /home/toto
cn: Olivier GLUCK
loginShell: /bin/bash

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

185

Le modle fonctionnel

Il dcrit le moyen d'accder aux donnes (syntaxe


des requtes) et les oprations que l'on peut leur
appliquer
Rappel des oprations de consultation/mise jour

oprations de mise jour des entres de l'annuaire :


add, delete, modify, rename
oprations d'interrogation : recherche (search) et
comparaison (compare) d'entres
--> il n'y a pas d'opration de lecture d'une entre :
pour connatre le contenu d'une entre, il faut crire
une requte qui pointe sur cette entre

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

186

Le modle fonctionnel

Une requte est compose de 8 paramtres

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

187

Le modle fonctionnel

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

188

Le modle fonctionnel

Les filtres de recherche [RFC 2254]

(<operator>(<search operation>)(<search operation>))

(mail=*) # existence
(uidNumber>=40000) # comparaison
(|(ou=People)(ou=Group)) # OU
(&(cn=Olivier*)(!(uid=ogluck))) # ET, contient, NON
(&(objectClass=posixGroup)(|(cn=reso*)(memberUid=*ogluck*)))

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

189

Les URLs LDAP [RFC 1959]

Permet aux clients


Internet d'avoir un accs
direct aux annuaires
LDAP
Syntaxe :

ldap[s]://<host>:<port>/<base_dn>?<attr>?<scope>?<filter>

<base_dn> : point de dpart de


la recherche
<attr> : attributs consults
<scope> : tendue de la
recherche (base, one, sub)
<filter> : filtre de recherche
(objectClass=*) par dfaut
ldap://lip-ldap-master.ens-lyon.fr:389/dc=lip,dc=ens-lyon,dc=fr??sub?(cn=Olivier*)
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur


Internet

190

Les URLs LDAP [RFC 1959]

L'annuaire LDAP permet la mise


jour du carnet d'adresses

191
Olivier Glck - 2014
M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet
ldap://lip-ldap-master.ens-lyon.fr:389/dc=lip,dc=ens-lyon,dc=fr?uid,cn?sub?(cn=Olivier*)

Le modle de duplication

Il dfinit comment dupliquer


l'annuaire sur plusieurs serveurs

amliorer le temps de rponse


tre tolrant aux pannes

Rplication

Deux types de serveurs LDAP

Master :
slapd,slurpd

Rplication

Replicated
DBs

supplier serveur (matre) : fournit les


donnes
Slave : slapd
consumer server (esclave) : reoit les
donnes du matre

Master DB et
fichier journal
des modif

Slave : slapd

Possibilit de partionner l'annuaire


(clatement sur plusieurs serveurs)

liens virtuels entre les diffrentes


partitions (referral service)

Olivier Glck - 2014

Client LDAP

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

192

Le modle de scurit

Authentification pour se connecter au service

Anonymous authentification, Root DN/passwd


authentification (administrateur), User DN/passwd

Contrle de l'accs aux donnes

droits d'accs aux donnes (fonctions de l'utilisateur


authentifi) : lecture d'une valeur (read), modification
(write), recherche (search), comparaison (compare),
search : les donnes peuvent tre une cl de recherche
read : permet de lire les donnes issues d'une recherche
(par ex. search sur cn mais read seulement sur Phone Number)

rgles dfinies sous forme d'ACLs (Access Control List) au


niveau du sommet, d'un sous-arbre ou d'une entre

Chiffrement des transactions (LDAP+SSL, )


Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

193

Mettre en place un annuaire LDAP

Il faut bien choisir les schmas

Il faut rflchir l'organisation du DIT

Quelles informations veut on stocker dans l'annuaire ?


--> choix des objets contenant les attributs dsirs
Quelles sont les applications qui vont utiliser l'annuaire ?
Authentification des utilisateurs sous Unix, sous
Windows (samba), gestion des groupes d'utilisateurs,
listes de mail dynamiques (sympa), carnets
d'adresses Netscape, ... ?
impacts sur la performance, les droits d'accs,

Puis dans un second temps

gestion centralise sur un seul serveur ?


nombre de serveurs redondants ? Emplacement ?

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

194

OpenLDAP

Logiciel LDAP du domaine public


Le dmon slapd

Le dmon slurpd

traite les requtes LDAP


permet la rplication

Des librairies LDAP


par exemple, pour authentifier les login via LDAP
libpam-ldap, libnss-ldap

Des utilitaires

ldapadd
ldapmodrdn

Olivier Glck - 2014

ldapdelete
ldappasswd

ldapmodify
ldapsearch

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

195

Le fichier /etc/ldap/slapd.conf

Permet de configurer le dmon slapd

dfinition des schmas utiliss

include /etc/ldap/schema/inetorgperson.schema

dfinition du backend (moteur de base de donnes utilis


pour ranger les donnes)

database ldbm (ldbm par dfaut, sinon sql, ...)

dfinition de la base de l'annuaire et de l'administrateur


le suffixe : racine de l'arbre
suffix "dc=lip,dc=ens-lyon,dc=fr"

l'administrateur et son mot de passe

rootdn cn=admin,dc=lip,dc=ens-lyon,dc=fr
rootpw toto

le rpertoire o la base est stocke

directory "/var/lib/ldap"
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

196

Le fichier /etc/ldap/slapd.conf

dfinitions des ACLs (man slapd.access)

# Format d'un ACL :

access to <what> [ by <who> <access> [ <control> ] ]+


<what>: *, un dn, un filtre LDAP, une liste d'attributs (attrs=)
<who> : *, dn, anonymous, users (quelqu'un authentifi), self (le proprio),
<access> : none, auth, compare, search, read, write,
<control> : stop, continue, break (imbrication des rgles)
# Par dfaut :

access to attrs=userPassword
by dn="" write # l'admin
by anonymous auth # droit de lecture uniquement lors du bind
by self write # le propritaire
by * none
# The admin dn has full write access

access to *
by dn="" write
by * read # ncessaire d'avoir read pour le bind
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

197

Le fichier /etc/ldap/slapd.conf

dfinition des rplicats


sur le serveur matre
# fichier dans lequel slapd stocke les modifications pour slurpd
replogfile /var/lib/ldap/replog
# dfinition d'un rplicat
replica host=ldap.ens-lyon.fr:389 bindmethod=

sur un esclave

# le dn autoris faire la mise jour


updatedn "souvent slurpd"
# URL du matre
updateref ldap://master-ldap.ens-lyon.fr:389

man slapd.conf

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

198

Le fichier /etc/ldap/ldap.conf

Permet de donner des informations aux clients LDAP

man ldap.conf

peut aussi tre fait dans ~/.ldaprc

ou par des variables d'environnements


# base par dfaut contacter pour les oprations LDAP
BASE dc=lip,dc=ens-lyon,dc=fr
# en tant que qui le client se connecte la base
BINDDN uid=ogluck,ou=People,dc=lip,dc=ens-lyon,dc=fr
# le serveur auquel se connecter
HOST ldap.ens-lyon.fr:389
# d'autres options de configuration...

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

199

Ajouter des entres dans l'annuaire

Ecrire (ou gnrer) un fichier LDIF

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

200

Ajouter des entres dans l'annuaire

Utiliser la commande ldapadd

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

201

Ajouter des entres dans l'annuaire

Utiliser un client LDAP permettant l'ajout d'entres

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

202

Interroger l'annuaire
ldapsearch

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

203

Liens avec les applications


Recompiler Samba avec --with-ldapsam
Rcuprer samba.schema
Modifier smb.conf pour paramtrer l'accs au serveur LDAP
libpam-ldap
libnss-ldap

Gestion dynamique de
mailing-listes

Modifier /etc/pam.d/login
Paramtrage des connexions LDAP : /etc/
libnss-ldap.conf et /etc/
Module auth_ldap intgr Apache
pam_ldap.conf
Permet l'authentification des accs via LDAP
Modifier /etc/nsswitch.conf
Voir http://www.rudedog.org/

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

204

Authentification Unix via LDAP

PAM - Pluggable Authentification Modules

Configurer l'accs la base LDAP dans

permet de grer la politique d'authentification des


connexions sans recompiler quoi que ce soit
pour authentification via LDAP, rajouter la ligne
auth sufficient pam_ldap.so dans le
fichier /etc/pam.d/login qui signifie
l'authentification via LDAP est suffisante
voir aussi /etc/pam.d/ssh, /etc/pam.d/rsh
/etc/libnss-ldap.conf et /etc/pam_ldap.conf

voir les pages man associes

Indiquer dans /etc/nsswitch.conf l'ordre


d'interrogation pour l'authentification

toujours laisser files en premier !

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

205

Authentification Unix via LDAP

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

206

Authentification Unix via LDAP

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

207

Authentification Samba via LDAP

Dans /etc/samba/smb.conf

[global]
# paramtrage des connexions LDAP
ldap server = localhost
ldap port = 389
ldap suffix = "dc=lima,dc=ens-lyon,dc=fr"
ldap admin dn = "cn=admin,dc=lima,dc=ens-lyon,dc=fr"
ldap ssl = no

Aprs avoir cr une entre sambaAccount dans


l'annuaire pour user_login, il suffit de faire
smbpasswd user_login pour que Samba
mettent jour les champs Samba dans l'annuaire

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

208

Partie 2 : Applications de lInternet


de type Client/Serveur (suite3)
Olivier GLCK
Universit LYON 1/UFR dInformatique
Olivier.Gluck@ens-lyon.fr
http://www710.univ-lyon1.fr/~ogluck

Plan de la partie 2

Introduction / Rappel

Connexions distance (telnet/rlogin/rsh/ssh/X11)

Applications de transfert de fichiers (FTP/TFTP)

Accs aux fichiers distants (NFS/SMB)

Gestion d'utilisateurs distants (NIS)

DNS : un annuaire distribu

LDAP : un annuaire fdrateur scuris

La messagerie lectronique (SMTP/POP/IMAP)

Le protocole HTTP

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

210

La messagerie lectronique
Les diffrents composants
Configuration d'un agent utilisateur
Le protocole SMTP
Codage des messages et types MIME
Les protocoles d'accs

Courrier lectronique : les composants

4 composants principaux :

des agents utilisateurs


des serveurs de mail
un protocole de transfert de
mail : Simple Mail Transfer
Protocol (SMTP)
un protocole d'accs la bote
aux lettres (POP, IMAP, )

user agent
Serveur
mail

SMTP

SMTP

Serveur
composition, dition, lecture du
mail
courrier lectronique
ex : Eudora, Outlook, elm, pine,
user agent
Netscape Messenger
un agent utilisateur dialogue
avec un serveur pour mettre/
user agent
recevoir des messages
M2 SIR/RTS - Services et Protocoles Applicatifs sur

Olivier Glck - 2014

user agent

SMTP

Les agents utilisateurs :

Serveur
mail

Internet

user agent

File des
messages sortants
user mailbox
212

Courrier lectronique : les composants

Les messages entrants et


sortants sont stocks sur le
user agent
serveur
Serveur
La bote aux lettres de
mail
chaque utilisateur contient
SMTP
les messages entrants (
lire)
File d'attente de messages SMTP
mail sortants ( envoyer)
SMTP
Protocole SMTP entre les
Serveur
serveurs de mail pour l'envoi
mail
des messages

Serveur
mail

user agent

user agent

user agent
modle C/S : Client (serveur
de mail metteur) - Serveur
File des
(serveur de mail rcepteur)
messages sortants
le client se connecte sur le
user agent
user mailbox
port 25/TCP du serveur pour
son message
213
Oliviertransfrer
Glck - 2014
M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

Courrier lectronique : les composants


1 send

Impossible d'afficher l'image. Votre ordinateur manque peut-tre de mmoire pour ouvrir l'image ou l'image est endommage. Redmarrez l'ordinateur, puis ouvrez nouveau le fichier. Si le x rouge est toujours affich, vous devrez peut-tre supprimer l'image avant de
la rinsrer.

2
user agent
metteur

SMTP

Serveur
sortant

SMTP

Serveur
entrant

6 get

POP, IMAP

user agent
rcepteur

Les protocoles d'accs : consultation de sa bote


aux lettres (aprs authentification)

POP3 : Post Office Protocol v3 [RFC 1939]


autorisation (agent <--> server) et tlchargement
IMAP4 : Internet Message Access Protocol v4 [RFC 3501]
plus de caractristiques, plus complexe, plus rcent
manipulation de messages stocks sur le serveur
HTTP (Webmail) : Hotmail , Yahoo! Mail,

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

214

Courrier lectronique : les composants


1 send

Impossible d'afficher l'image. Votre ordinateur manque peut-tre de mmoire pour ouvrir l'image ou l'image est endommage. Redmarrez l'ordinateur, puis ouvrez nouveau le fichier. Si le x rouge est toujours affich, vous devrez peut-tre supprimer l'image avant de
la rinsrer.

2
user agent
metteur

SMTP

Serveur
entrant

POP, IMAP

user agent
rcepteur

Dans les dbuts du courrier lectronique

SMTP

Serveur
sortant

6 get

il n'y avait pas de protocole d'accs


SMTP tait juste prvu pour changer du courrier entre le serveur
de l'metteur (client) et le serveur du rcepteur (serveur) -->
tapes 3-4-5 uniquement

Pourquoi un protocole d'accs et une volution de SMTP


permettant au serveur sortant d'tre la fois client et
serveur SMTP ?
Pourquoi une file des messages sortants ?
Pourquoi ne pas mettre le serveur sortant directement sur
le poste utilisateur ?
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

215

Analogie : le courrier "papier"


source : S. Vautherot

Envoi dun courrier


"papier"
elle
Moi

La
Poste
Olivier Glck - 2014

Centre
de
tri

Centre
de
tri

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

216

Configuration d'un agent utilisateur

L'identit permet de renseigner une partie de l'en-tte des


messages envoys
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

217

Configuration d'un agent utilisateur

Paramtrage du serveur sortant


Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

218

Configuration d'un agent utilisateur

Olivier
2014
M2 SIR/RTS
- Services
et Protocoles
Applicatifslocal
sur Internet
POP Glck
: les-
messages
sont
rapatris
dans
le rpertoire

219

Configuration d'un agent utilisateur

IMAP : les messages restent sur le serveur sauf s'ils sont


Olivier Glck - 2014
M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet
supprims, dplacs, ...

220

Le protocole SMTP [RFC 821]

Transfert direct entre le serveur metteur et le


serveur rcepteur (port 25/TCP)
3 phases de transfert

handshaking (tablissement de la connexion)


transfert d'un ou plusieurs messages
fermeture de la connexion

Les connexions sont persistentes

si plusieurs messages destination du mme serveur


sont en attente sur le serveur metteur, ils
transiteront tous sur la mme connexion TCP

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

221

Le protocole SMTP [RFC 821]

Un message est compos d'un en-tte et d'un


corps (RFC 822)

les champs de l'en-tte peuvent tre positionns soit


par l'agent utilisateur metteur, soit par le serveur
entrant, soit par le serveur sortant
un champ d'en-tte est de la forme
nom_champ: valeur<CRLF>

l'en-tte contient au minimum les champs From et


To, trs souvent le champ Subject
peut permettre de mettre en place des filtres

plus d'infos : http://www.cru.fr/messagerie/accents.html


Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

222

Le protocole SMTP [RFC 821]

Une succession de Commande/Rponse

Commande SMTP : texte ASCII


Rponse SMTP : code d'tat (status) + phrase

Un message peut contenir plusieurs objets ; ils


sont alors envoys dans un message
"multipart" (contrairement HTTP : 1 objet = 1
rponse)
Le serveur SMTP utilise CRLF.CRLF pour
reconnatre la fin d'un message
Les messages (en-tte ET corps) sont transfrs
en ASCII 7 bits (US-ASCII)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

223

Le codage des messages

SMTP est prvu pour transfrer des caractres US-ASCII


sur 7 bits --> problme de la reprsentation des
caractres accentus, du transfert des octets (images)
Pour transfrer une image ou du texte accentu, l'agent
utilisateur metteur/rcepteur doit encoder/dcoder le
contenu du message
Encodage quoted-printable :
gnralement utilis pour transfrer du texte
permet le transfert des caractres ASCII tendus
(cods sur 8 bits >128) comme les caractres
accentus :

ils sont cods par les 3 caractres US-ASCII suivants : =xx


o xx est le code hexadcimal du caractre encoder
du coup, il faut coder le caractre = diffremment : =20

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

224

Le codage des messages

Encodage base64 :
gnralement utilis pour transfrer des flux d'octets
permet le transfert des images ou autre srie d'octets
en tant que caractres ASCII NVT :

3 octets (24 bits) sont transfrs en tant que 4 caractres


ASCII NVT : les 3 octets sont dcoups en 4 fois 6 bits
bourrage avec le caractre = si pas align sur 4 caractres
permet de ne pas transfrer plus de bits que le contenu initial
(except le bourrage)

ESMTP [RFC 1425] : une volution de SMTP qui permet le


transfert des messages sans passer au format ASCII NVT
transfert de blocs de donnes sur 8 bits (flux d'octets)
spcifi par Content-Transfer-Encoding: 8bit ou Binary
dans l'en-tte
225
Olivier Glck - 2014
M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

Le codage des messages


source : S. Vautherot

utilisateur

UA

=E9

=E9
MTA
SMTP
=E9

utilisateur

UA

MTA
ESMTP
8BITMIME

=E9

MTA
SMTP
MTA
ESMTP
8BITMIME

=E9

=E9

MTA
SMTP

=E9

MTA
ESMTP
8BITMIME

mbox

mbox

mbox

mbox

Le codage est fait par lUA et/ou


le MTA selon les possibilits
(supposes) de lagent suivant
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

226

Les types MIME [RFC 2045, 2056]

MIME : Multi-purpose Internet Mail Extensions


Permet l'change de fichiers multimdias entre
machines quelconques en spcifiant dans l'en-tte

Les commandes MIME ont t intgres dans HTTP1.0


Un type MIME est compos

le type du fichier en vue d'un traitement par l'agent


utilisateur destinataire
le codage des donnes du fichier

d'un type gnral (text, image, audio, video, application)


et d'un sous-type (image/gif, image/jpeg,
application/pdf, application/rtf, application/
msword, text/plain, text/html)

En perptuelle volution
La machine cliente doit ensuite associer l'excution
d'une application chaque type MIME
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

227

Les types MIME [RFC 2045, 2056]


Content-Type: type/subtype; parameters
Lignes supplmentaires dans l'en-tte du message
pour dclarer un type MIME et un encodage
Content-type est gnralement positionn partir de
l'extension du document demand (/etc/mime.types)
MIME version
Mthode utilise
pour coder les donnes
Type MIME des donnes
multimdias
Donnes codes en base64
Olivier Glck - 2014

From: olivier_gluck@yahoo.fr
To: olivier.gluck@ens-lyon.fr
Subject: Voici une belle image !
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
H4sICGwcwDsfXuT2ziS59+DT4Gd27a7/T
[]
8jpLnCdTi6RTu8+FRqs2i/FR87Oinde==
M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

228

Le type Multipart
From: olivier_gluck@yahoo.fr
To: olivier.gluck@ens-lyon.fr
Subject: Voici une belle image mais avec du texte !
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=98766789
--98766789
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain
Cher Olivier,
Voici une photo de nos dernieres vacances !
--98766789
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
H4sICGYRMTQAA3NsaWRlcy5wcwDsfXuT2ziS59+DT4Gd275a
56o7LlgSJbFNiWpSqsfw6rvLxPgSxIlVnk64i54ftRKi67/T
[]
8jpLnCdTi6RTu8+FRqs2i/RTuy56plYbYVsa1fdvUjHrtV6g
RTf4/hy67fgIIVDfeR+rtYuNFR87Oinde==
--98766789-Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

229

Les commandes SMTP


Commande
HELO nom_client
MAIL From: <@exp>
RCPT To: <@dest>
DATA
QUIT
NOOP
RSET

Olivier Glck - 2014

Description
identifie le client SMTP ; tablit la connexion
identifie l'expditeur du message
dsigne le destinataire du message
indique le dbut du message (en-tte+corps)
termine la connexion
pas d'opration ; force le serveur rpondre
rinitialisation de la saisie de donnes (DATA)

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

230

Un change SMTP
"Nice to meet you !"
sender OK
receiver OK
Dbut de l'en-tte (DATA)
Fin de l'en-tte (ligne vierge)
Fin du message (<CR><LF>.<CR<LF>)

date/heure
Olivier Glck - 2014

queued as

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

231

Exemple d'en-tte

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

232

Exemple de contenu d'une bal

Une BAL n'est rien de plus


qu'un fichier !
(gnralement /var/mail/
user_login)
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

233

L'accs sa bote aux lettres

Par lecture directe du fichier (en local ou par


montage NFS)

Client NFS, SMTP

UA

Serveur NFS, SMTP


SMTP - Envoi du courrier

MTA

Montage NFS - L
ecture du courrie
r

out
in

/var/mail

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

234

L'accs sa bote aux lettres

En utilisant un protocole spcifique (POP, IMAP)


ou le protocole HTTP qui traverse gnralement
les pare-feus

Client SMTP, POP,


IMAP

UA

Serveur SMTP, POP,


SMTP - Envoi du courrier IMAP
out

MTA

in

/var/mail

imapd

Olivier Glck - 2014

popd

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

235

Le protocole POP3 [RFC 1939]


Phase d'autorisation

Commandes client :
user: dclare username
pass: password
Deux rponses possible du
serveur :
+OK
-ERR

Phase de transaction

list: liste les numros de


messages et leur taille
retr: rappatrie un message
partir de son numro
dele: efface un message
quit
Olivier Glck - 2014

S:
C:
S:
C:
S:

+OK POP3 server ready


user alice
+OK
pass hungry
+OK user successfully logged

C:
S:
S:
S:
C:
S:
S:
C:
C:
S:
S:
C:
C:
S:

list
1 498
2 912
.
retr 1
<contenu du message 1>
.
dele 1
retr 2
<contenu du message 2>
.
dele 2
quit
+OK POP3 server signing off

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

on

236

Le protocole POP3 [RFC 1939]

POP3 est extrmement simple

permet uniquement de tlcharger des messages


depuis le serveur en laissant ventuellement une
copie de ceux-ci dans la BAL de l'utilisateur
pas adapt aux utilisateurs nomades
impossible de grer des rpertoires sur le serveur
impossible de grer les messages en les laissant
sur le serveur

--> IMAP rpond cette problmatique au prix


d'un protocole beaucoup plus complexe
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

237

Le protocole IMAP [RFC 3501]

IMAP permet la gestion distante des messages

associe un message un rpertoire distant sur le


serveur
permet l'utilisateur de faire une recherche dans les
messages sur le serveur
permet de ne consulter que des extraits de messages
(par exemple que l'en-tte ou que la partie texte d'un
message multipart)
contrairement POP3, IMAP conserve des informations
d'tat sur chaque utilisateur (noms des rpertoires,
listes des messages qu'ils contiennent)

Plus d'infos : http://www.imap.org/


http://cri.univ-lyon2.fr/doc/ImapMaisCEstTresSimple.html
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

238

L'accs Webmail

Pas de protocole d'accs spcifique

Utilise le protocole HTTP (ou HTTPS) pour


communiquer avec les serveurs SMTP/IMAP

l'utilisateur utilise un navigateur Web comme agent


utilisateur pour consulter/envoyer ses courriers
le serveur HTTP excute des scripts qui utilisent
le protocole IMAP pour communiquer avec le serveur
IMAP et ainsi manipuler les messages distants de
l'utilisateur
le protocole SMTP pour traduire une demande d'envoi
d'un message de la part de l'utilisateur

Avantages

adapt aux utilisateurs itinrants


pas besoin d'un agent utilisateur particulier, seule une
connexion Internet avec Navigateur Web est ncessaire

Plus d'infos : http://www.cru.fr/http-mail/critere.html


Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

239

Les alias

Adresse d'un destinataire : bal@nom_domaine


Problme :

bal n'est pas forcment le login de l'utilisateur


nom_domaine n'est pas forcment le nom du serveur
de mail contenant les BAL
bal peut reprsenter plusieurs destinataires (listes)

Il faut faire des alias (souvent /etc/aliases)


Olivier.Gluck --> /var/mail/ogluck
ens-lyon.fr --> mailhost.ens-lyon.fr

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

240

L'agent de transfert sendmail


source : S. Vautherot

La configuration de sendmail n'est pas aborde dans ce cours !

mail

elm

pine

...

uucp

smtp

...

Ligne srie

Rseau IP

uucp

sendmail.cf

Olivier Glck - 2014

...

UA

sendmail

sendmail.cf

...

mutt

local

aliases
MTA

.forward

smtp

sendmail

moi

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

241

Une bonne archi de serveur MAIL


source : M. Herrb

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

242

HTTP : le protocole du Web


Intro : Web, URL et Formulaires
Format des requtes/rponses
Dure de vie des connexions, Cookies
Diffrentes versions de HTTP, Proxy
Les requtes clientes, les rponses du serveur
Les en-ttes, les types MIME
CGI, GET/POST, Format URL-encod

Les services dInternet

Un service = une application qui utilise un


protocole et un numro de port
Fonctionnement en mode Client/Serveur au
dessus de TCP/IP

Client
E-mail Navigatelnet
teur
ftp
Windows
news
Modem
http
ADSL
...
Olivier Glck - 2014

Le Web
HTTP

Serveur
Apache

Serveur
(httpd, ftpd, telnetd,
etc.)

Types de services
diffrents
Ethernet
Un protocole par
service
Linux

Internet

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

244

World Wide Web

Architecture pour accder des documents lis


entre eux et situs sur des machines relies par
Internet
Architecture base sur 3 concepts :

la localisation --> URL


le protocole --> HTTP
le langage --> HTML

Popularit due :

interfaces graphiques conviviales


trs grande quantit d'informations
grande diversit des informations

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

245

Le jargon du Web

Une page Web :

contient des objets


dsigne par une adresse (URL)

du code HTML de base


des objets rfrencs

LURL a au moins deux


composantes :

LAgent Utilisateur pour


le Web est le browser :

La plupart des pages Web


contiennent :

MS Internet Explorer
Netscape Communicator
...

Le serveur Web :

Apache (domaine public)


MS Internet Information
Server

le nom dhte contenant la page


Web
le chemin daccs sur l'hte

www.someSchool.edu/someDept/pic.gif
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

246

Origines du Web

Naissance au CERN : besoin d'changes de


documents, rapports, croquis, photos... entre
des grosses quipes internationales pour des
expriences demandant de longs investissements
de mise en uvre

mars 89 : Tim Berners-Lee : rseau de documents

septembre 90 : 1er prototype (mode texte)

dcembre 91 : dmonstration publique la


confrence Hypertext'91 de San Antonio

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

247

Envol du Web

Fvrier 93 : 1re interface graphique Mosaic


(Marc Andreesen)
1994 : M. Andreesen cre Netscape Comm. Corp.
(dveloppements logiciels pour le web)
1994 : cration du W3C (WWW Consortium)
par le CERN et le MIT (Tim Berners-Lee prsident)
(dveloppements du Web, standards...)
1996 : apparition des feuilles de styles (CSS)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

248

Fonctionnement du Web

Le client (navigateur ou browser) dialogue avec


un serveur Web selon le protocole HTTP
Le serveur vrifie la demande, les autorisations
et transmet l'information
Le navigateur interprte le fichier reu et l'affiche
(le navigateur, un plug-in ou un helper)
A ce schma de base, peuvent s'ajouter :

des contrles par compte individuel, par domaine,


par adresse IP...
des excutions de code cot serveur et/ou cot
client

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

249

Adressage des documents


Il faut nommer, localiser et accder une page :
--> 3 questions : Quoi ? O ? Comment ?
Solution :

URL --> URI (Universal Resource Identifier)

URL - Uniform Resource Locator : Adresse universelle


de ressource
en 3 parties : le protocole (comment), le nom DNS
(o) et le nom du document (quoi)
un sur-ensemble des URLs

URL classique (simplifie) :

http://www.monsite.fr/projet/doc.html
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

250

Adressage des documents

Diffrentes composantes d'une URL :

proto://host_name:port/path/extra_path?arguments

la racine "/" de path est dfinie par la configuration


du serveur Web
(Attention : ne pas confondre avec la racine du
systme de fichiers sur le serveur)

/path peut contenir une tiquette (point d'ancrage)

http://www.monsite.fr/projet/doc.html#label

extra_path (aprs .cgi par ex.) et arguments


permettent de passer des informations des
programmes s'excutant sur le serveur

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

251

Adressage des documents

URL relative :

un lien vers

"images/new.gif"

dans la page

http://

www.monsite.fr/projet/doc.html

est un lien vers

http://www.monsite.fr/projet/images/

new.gif

le navigateur client reconstruit l'URL absolue pour


faire la requte
la balise HTML <BASE href="url"> permet de
positionner la racine pour les URLs relatives du
document contenant cette balise

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

252

Vision ct client

Le Web est un ensemble de pages (documents)


pouvant contenir des liens vers d'autres pages
n'importe o dans le monde
Consultation des pages via un navigateur
L'utilisateur suit ces liens par simple click -->
notion d'hypertexte (information rpartie)
Le navigateur (browser)

analyse l'URL demande


demande au DNS l'adresse IP du site distant
tablit une connexion TCP vers le numro de port de
l'URL (80 par dfaut)
formule la requte au serveur

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

253

Vision ct client

Le navigateur (browser)

va rechercher la page demande


interprte les commandes de formatage et de mise en
forme (police, gras, couleurs...)
va rechercher et affiche des images
animation (code JavaScript, gifs...)
affiche la page correctement formate

Paramtrage plusieurs niveaux

valeurs par dfaut du navigateur


valeurs fixes dans le document
prfrences de l'utilisateur (navigateur)
exemples : couleur des liens (visits ou non), du
texte, fond de la page, polices...

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

254

Vision ct serveur

Le serveur est en permanence lcoute des


requtes formules par les clients (qui peuvent
tre trs nombreux !)
Il vrifie la validit de la requte...

adresse correcte (URL)


client autoris accder au document

et y rpond : envoi du texte, des images, du


code excuter sur le client, d'un message
d'erreur, d'une demande d'authentification, ...
Il peut excuter un programme localement qui va
gnrer une rponse HTML (pages dynamiques)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

255

Pourquoi des formulaires ?

Apporte de l'inter-activit avec l'utilisateur en


proposant des zones de dialogue : un formulaire
n'est qu'une interface de saisie !
Selon les choix de l'utilisateur, il faut y associer
un traitement

sur le client avec JavaScript par exemple


sur le serveur par l'intermdiaire de CGI, PHP,

Exemples typiques d'utilisation de formulaire

commandes, devis via Internet


moteurs de recherche
interactions avec une base de donnes

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

256

Principe du formulaire

On dcrit l'aide de balises HTML les diffrents


champs de saisie
Chaque zone est identifie par un nom
symbolique auquel sera associe une valeur par
l'utilisateur
Quand le formulaire est soumis, les couples
(nom/valeur) de toutes les zones sont transmis
dans la requte HTTP au serveur
A chaque zone de saisie peut tre associ un
traitement sur le client par l'intermdiaire d'un
vnement JavaScript

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

257

Le client est passif


Poste client
Navigateur
client

Affichage du
formulaire
4

Site serveur
1

demande du formulaire

2
Serveur Web
Dmon HTTP

envoi du formulaire

envoi des donnes du


formulaire (soumission)

recherche de la page
HTML sur le disque
DD

l'utilisateur remplit
le formulaire
Formulaire
rempli

Serveur Web
Dmon HTTP

transmission des donnes


au CGI / lancement de son
excution
Programme
CGI

excution du CGI
SGBD

Serveur Web
Dmon HTTP
Affichage de
la rponse

9
10

Olivier Glck - 2014

envoi de la page HTML


rsultat

requte la SGBD

rponse en HTML du
CGI renvoye au dmon
HTTP

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

258

Le client est actif


Poste client
Navigateur
client

Affichage du
formulaire
4

saisie invalide

Site serveur
1

demande du formulaire

2
Serveur Web
Dmon HTTP

recherche de la page
HTML/JavaScript sur
le disque
DD

envoi du formulaire

l'utilisateur remplit le formulaire, celui-ci


peut tre modifi dynamiquement
Soumission
Interprteur
JavaScript

saisie valide
Formulaire
rempli
correctement

envoi des donnes du


formulaire (soumission)

Serveur Web
Dmon HTTP

transmission des donnes


au CGI / lancement de son
excution
Programme
CGI

excution du CGI

SGBD
Serveur Web
Dmon HTTP
Affichage de
la rponse

Olivier Glck - 2014

10

envoi de la page HTML


rsultat

8
9

requte la SGBD

rponse en HTML du
CGI renvoye au dmon
HTTP

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

259

Caractristiques de HTTP

HTTP : Hyper Text Transfer Protocol


Protocole rgissant le dialogue entre des clients
Web et un serveur (c'est le langage du Web !)
Fonctionnement en mode Client/Serveur
Une transaction HTTP contient

le type de la requte ou de la rponse (commande HTTP)


un en-tte
une ligne vide
un contenu (parfois vide)

Trs peu de type de requtes/rponses


Port standard : 80

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

260

Une transaction typique (1)

1 - le client contacte le serveur pour demander le


document index.html

GET /~ogluck/index2.html HTTP/1.1

2 - le client envoie des informations d'en-tte pour


informer le serveur de sa configuration et des
documents qu'il accepte

User-Agent: Mozilla/4.0 (compatible;MSIE 6.0;Windows NT 5.1)


Host: www710.univ-lyon1.fr
Accept: image/gif, image/jpeg, */*

3 - le client envoie une ligne vide (fin de l'en-tte) et


un contenu vide dans cet exemple
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

261

Une transaction typique (2)

4 - le serveur rpond en commenant par indiquer


par un code, l'tat de la requte

HTTP/1.1 200 OK

5 - le serveur envoie un en-tte qui donne des


informations sur lui-mme et le document demand

Date: Sun, 23 May 2004 17:46:01 GMT


Server: Apache/1.3.28 (Debian GNU/Linux) PHP/3.0.18
Last-Modified: Sun, 23 May 2004 17:42:12 GMT
Content-Length: 90
Content-Type: text/html; charset=iso-8859-1

6 - puis une ligne vide (fin de l'en-tte) et le contenu


du document si la requte a russi
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

262

Une transaction typique (3)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

263

Format des requtes/rponses

Format des requtes

type de la requte (METHOD, URL, version HTTP)


en-tte
une ligne vide
un contenu ventuel

Format des rponses

un code de rponse (version HTTP, code, description)


en-tte
une ligne vide
le contenu de la rponse

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

264

Dure de vie des connexions

HTTP 1.0 (RFC 1945)

HTTP 1.1 (RFC 2068)

ds que le serveur a rpondu une requte, il ferme


la connexion HTTP
par dfaut, la connexion est maintenue tant que le
serveur ou le client ne dcide pas de la fermer
(Connection: close)

HTTP est un protocole sans tat

aucune information n'est conserve entre deux


connexions
permet au serveur HTTP de servir plus de clients en
un temps donn (gestion lgre des transactions)
pour conserver des informations entre deux
transactions, il faut utiliser un cookie, des champs
cachs d'un formulaire,

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

265

Cookies

Moyen pour le serveur de stocker des


informations chez le client pour palier au
caractre sans tat du protocole HTTP
Cookie=une chane de caractres url-encode de
4ko max stocke sur le disque dur du client
Informations associes un ensemble d'URL qui
sont envoyes lors de toute requte vers l'une
de ces URL
Les cookies permettent de

propager un code d'accs (vite une authentification


lors de chaque requte)
identification dans une base de donnes
fournir des lments statistiques au serveur
(compteurs de pages visites, )

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

266

Installation d'un Cookie sur le client

Directive Set-Cookie dans l'en-tte de la rponse


HTTP (envoy lors de la premire connexion)

Set-Cookie: nom=valeur; expires=date;


path=chemin_accs; domain=nom_domaine; secure
le couple nom/valeur est le contenu du cookie (seul
champ obligatoire), sans espace ; et ,
le cookie devient invalide aprs la date indique
path=/pub signifie que le cookie est valable pour
toutes les requtes dont l'URL contient /pub
domain indique le nom de domaine (associ au
serveur) pour lequel le cookie est valable
secure : le cookie n'est valable que lors dune
connexion scurise
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

267

Utilisation d'un Cookie par le client

Chaque fois qu'un client va effectuer une


requte, il vrifie dans sa liste de cookies s'il y en
a un qui est associ cette requte
Si c'est le cas, le client utilise la directive Cookie
dans l'en-tte de la requte HTTP

Cookie: nom1=valeur1; nom2=valeur2;

Le serveur peut insrer plusieurs directives SetCookie


Dans la premire spcification des cookies :

un client peut stocker un maximum de 300 cookies


un maximum de 20 cookies par domaine est permis
la taille d'un cookie est limite 4Ko

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

268

Diffrentes versions de HTTP (1)

Version d'origine : HTTP 0.9

Une seule mthode : GET


Pas d'en-ttes
Une requte = une connexion TCP

Amlioration en 2 tapes

HTTP 1.0 :
introduction des en-ttes (change de "mta" info)
nouvelles possibilits : utilisation de caches,
mthodes d'authentification,
HTTP 1.1 :
mode connexions persistantes par dfaut
introduction des serveurs virtuels -> la directive
Host dans la requte est ncessaire

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

269

Diffrentes versions de HTTP (2)

Intrt des connexions persistantes


exemple d'une page d'accueil avec 5 images
HTTP 0.9 : 6 connexions/dconnexions TCP/IP
HTTP 1.1 : 1 seule connexion TCP/IP

Intrt d'un cache - amlioration des performances

les pages qui sont le plus souvent demandes sont


conserves dans un cache
-> soulage le rseau
-> accs plus rapide
peut tre utilis localement ou par l'intermdiaire d'un
serveur relais (proxy)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

270

Connexions persistantes

Non-persistante

HTTP/1.0
le serveur interprte les
requtes, rpond et ferme
la connexion TCP
2 RTTs sont ncessaires
pour lire chaque objet
chaque transfert doit
supporter le slow-start
exemple page contenant :

1 fichier HTML
10 images JPEG

Persistante

par dfaut dans HTTP/1.1


une seule connexion TCP
est ouverte vers le serveur
le client envoie la requte
de tous les objets requis
ds quils sont rfrencs
dans le code HTML
moins de RTTs et moins de
slow-start
deux versions : avec/sans
pipeline

Mais la plupart des navigateurs


de version 1.0 utilisent des connexions parallles
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

271

Proxy
Mise en cache hirarchique

Serveur HTTP
HTTP

Client WWW

Cache

Olivier Glck - 2014

HTTP

FTP
Proxy

Cache

HTTP

Serveur FTP

Proxy

Cache

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

272

Intrt du cache Web


Serveurs Web

Hypothse : le cache est


proche du client
Rduction du temps de
rponse
Rduction du dbit vers
les serveurs distants

Internet

1.5 Mbps
access link
Rseau local

10 Mbps LAN

Serveur Proxy

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

273

Les requtes du client

Rappel : Format d'une requte

une commande HTTP (METHOD), une URL qui


identifie la ressource demande, la version de HTTP
l'en-tte et une ligne vide
ventuellement un contenu (corps de la requte)

Mthode GET
Mthode POST
Mthode HEAD
D'autres mthodes qui ne sont pas souvent
supportes par les serveurs

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

274

La mthode GET

La mthode standard de requte d'un document

rcuprer un fichier, une image,

activer un script CGI en lui transmettant des donnes

Le contenu de la requte est toujours vide


Le serveur rpond avec une ligne dcrivant l'tat
de la requte, un en-tte et le contenu demand
Si la requte choue, le contenu de la rponse
dcrit la raison de l'chec (fichier non prsent,
non autoris, )

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

275

La mthode GET et les CGI

Comme le contenu d'une requte GET est vide,


les donnes du formulaire sont transmises via
l'URL aprs un ?
Les champs sont spars par un &

GET /cgi-bin/prog.cgi?email=toto@site.fr&pass=toto&s=login HTTP/1.1

Ici, trois champs du formulaire sont transmis


dans la requte
Le mot de passe est transmis en clair !
Permet de conserver dans un bookmark les
donnes saisies dans le formulaire
L'URL a une taille limite (4Ko)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

276

La mthode POST

Elle permet de transmettre des donnes au


serveur dans le corps de la requte
Exemple

POST /cgi-bin/prog.cgi HTTP/1.1


User-Agent: Mozilla/4.0 (compatible;MSIE 6.0;Windows NT 5.1)
Host: localhost
Accept: */*
Content-type: application/x-www-form-urlencoded
Content-length: 36
email=toto@site.fr&pass=toto&s=login

Le mot de passe est toujours transmis en clair !

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

277

La mthode HEAD (1)

Identique GET mais permet uniquement de


rcuprer l'en-tte relatif un document
Permet de rcuprer

la date de dernire modification du document


(important pour les caches, JavaScript)
la taille du document (estimation du temps d'arrive
du document)
le type du document (le client peut slectionner le
type de documents qu'il accepte)
le type du serveur (permet de faire des requtes
spcifiques selon le type du serveur)

Remarque : le serveur ne fournit pas


ncessairement toutes ces informations !

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

278

La mthode HEAD (2)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

279

Autres requtes clientes

PUT : permet de stocker le corps de la requte


sur le serveur l'URL spcifie
DELETE : suppression du document spcifi par
l'URL
OPTIONS : renvoie la liste des mthodes
autorises par le serveur
TRACE : la corps de la requte entrante est
renvoye au client - utilis pour faire du dbug)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

280

Les rponses du serveur

Les codes de rponse


trois parties : version HTTP, code de statut, description
textuelle du code
HTTP/1.1 200 OK
HTTP/1.1 404 Not Found
code=entier sur 3 chiffres class selon des catgories
100-199 : message d'information
200-299 : succs de la requte cliente
300-399 : la requte n'est pas directement serviable,
le client doit prciser certaines choses
400-499 : chec de la requte qui incombe au client
500-599 : chec de la requte qui incombe au
serveur (par ex. erreur d'excution d'un CGI)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

281

Quelques en-ttes de requtes

Identification du client
From (adresse mail du client), Host (serveur, obligatoire en
HTTP1.1), Referer (URL d'o l'on vient), User-Agent

Prfrences du client
Accept (liste des types MIME accepts), Accept-Encoding
(compress|gzip|), Accept-Langage, Accept-Charset

Information pour le serveur


Autorization (username:passwd encod en base64), Cookie

Conditions sur la rponse


If-Modified-Since (utile pour les caches),
If-Unmodified-Since, If-Match (Etag)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

282

Quelques en-ttes de requtes

Objectif : ne pas envoyer


un objet que le client a
dj dans son cache
Problme : les objets
contenus dans le cache
peuvent tre obsoltes
Le client spcifie la date
de la copie cache dans la
requte http
If-modified-since: <date>

client

serveur
Requte http

If-modified-since:
<date>

Rponse http
HTTP/1.1
304 Not Modified

Requte http
If-modified-since:
<date>

Rponse http

la rponse du serveur est


HTTP/1.1 200 OK

vide si la copie cache est


<data>
jour
M2 SIR/RTS - Services et Protocoles Applicatifs sur

Olivier Glck - 2014

objet
non
modifi

Internet

objet
modifi

283

Quelques en-ttes de rponses

Informations sur le contenu du document


Content-Type (type MIME du document),
Content-Length (barre de progression du chargement),
Content-Encoding, Content-Location,
Content-Langage

Informations sur le document


Last-Modified (date de dernire modification),
Allow (mthodes autorises pour ce document),
Expires (date d'expiration du document)

En-tte gnrales
Date (date de la requte), Server (type du serveur)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

284

Transfert par morceaux en HTTP/1.1

La rponse peut tre envoye en plusieurs


morceaux (dans le cas des CGI par exemple car
le serveur ne peut pas toujours dterminer la
longueur totale de la rponse)
Transfer-Encoding: Chunked

Chaque morceau est constitu d'une ligne


comportant la taille du morceau en hexadcimal
puis des donnes
Aprs les morceaux, une ligne contenant 0 et
ventuellement des en-ttes supplmentaires

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

285

Les types MIME

MIME : Multi-purpose Internet Mail Extensions


Permet l'change de fichiers multimdias entre
machines quelconques en spcifiant le type du fichier
Les commandes MIME ont t intgres dans HTTP1.0
Un type MIME est compos

d'un type gnral (text, image, audio, video, application)


et d'un sous-type (image/gif, image/jpeg, application/pdf,
application/rtf, text/plain, text/html)

En perptuelle volution
La machine cliente doit ensuite associer l'excution
d'une application chaque type MIME
Le serveur positionne Content-type partir de
l'extension du document demand (/etc/mime.types)
Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

286

CGI - Common Gateway Interface

Interface de base qui dfinit la communication


entre le serveur HTTP et un programme
d'application
CGI spcifie comment des navigateurs clients
peuvent communiquer avec des programmes qui
s'excutent sur le serveur Web et qui gnrent
des pages HTML dynamiques cres la vole
partir du rsultat des excutions

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

287

Qu'est ce qu'un programme CGI ?

Un programme

qui s'excute sur la machine hbergeant le serveur HTTP


en langage compil (binaire) ou interprt (script)
qui permet de
rcuprer les donnes du formulaire l'aide d'un
parser : pour chaque champ, un couple NAME/VALUE
est transmis au serveur
effectuer des traitements sur le serveur

lecture/criture dans une base de donnes


stockage d'une info (compteurs, identifiant de connexion, )
recherche d'une info
pied de page automatique (ex: date de dernire modification)

gnrer un rsultat qui est renvoy au client

page HTML, image, document postcript,

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

288

Avantages/inconvnients

Puissant mais dangereux

permet d'excuter tout et n'importe quoi par le dmon


HTTP du serveur

Un CGI doit s'excuter rapidement

risque de surcharge du serveur


utilisateurs impatients : pendant que le CGI s'excute,
le client attend la rponse sans savoir pourquoi elle
n'arrive pas
possibilit d'envoyer ds le dbut de l'excution une
page qui permet d'indiquer l'utilisateur que le
rsultat va arriver

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

289

Un premier exemple (1)


#! /bin/sh
# Date.cgi
echo 'Content-type: text/html'
echo ' '
#Cration du corps du document
echo '<HTML><HEAD><TITLE>'
echo 'Date.cgi'
echo '</TITLE></HEAD><BODY>'
echo '<H1>Date sur le serveur</H1>'
echo -n "On est le `date +%D`, il est "
echo "`date +%H`h `date +%M`m"
echo '</BODY></HTML>'
Source du programme CGI

Olivier Glck - 2014

ogluck@lima:~/public_html/cgibin$ ./Date.cgi
Content-type: text/html
<HTML><HEAD><TITLE>
Date.cgi
</TITLE></HEAD><BODY>
<H1>Date sur le serveur</H1>
On est le 11/07/03, il est 11h
30m
</BODY></HTML>
Excution du CGI sur le serveur

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

290

Un premier exemple (2)


Excution du CGI depuis le client

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

291

Un premier exemple (3)

Ce programme CGI n'utilise aucune donne en


provenance du client
Il rcupre simplement la date sur le serveur et
affiche sur sa sortie standard le code d'une
page HTML minimale contenant la date et l'heure
La ligne "Content-type: text/html" est
une information destine au serveur pour la
construction de l'en-tte HTTP constituant la
rponse renvoye au client (ici, il s'agit
d'indiquer que le type des donnes gnres par
le CGI est une suite de commandes HTML)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

292

Mthodes GET/POST (1)


Voici le code d'un petit script CGI en shell
#! /bin/sh
# Get_Post.cgi
echo 'Content-type: text/plain'
echo ' '
echo "QS=$QUERY_STRING"
read DATA
echo "Data=$DATA"
Les rsultats de l'excution avec la mthode GET
puis POST sont montrs dans les deux
transparents suivants

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

293

Mthodes GET/POST (2)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

294

Mthodes GET/POST (3)

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

295

Mthodes GET/POST (4)

Avec la mthode GET

les donnes relatives aux champs du formulaire sont


transmises via l'URL (dans le type de la requte)
le programme CGI les rcupre dans la variable
d'environnement QUERY_STRING
il est possible de cliquer sur "Actualiser" pour
retransmettre les donnes et de dfinir un bookmark

Avec la mthode POST

les donnes relatives aux champs du formulaire sont


transmises dans le corps de la requte HTTP
Content-type et Content-length sont positionns
le programme CGI les rcupre sur l'entre standard
"Actualiser" et bookmark impossibles, donnes du
formulaire non visibles dans les logs du serveur

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

296

Mthodes GET/POST (5)


Mthode GET

Formulaire

Mthode POST

Mthode POST et "Actualiser"

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

297

Format URL encod (1)

Ncessit de coder les donnes de l'URL (mthode


GET) sur le client pour construire la chane CGI pour
respecter la RFC 2396 qui spcifie la syntaxe des URL
Les caractres non-alphanumriques sont remplacs
par %xx (xx=code ASCII du caractre en
hexadcimal)
Les caractres ; / ? : @ & = + $ et , sont
rservs

? : dbut de QUERY_STRING
& : sparateur de champ
= : sparation entre le nom du champ et sa valeur

Les espaces sont remplacs par des +


Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

298

Format URL encod (2)

Format de la chane CGI


nom_champ1=valeur1&nom_champ2=valeur2&

Cas des champs valeurs multiples


exemple : listes slection multiples
nom_liste=valeur1&nom_liste=valeur2&

La chane CGI

elle est construite par le client au format URL-encoded


quand la requte est poste
elle est transmise au CGI tel quel via la variable
d'environnement QUERY_STRING avec la mthode GET
elle est transmise au CGI tel quel via l'entre standard
avec la mthode POST

Olivier Glck - 2014

M2 SIR/RTS - Services et Protocoles Applicatifs sur Internet

299