# Telnet

Telnet (terminal network ou telecommunication network, ou encore teletype network) est un protocole utilisé sur tout réseau TCP/IP, permettant de communiquer avec un serveur distant en échangeant des lignes de texte et en recevant des réponses également sous forme de texte.
Créé en 1969, telnet est un moyen de communication très généraliste et bi-directionnel. Il appartient à la couche application du modèle OSI et du modèle ARPA. Il est normalisé par l'IETF (RFC 15, 854 et 855).
Il était notamment utilisé pour administrer des serveurs Unix distant ou de l'équipement réseau, avant de tomber en désuétude par défaut de sécurisation (le texte étant échangé en clair) et l'adoption de SSH.

## Détails du protocole

Telnet est un protocole de type client-serveur s'appuyant sur TCP. Les clients se connectent généralement sur le port 23 du serveur.
Parmi les caractères envoyés par le serveur Telnet, il y a évidemment les caractères de texte à afficher, mais il y a aussi des séquences de caractères qui permettent de contrôler l'affichage, par exemple pour effacer le contenu de la ligne courante. Par souci de portabilité, Telnet définit des séquences d'échappement qui ne dépendent pas du type de terminal. Le protocole de présentation correspondant est appelé NVT (Network Virtual Terminal). Le client Telnet est censé interpréter ces séquences portables de contrôle du terminal.
NVT s'appuie sur :
* des caractères de contrôle empruntés au code ASCII, comme le caractère Form Feed de code hexadécimal 0C pour effacer l'écran ;
* des séquences de plusieurs caractères introduites par le code hexadécimal FF appelé IAC (interpret as command), comme la séquence hexadécimale FF F8 pour effacer une ligne.
NVT va au-delà des fonctionnalités d'affichage et permet par exemple d'envoyer de façon urgente des signaux d'interruption au serveur pour interrompre l'application en cours. Il permet aussi de négocier des options entre le client Telnet et le serveur Telnet : on peut ainsi négocier le type de terminal, ce qui permet d'utiliser des séquences de contrôle de l'affichage comme celles du terminal VT100 qui soient moins rudimentaires que celles que NVT propose.
NVT est conçu pour des caractères de texte sur 7 bits et n'est par défaut pas adapté à une transmission sur 8 bits. Ce protocole est repris sous une forme simplifiée pour la connexion de contrôle du protocole de transfert de fichier FTP.

## Utilisation

Une des utilisations majeures de la commande telnet était de se connecter à des serveurs telnet, qui demandaient un identifiant, puis un mot de passe, et donnaient une ligne de commande sur la machine distante en échange. Pour cela elle nécessitait le lancement d'un démon sur la machine hôte, souvent appelé telnetd. Cette utilisation est progressivement devenue marginale car le protocole Telnet n'est pas sécurisé (cf. Sécurité).
La commande telnet reste une commande très pratique pour tester des serveurs. Vu la flexibilité du programme, il est possible d'utiliser la commande telnet pour établir une connexion TCP interactive avec d'autres services tels que SMTP, HTTP, POP, IMAP, etc. en utilisant alors le port du protocole au lieu du port telnet standard.
Telnet est indispensable pour paramétrer certains matériels réseau n'ayant pas d'interface de gestion web, et reste utile en complément d'une telle interface. On peut ainsi configurer des commutateurs, des routeurs, des serveurs d'impression, des téléphones IP, etc.

## Sécurité

Le côté sommaire de Telnet fait que toute communication est transmise en clair sur le réseau, mots de passe compris. Des sniffeurs comme tcpdump ou Wireshark permettent d'intercepter les communications de la commande telnet. Des protocoles chiffrés comme SSH ont été développés pour fournir un accès distant remplaçant Telnet et dont l'interception ne fournit aucune donnée utilisable à un éventuel espion du net.