TIW1 - Protocole Applicatif sur Internet - Transfert de Fichiers

Transcription

TIW1 - Protocole Applicatif sur Internet - Transfert de Fichiers
TIW1 - Protocole Applicatif sur Internet
Transfert de Fichiers
Fabien Rico ([email protected])
Olivier Glück
Univ. Claude Bernard Lyon 1
séance 1
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
1 / 30
Introduction
Protocoles de transfert de fichiers
Copie intégrale d’un fichier d’un système de fichiers vers un autre en
environnement hétérogène
Entre 2 systèmes, l’hétérogénéité concernant les fichiers dépend :
◮
◮
◮
de la façon de représenter les noms de fichier (longueur, caractère
espace,...)
des droits d’accès au fichier (lecture, écriture, exécution, propriétaire,
...)
de la représentation des données contenues dans le fichier (saut de
ligne...)
⋆
⋆
→ mode ascii : transfert de texte avec conversion au format local.
→ mode binary : transfert sans conversion.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
2 / 30
Introduction
Protocoles de transfert de fichiers
Plusieurs protocoles
◮
◮
◮
copie de fichiers à distance : rcp, scp ;
protocole de transfert de fichiers avec accès aux systèmes de fichiers
local et distant : ftp, tftp, sftp.
copie de fichier sur http : WebDAV
Type client/serveur
◮
◮
le client (initiateur de la connexion) interragit avec l’utilisateur, le
système de fichiers local et les protocoles réseau ;
le serveur (héberge les fichiers distants) interagit avec les protocoles
réseau et le système de fichiers distant.
Ne pas confondre avec les protocoles d’accès aux fichiers distants :
NFS (RPC), SMB (Microsoft).
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
3 / 30
Introduction
Protocoles de transfert de fichiers
Machine locale
Machine distante
serveur
FTP
client
FTP
OS /dev/sda1
Pilotes de
périphériques
/dev/hda3
TCP/IP
TCP/IP
Pilote de
périphériques
M a t.
clavier/écran
c O.Glück & F.Rico (U.C.B.L.)
Internet
PAI
séance 1
4 / 30
FTP
1
Introduction
2
FTP
3
TFTP
4
WebDAV
5
Partage pair à pair
6
Conclusion
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
5 / 30
FTP
FTP : File Transfer Protocol - RFC 959
Standard TCP/IP pour le transfert de fichiers
Connexion TCP sur le port 21 côté serveur
Contrôle d’accès au serveur distant (login,mdp)
le mot de passe circule en clair
Particularité de FTP : utilisation de 2 connexions TCP
ogluck@lima :˜ $ cat / etc / s e r v i c e s | grep f t p
f t p −d a t a
20/ t c p
ftp
21/ t c p
tftp
69/ udp
sftp
115/ t c p # FTP o v e r SSH
f t p s −d a t a
989/ t c p #FTP o v e r SSL ( d a t a )
ftps
990/ t c p # FTP o v e r SSL
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
6 / 30
FTP
FTP : Connexions contrôle et données
Les clients FTP contactent le serveur FTP sur le port TCP/21
Ouverture de 2 connexions TCP parallèles :
Serveur
ftp
Client
ftp
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
7 / 30
FTP
FTP : Connexions contrôle et données
Les clients FTP contactent le serveur FTP sur le port TCP/21
Ouverture de 2 connexions TCP parallèles :
◮
Contrôle : échange des commandes et des réponses entre le client et le
serveur - ≪ contrôle hors-bande ≫
RETR rapport.docx
:21
Serveur
ftp
Client
ftp
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
7 / 30
FTP
FTP : Connexions contrôle et données
Les clients FTP contactent le serveur FTP sur le port TCP/21
Ouverture de 2 connexions TCP parallèles :
◮
◮
Contrôle : échange des commandes et des réponses entre le client et le
serveur - ≪ contrôle hors-bande ≫
Données : transfert des fichiers de données vers/depuis l’hôte distant
(sur le port TCP/20 côté client)
RETR rapport.docx
:21
Client
ftp
c O.Glück & F.Rico (U.C.B.L.)
Serveur
ftp
:20
PAI
séance 1
7 / 30
FTP
FTP : Connexions contrôle et données
Les clients FTP contactent le serveur FTP sur le port TCP/21
Ouverture de 2 connexions TCP parallèles :
◮
◮
Contrôle : échange des commandes et des réponses entre le client et le
serveur - ≪ contrôle hors-bande ≫
Données : transfert des fichiers de données vers/depuis l’hôte distant
(sur le port TCP/20 côté client)
RETR rapport.docx
:21
succes
Client
ftp
c O.Glück & F.Rico (U.C.B.L.)
Serveur
ftp
:20
PAI
séance 1
7 / 30
FTP
FTP : Connexions contrôle et données
Les clients FTP contactent le serveur FTP sur le port TCP/21
Ouverture de 2 connexions TCP parallèles :
◮
◮
Contrôle : échange des commandes et des réponses entre le client et le
serveur - ≪ contrôle hors-bande ≫
Données : transfert des fichiers de données vers/depuis l’hôte distant
(sur le port TCP/20 côté client)
Le serveur FTP maintient un état : répertoires courants locaux et
distants, username
RETR rapport.docx
:21
succes
Client
ftp
c O.Glück & F.Rico (U.C.B.L.)
Serveur
ftp
:20
PAI
séance 1
7 / 30
FTP
FTP : Connexions contrôle et données
Les clients FTP contactent le serveur FTP sur le port TCP/21
Ouverture de 2 connexions TCP parallèles :
◮
◮
Contrôle : échange des commandes et des réponses entre le client et le
serveur - ≪ contrôle hors-bande ≫
Données : transfert des fichiers de données vers/depuis l’hôte distant
(sur le port TCP/20 côté client)
Le serveur FTP maintient un état : répertoires courants locaux et
distants, username
RETR rapport.docx
:21
succes
Client
ftp
Serveur
ftp
:20
Pourquoi 2 connexions
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
7 / 30
FTP
FTP : Connexions contrôle et données
Connexion contrôle (ftp) :
◮
◮
◮
échange des requêtes/réponses (dialogue client/serveur) ;
permanente, full-duplex, besoin de fiabilité (et faible délai !) ;
initiée par le client.
Connexion données (ftp-data) :
◮
◮
◮
envoi de fichiers ou listes de fichiers/répertoires (données) ;
temporaire, full-duplex, besoin de débit (et fiabilité !) ;
initiée par défaut par le serveur
⋆
◮
ouverture active (connect()) du serveur vers le client (depuis le port 20
vers un port proposé par le client) ;
la connexion est fermée dès que le caractère EOF est lu.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
8 / 30
FTP
Question
Quels problèmes cela peut-il causer
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
9 / 30
FTP
FTP : Connexions contrôle et données
Active transfer & Passive transfer
Active transfer : la connexion ftp-data est initiée par le serveur
◮
si une commande nécessite que des données soient reçues ou
transmises (ls, get, put, . . . ), le client envoie une commande PORT au
serveur indiquant un port sur lequel le serveur va créer une connexion
ftp-data depuis son port 20.
Passive transfer : ftp-data initiée par le client
◮
◮
intégré dans les navigateurs, paramétrable sur certains clients ;
fonctionnement : le client envoie la commande PASV au lieu de PORT
sur le port 21 (RFC 1579 : Firewall-Friendly FTP) ce qui revient à
demander au serveur de faire un listen() sur un port du serveur.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
10 / 30
FTP
FTP public
Beaucoup de serveurs FTP sont publics
En fait ils autorisent la connexion anonyme c’est à dire
◮
◮
Le login est anonymous
Le mot de passe peut être quelconque (généralement son mail).
Les navigateurs web utilisent la connexion anonyme pour se connecter
avec le protocole ftp :
ftp ://ftp . univ−lyon1.fr/pub/
Sauf si cela est précisé dans l’url :
ftp ://fabien . rico :[email protected]−lyon1.fr/pub/
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
11 / 30
FTP
FTP et Sécurité
FTP est un protocole en clair, il existe plusieurs méthodes pour protéger
les données :
utiliser un tunnel ssh (difficile à cause des 2 connexions) ;
ftps : ftp avec SSL/TLS (c’est une configuration du serveur FTP) ;
sftp : ftp via ssh qui passe par le port 22 donc généralement autorisé
par les firewalls.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
12 / 30
TFTP
1
Introduction
2
FTP
3
TFTP
4
WebDAV
5
Partage pair à pair
6
Conclusion
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
13 / 30
TFTP
TFTP : Trivial File Transfer Protocol
Pourquoi Trivial FTP ?
◮
◮
simple à implémenter ;
simple à configurer.
Utilisation :
◮
Récupération de données de configuration par les systèmes sans disque
⋆
⋆
⋆
terminaux,
carte réseaux (boot sur le réseaux),
imprimante.
TFTP, c’est en gros FTP sans pouvoir lister les répertoires distants et
ne nécessitant pas de mot de passe pour récupérer ou déposer des
fichiers
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
14 / 30
TFTP
TFTP : Trivial File Transfer Protocol
Protocole léger - RFC 1350 :
◮
◮
◮
◮
pas de contrôle d’accès ;
5 types de messages seulement ;
fiabilité assurée par acquittement positif avec timer de retransmission
sur l’émetteur et le récepteur ;
les messages DATA font 512 octets max ; ils sont numérotés et sont
aussitôt acquittés par un ACK.
Comme il n’y a pas d’authentification, les accès sur le serveur sont
limités aux répertoires passés en arguments du démon tftpd
(/tftpboot par défaut).
UDP car les systèmes n’implantent pas forcément TCP.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
15 / 30
WebDAV
1
Introduction
2
FTP
3
TFTP
4
WebDAV
5
Partage pair à pair
6
Conclusion
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
16 / 30
WebDAV
WebDAV
Web enabled Distributed Authoring and Versioning
C’est une couche ajoutée au serveur http de manière à faciliter le partage
de fichiers via le web.
Utilisation des ports web (80, 443).
Mécanisme de vérouillage (protection en cas d’accès multiple).
Méta-données (titre, sujet, créateur, ...)
Gestion des fichiers (copie, supression, déplacement,...)
Contrôle d’accès en utilisant un contrôle d’accès existant.
Versions ? (pas encore)
Utilisation :
Mise à disposition et synchronisation de données sur le web
◮
◮
Calendriers, contacts
Travail collaboratif.
Système de versionnement
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
17 / 30
WebDAV
Mise en place d’un serveur WebDAV
Sous apache :
Installation du module WebDAV.
Configuration dans le fichier /etc /.../ conf.d/webdav.conf
Création d’un répertoire pour webDAV (avec droit d’écriture).
Mettre en place un système d’authentification pour apache.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
18 / 30
WebDAV
Fichier webdav.conf
DAVLockDB /var/www/webDAV/DAVLock
<Directory "/var/www/html/DAVtest">
Options Indexes FollowSymLinks
AllowOverride None
order allow ,deny
allow from all
AuthName "CS test server"
AuthType Basic
AuthUserFile /var/www/webDAV/passwd
DAV On
require valid −user
</Directory>
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
19 / 30
Partage pair à pair
1
Introduction
2
FTP
3
TFTP
4
WebDAV
5
Partage pair à pair
6
Conclusion
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
20 / 30
Partage pair à pair
Pourquoi ?
Distribution de fichiers centralisée : un serveur propose les fichiers à
plusieurs clients :
◮
◮
◮
le serveur est très sollicité ;
sensible aux pannes, attaques informatiques ou légales ;
plus il y a de clients moins l’accès est facile (distribution d’un logiciel
ou un patch à une date fixe).
Distribution décentralisée : chaque client peut aussi distribuer tout ou
une partie du fichier :
◮
◮
◮
◮
chaque nouveau client augmente la disponibilité ;
robuste ;
flou légal ;
disparition progressive de la ressource.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
21 / 30
Partage pair à pair
Principe
Pour obtenir un fichier il faut accéder à 2 choses :
Les données : le contenu du fichier lui même
les méta-données :
◮
◮
◮
◮
le nom du fichier ;
une description ;
une localisation ;
un moyen de recherche.
En général, les méta-données sont moins volumineuses que les données, il
est donc nécessaire de répartir au moins contenu du fichiers sur plusieurs
serveurs.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
22 / 30
Partage pair à pair
Principe (suite)
Le pair à pair consiste à demander aux client de participer à la mise à
disposition du fichier en devenant aussi serveur
A priori, le partage est bénéfique pour l”ensemble.
◮
◮
Nécessiter de partager ?
Gros partageur, sangsue (leecher).
Plus le nombre de partageurs est important plus le système est
efficace.
Besoin de plus de connaissance en réseau car le logiciel doit pouvoir
être contacté.
Les méta-données sont plus ou moins centralisées
◮
◮
◮
◮
robustesse du réseau ;
limite de la légalité ;
problème de recherche ;
problème de passage à l’échelle.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
23 / 30
Partage pair à pair
Protocole centralisé
Napster
Historiquement le premier.
Serveurs centralisés pour l’indexation et la recherche.
Transfert entre clients.
Source unique (le fichier est téléchargé en entier depuis le même
client).
Fin du réseau lorsque les serveurs ont été fermés.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
24 / 30
Partage pair à pair
Protocole centralisé
BitTorrent
Centralisé car des serveurs les
clients fournissant les fichiers
◮
◮
≪
Trackers ≫ collectent les noms des
ils ne référencent que les clients ;
informations limitées donc traitement peu coûteux.
Source multiple (le fichier est décomposé en morceaux (chunk) qui
peuvent être téléchargés sur différents clients
La recherche est traitée à part, des serveurs d’indexation distribuent
les méta-données sous forme d’un fichier . torrent (liste des chunks,
somme de contrôle, adresse d’un tracker)
Système qui vise de bonne pratique de partage par un système de
récompense.
Très abouti et utilisé de manière légale
◮
◮
partage des distributions linux ;
partage des patchs WoW.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
25 / 30
Partage pair à pair
Protocole décentralisé
Protocole décentralisé
Moins efficace mais plus robuste aux ≪ attaques ≫
Inconvénient : comment relier le demandeur au fournisseur ?
◮
◮
◮
recherche ;
mise en place du réseau logique ;
disponibilité.
Avantage : pas de
failure))
◮
◮
≪
Point individuel de défaillance ≫ (Single point of
pas de serveur particulier à entretenir ;
pas d’entreprise à attaquer.
Généralement développé afin de contourner la loi.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
26 / 30
Partage pair à pair
Protocole décentralisé
Gnutella V0.4
Totalement décentralisé, chaque client est aussi serveur et routeur.
Communication avec les voisins.
Routage par inondation pour les recherches :
◮
◮
◮
◮
◮
un noeud qui fait une requête de recherche la transmet à ses voisins
qui transmettent à leurs voisins
...
il est nécessaire de stopper la recherche à une certaine profondeur
(TTL=7) ;
un fichier trop loin n’est pas trouvé.
Seul les recherches/réponses sont
font directement.
≪
rootés ≫, les téléchargements se
Source de fichier unique.
Difficulté du passage à l’échelle.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
27 / 30
Partage pair à pair
Protocole décentralisé
Système semi-décentralisé Gnutelle v0.6, fasttrack
Tout le monde est égaux mais certains le sont plus que les
autres. ≫ Coluche.
Certains noeuds sont plus importants :
≪
◮
◮
◮
◮
ils sont stables ;
ils sont fiables ;
ils ont beaucoup de voisins ;
bonne connectivité (réseaux symétriques donc non ADSL par exemple).
Ils réduisent la distance entre les noeuds du réseaux et traitent un
grand nombre des requêtes.
Pour diminuer les échanges de méta-données, il est possible de définir
des superpeer.
Les requêtes ne sont transmises qu’entre les superpeer.
Les autre noeuds deviennent des feuilles et sont reliés à quelques
superpeer.
Nécessité d’obtenir une liste fiable des superpeer.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
28 / 30
Conclusion
Autres utilisations du pair à pair
Le principe de pair à pair peut s’étendre à plusieurs domaines :
Acheminement de flux vers plusieurs clients : peercasting.
Communications :
◮
◮
les données pour Skype
mise en place des connexions par SIP
Calcul distribué : BOINC
Réseaux :
◮
◮
◮
réseaux maillés (application militaire) ;
réseaux de capteurs ;
point d’accès wifi.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
29 / 30
Conclusion
Conclusion pour le transfert de fichiers
Plusieurs protocoles de transfert de fichiers.
Le pair à pair est souvent une sur-couche sur les protocoles de
transfert classiques.
Le transfert de fichiers est utilisé depuis longtemps avec peu
d’évolution :
◮
◮
problème toujours d’actualité ;
attention à la sécurité.
Tous les protocoles peuvent utiliser SSL/TLS.
c O.Glück & F.Rico (U.C.B.L.)
PAI
séance 1
30 / 30