D.E.S.S. Nouvelles APplications Internet.
Module A, unité 1 : "Principes et utilisation des systèmes et des réseaux"

Résumé du cours 2
Protocoles d'applications.

Nous avons vu au premier cours qu'il existait un protocole pour chaque application : http pour accès aux "sites web", smtp, pop, imap pour le courrier électronique, ftp pour le transfert de fichiers, telnet (et ajoutons ssh) pour l'accès aux ordinateurs distants.

Le premier TP a permis de configurer un client http et un client mail afin de pouvoir utiliser ces applications fondamentales. Nous avons également commencé à utiliser ftp. Nous allons à présent voir plus en détails à quoi ressemble un protocole d'application, et apprendre à (bien) utiliser ftp, telnet, ssh, et à utiliser des protocoles directement grâce à la commande telnet.

Protocoles et logiciels les implémentant.

Il ne faut pas confondre :

L'utilisation d'un protocole d'application consiste donc en l'utilisation d'un logiciel client écrit pour ce protocole, lequel dialogue (ou au moins essaie) avec un logiciel serveur situé généralement sur une autre machine, lui aussi écrit pour ce protocole.

Pour l'utilisateur, ceci reviendra souvent (au moins en mode ligne de commande Unix) à invoquer une commande système (le logiciel client) du même nom que le protocole, avec les paramètres appropriés. Par exemple, la commande:
ssh trantor.info.unicaen.fr
cherchera à établir une connexion utilisant le protocole ssh entre la machine de l'utilisateur et le serveur sshd qui tourne sur la machine trantor.info.unicaen.fr.

Telnet

Le protocole telnet permet au client de se positionner en tant que terminal de commande du serveur. Ainsi, l'utilisateur côté client dispose (après la phase de login) d'un shell (ou équivalent pour les systèmes autres qu'Unix) lui permettant de taper et de lancer des commandes qui s'exécutent sur le système distant, mais dont les résultats s'afficheront sur le terminal de celui qui les a lancées, donc sur le poste du client. Ce protocole est assez ancien, et ne permet qu'un mode commande ligne et des affichages texte. Il permet toutefois de s'adapter à des touches de fonction, codes de mise en page, ...

L'inconvénient majeur de ce protocole est que, à l'établissement du lien telnet entre client et serveur, le client s'identifie au moyen du login habituel de la machine distante, donc en tapant, et en envoyant au travers du réseau, ses login et mot de passe, lesquels risquent d'être vus au passage par des utilisateurs indélicats.

Sous unix, la commande telnet implémente ce protocole et permet donc de se connecter à des machines distantes. Il suffit de préciser le nom de la machine en paramètre. Bien entendu, cette commande n'aura de succès que si un serveur telnet tourne sur la machine demandée.

Notons qu'un deuxième paramètre (optionnel, le défaut étant le protocole telnet) permet, avec cette commande, de se connecter en utilisant d'autres protocoles que telnet, à condition de savoir "parler" (au clavier) le protocole souhaité, ce qui n'est possible qu'avec certains d'entre eux : voir plus loin avec smtp ou http par exemple.

Ssh (Secure SHell)

Le protocole ssh permet également d'utiliser des commandes de la machine distante, mais tout l'échange de données est crypté. Le cryptage/décryptage s'effectue au moyen de paires de clefs publique/privée. Les machines doivent s'échanger leurs clefs publiques. La connaissance de la clef publique d'une machine ne permet pas de retrouver la clef privée, ceci grâce à des propriétés mathématiques des nombres, et au fait que les algorithmes qui permettraient de "casser" les clefs sont trop complexes pour être exécutés en un temps raisonnable à l'échelle humaine.

Ce protocole peut utiliser le système login/mot de passe, mais ceux-ci "voyagent" alors cryptés sur le réseau. Il posséde aussi son propre système d'authentification, qui permet par le jeu des paires de clefs publique/privée de vérifier l'identité du correspondant.

Le protocole ssh a connu des évolutions, ce qui fait que plusieurs versions, utilisant des principes légèrement différents, coexistent.Il convient donc de se renseigner sur les versions utilisables sur les différentes machines auxquelles on désire se connecter. On préferera SSH2 à SSH1 à chaque fois que c'est possible, pour un maximum de sécurité.

Pour pouvoir utiliser ce mécanisme d'authentification, les utilisateurs doivent avoir généré leur paire de clef privée/publique, soit à l'installation de ssh sur leur machine, soit au moyen de la commande ssh-keygen. Ensuite, la connexion avec authentification sera possible à condition que chaque côté connaisse la clé publique de l'autre. Remarquez bien que, puisqu'elles sont publiques, ces clés peuvent être échangées avec des moyens non sécurisés.

Par ailleurs, de nombreux clients ssh permettent de visualiser les résultats des commandes dans un environnement graphique multi-fenêtré (option -X). Ils permettent également des communications utilisant d'autres protocoles en profitant du cryptage des données (sftp par exemple : voir les clients adaptés à cette possibilité).

Utilisateurs multiples d'une même machine

Les serveurs telnet ou ssh permettent, sauf configuration spécifique, à plusieurs utilisateurs de se connecter en même temps à la machine sur laquelle ils tournent. Ainsi, vous pouvez, en étant l'utilisateur du clavier et de l'écran de la machine1, vous connecter par ssh sur la machine2 du même réseau, par exemple une de celles qui sont situées dans la même salle, et sur lesquelles d'autres personnes travaillent. Ceci n'est pas très utile, dans la mesure où, quelle que soit la machine, vous retrouvez votre environnement et le même accès à vos fichiers. Par contre, ce peut être très utile dans un des cas suivants :

Bien entendu, tout ceci a un coût : charge du réseau, et de la machine sur laquelle plusieurs utilisateurs sont connectés. Les commandes who ou users permettent de connaître les logins des personnes connectées à la machine à un instant donné.

Ftp (File Transfer Protocol)

Le protocole de transfert de fichiers a pour but, comme son nom l'indique, de transférer (ou plutôt de copier) des fichiers du serveur vers le client ou inversement.Il comporte une phase d'identification semblable à un login, qui permet d'accèder en mode commande : le client dispose alors d'un certain nombre de commandes, dont beaucoup ressemblent à celles du shell, lui permettant de scruter le contenu (répertoires, fichiers disponibles) du serveur web et, s'il y est autorisé, d'intervenir sur ce contenu (créer, effacer des répertoires, ...). En outre, les commandes get et put permettent de lancer une copie de fichier dans un sens ou dans l'autre.

La particularité de ftp est le fait d'utiliser deux connexions distinctes entre client et serveur : l'une pour les commandes du client vers le serveur, et l'autre, ouverte et fermée à chaque utilisation, pour le transfert du fichier demandé (le fait de lister le contenu d'un répertoire du serveur est considéré comme transfert de fichier). Cette connexion de transfert de donnée peut être initiée par le serveur (mode actif) ou par le client (mode passif). Le mode actif peut parfois poser quelques problèmes à un proxy pas assez performant ou mal configuré.

Les transferts de fichiers s'effectuent en texte ou en mode binaire (commandes correspondantes : "ascii" et "binary"). Dans le deuxième cas, tous les octets constituant le fichiers sont copiés tels quels, alors qu'en texte, des transformations peuvent être effectuées (aux fins de lignes, aux caractères) pour s'adapter aux différents codages utilisés par les différents systèmes d'exploitation.

Les clients graphiques permettent d'invoquer les commandes ftp au moyen de clicks de la souris au lieu de les taper en mode commande ligne.

Les serveurs ftp sont de deux types :

Http (HyperText Transfer Protocol)

Http est un protocole assez récent, conçu au début des années 1990, dans le but de véhiculer les requêtes et réponses de documents hypertextuels écrits en html. Il effectue donc des transferts de fichiers, généralement des pages html ou documents annexes tels qu'images, vidéos, sons, mais peut aussi transporter des documents de nature diverses (cf. cours 5). De plus, bien que conçu essentiellement pour consulter des documents, http peut aussi fonctionner en "upload" (envoi de fichiers au serveur). Toutefois, il ne fait pas double emploi avec ftp, car il comporte des particularités liées à ses fonctions essentielles, par exemple :

Certains serveurs peuvent proposer le téléchargement des fichiers au moyen de http ou de ftp, au choix de l'utilisateur.

Smtp (Simple Mail Transfer Protocol)

Ce protocole est par contre très ancien. Il a été conçu pour échanger des mails entre serveurs de courrier, ces mails étant au départ du texte simple, en américain donc entre autres sans lettres accentuées ou autres bizarreries européennes... Par ailleurs, la sécurité n'était à l'époque le souci primordial, ce qui fait que le protocole accepte beaucoup de chose (cf. ci-dessous), mail il est heureusement possible de faire du filtrage dans les logiciels modernes.

Des extensions (ESMTP) ont étté ajoutées pour :

La plupart des logiciels clients de mail offrent des options de configuration permettant de formatter les mails en texte pur ou html (ou les deux), d'"échapper" ou pas les caractères spéciaux (Quoted Printable)

Pour plus de détails sur les types de fichiers attachés, voir en particulier le cours sur MIME.

Pour pouvoir inclure des données diverses dans un mail, on (les logiciels de mail) utilise "multipart". Comme son nom l'indique, ce type précise que le message est constitué de plusieurs parties. Une chaîne de caractères générée en partie au hasard sert de séparateur aux différentes parties, lesquelles peuvent être de nature très différentes. Le sous type "mixed" indique justement des parties différentes, alors que le sous-type "alternative" indique différentes formes (par exemple texte ou html) d'une même donnée. On peut visualiser les sources de messages pour se rendre compte de la manière dont ils sont effectivement codés, ou bien envoyer "à la main" des messages forgés selon ces principes (cf. TP).

Pop, imap

Ces protocoles ont été créés, bien plus tard que smtp, pour lire commodément le courrier à partir d'un ordinateur personnel.

Pop (Post Office Protocol) rappatrie le courrier sur le poste de l'utilisateur (avec effacement ou pas selon l'option choisie du courrier sur le serveur), alors que Imap (Interactive Mail Access Protocol) permet de gérer le courrier à partir du poste de travail tout en permettant de le trier dans différentes boîtes sur le serveur.

Utilisation de protocoles d'applications au moyen de la commande telnet

La commande telnet (sous système Unix) permet de se connecter à un serveur d'un protocole quelconque (donc en particulier autre que telnet), ceci en spécifiant un second paramètre :
telnet <machine> <protocole>,
où protocole est un nom ou un numéro (cf. cours 4) de port couramment associé à un protocole.

Par exemple, la commande :
telnet www.info.unicaen.fr http
établit une connexion http entre la machine de l'utilisateur et la machine "www.info.unicaen.fr" (qui, avec un peu de chance, comporte un serveur http). Pour utiliser la liaison ainsi ouverte (un message doit vous indiquer le succès de l'opération), il faut "parler http". Par exemple :
GET / HTTP/1.0
(avec deux retour-charriot) demande au serveur qui a répondu, le téléchargement de la page d'accueil (/) avec la version 1.0 du protocole http. Normalement, on doit obtenir la page en question ... en source html affiché en mode texte. En remplaçant "GET" par "HEAD", on obtient seulement l'en-tête de la page. En remplaçant le "/" par une url complète, on peut obtenir une autre page, ...

Autre exemple, avec smtp :
telnet smtp.info.unicaen.fr smtp
On obtient un message du genre :
Connected to rantanplan.info.unicaen.fr.
Escape character is '^]'.
220 rantanplan.info.unicaen.fr ESMTP

Note : le "ESMTP" annoncé signifie qu'il s'agit de la version "étendue" du protocole SMTP

Le reste du dialogue peut ressembler à ceci :

EHLO
250-rantanplan.info.unicaen.fr
250-PIPELINING
250 8BITMIME
MAIL FROM: god@heaven.com
250 ok
RCPT TO: jean@info.unicaen.fr
250 ok
DATA
354 go ahead

Tout va bien au paradis
.
250 ok 1034065595 qp 18178
QUIT
221 rantanplan.info.unicaen.fr
Connection closed by foreign host.

 

Voir le texte du TP pour plus de détails

Retour au sommaire de l'unité