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