Les caractéristiques du protocole UDP / Le protocole SMTP / Introduction au protocole Telnet

Les caractéristiques du protocole UDP

Le protocole UDP (User Datagram Protocol) est un protocole non orienté connexion de la couche transport du modèle TCP/IP. Ce protocole est très simple étant donné qu'il ne fournit pas de contrôle d'erreurs (il n'est pas orienté connexion...).

L'en-tête du segment UDP est donc très simple :

Port Source
(16 bits)
Port Destination
(16 bits)
Longueur
(16 bits)
Somme de contrôle
(16 bits)
Données
(longueur variable)

Signification des différents champs

  • Port Source: il s'agit du numéro de port correspondant à l'application émettrice du segment UDP. Ce champ représente une adresse de réponse pour le destinataire. Ainsi, ce champ est optionnel, cela signifie que si l'on ne précise pas le port source, les 16 bits de ce champ seront mis à zéro, auquel cas le destinataire ne pourra pas répondre (cela n'est pas forcément nécessaire, notamment pour des messages unidirectionnels.
  • Port Destination: Ce champ contient le port correspondant à l'application de la machine destinataire à laquelle on s'adresse.
  • Longueur: Ce champ précise la longueur totale du segment, en-tête comprise, or l'en-tête a une longueur de 4 x 16 bits (soient 8 x 8 bits) donc le champ longueur est nécessairement supérieur ou égal à 8 octets.
  • Somme de contrôle: Il s'agit d'une somme de contrôle réalisée de telle façon à pouvoir contrôler l'intégrité du segment.

 

Introduction à la messagerie électronique

Le courrier électronique est considéré comme étant le service le plus utilisé sur Internet. Ainsi la suite de protocoles TCP/IP offre une panoplie de protocoles permettant de gérer facilement le routage du courrier sur le réseau.

Le protocole SMTP

Le protocole SMTP (Simple Mail Transfer Protocol, traduisez Protocole Simple de Transfert de Courrier) est le protocole standard permettant de transférer le courrier d'un serveur à un autre en connexion point à point.

Il s'agit d'un protocole fonctionnant en mode connecté, encapsulé dans une trame TCP/IP. Le courrier est remis directement au serveur de courrier du destinataire. Le protocole SMTP fonctionne grâce à des commandes textuelles envoyées au serveur SMTP (par défaut sur le port 25). Chacune des commandes envoyées par le client (validée par la chaîne de caractères ASCII CR/LF, équivalent à un appui sur la touche entrée) est suivi d'une réponse du serveur SMTP composée d'un numéro et d'un message descriptif.

Voici un scénario de demande d'envoi de mail à un serveur SMTP

  • Lors de l'ouverture de la session SMTP, la première commande à envoyer est la commande HELO suivie d'un espace (noté <SP>) et du nom de domaine de votre machine (afin de dire "bonjour je suis telle machine"), puis valider par entrée (noté <CRLF>). Depuis avril 2001, les spécifications du protocole SMTP, définies dans le RFC 2821, imposent que la commande HELO soit remplacée par la commande EHLO.
  • La seconde commande est "MAIL FROM:" suivie de l'adresse email de l'expéditeur. Si la commande est acceptée le serveur renvoie le message "250 OK"
  • La commande suivante est "RCPT TO:" suivie de l'adresse email du destinataire. Si la commande est acceptée le serveur renvoie le message "250 OK"
  • La commande DATA est la troisième étape de l'envoi. Elle annonce le début du corps du message. Si la commande est acceptée le serveur renvoie un message intermédiaire numéroté 354 indiquant que l'envoi du corps du mail peut commencer et considère l'ensemble des lignes suivantes jusqu'à la fin du message repéré par une ligne contenant uniquement un point. Le corps du mail contient éventuellement certains des en-têtes suivants :
    • Date
    • Subject
    • Cc
    • Bcc
    • From
    Si la commande est acceptée le serveur renvoie le message "250 OK"

Voici un exemple de transaction entre un client (C) et un serveur SMTP (S)

S: 220 smtp.commentcamarche.net SMTP Ready
C: EHLO machine1.commentcamarche.net
S: 250 smtp.commentcamarche.net
C: MAIL FROM:<webmaster@commentcamarche.net>

S: 250 OK
C: RCPT TO:<meandus@meandus.net>

S: 250 OK
C: RCPT TO:<tittom@tittom.fr>

S: 550 No such user here
C: DATA
S: 354 Start mail input; end with <CRLF>.<CRLF>

C: Subject: Petit Bonjour
C: Salut Meandus,
C: comment ca va?
C :
C: A bientot !
C: <CRLF>.<CRLF>

S: 250 OK
C: QUIT
R: 221 smtp.commentcamarche.net closing transmission

Les spécifications de base du protocole SMTP veulent que tous les caractères transmis soient codés en code ASCII sur 7 bits et que le 8ème bit soit explicitement mis à zéro. Ainsi pour envoyer des caractères accentués il faut faire recours à des algorithmes intégrant les spécifications MIME :

  • base64 pour les fichiers attachés
  • quoted-printable (d'abbréviation QP) pour les caractères spéciaux contenus dans le corps du message

Il est ainsi possible d'envoyer un courrier grâce à un simple telnet sur le port 25 du serveur SMTP :

telnet smtp.commentcamarche.net 25

(le serveur indiqué ci-dessus est volontairement inexistant, vous pouvez essayer en remplaçant commentcamarche.net par le domaine de votre fournisseur d'accès à internet)

Voici un récapitulatif des principales commandes SMTP

Commande Exemple Description
HELO (désormais EHLO) EHLO 193.56.47.125 Identification à l'aide de l'adresse IP ou du nom de domaine de l'ordinateur expéditeur
MAIL FROM: MAIL FROM: expediteur@domaine.com Identification de l'adresse de l'expéditeur
RCPT TO: RCPT TO: destinataire@domaine.com Identification de l'adresse du destinataire
DATA DATA message Corps du mail
QUIT QUIT Sortie du serveur SMTP
HELP HELP Liste des commandes SMTP supportées par le serveur

L'ensemble des spécifications du protocole SMTP sont définies dans le RFC 821 (depuis avril 2001, les spécifications du protocole SMTP sont définies dans le RFC 2821).

Le protocole POP3

Le protocole POP (Post Office Protocol que l'on peut traduire par "protocole de bureau de poste") permet comme son nom l'indique d'aller récupérer son courrier sur un serveur distant (le serveur POP). Il est nécessaire pour les personnes n'étant pas connectées en permanence à Internet afin de pouvoir consulter les mails reçus hors connexion.

Il existe deux principales versions de ce protocole, POP2 et POP3, auxquels sont affectés respectivement les ports 109 et 110 et fonctionnant à l'aide de commandes textuelles radicalement différentes.

Tout comme dans le cas du protocole SMTP, le protocole POP (POP2 et POP3) fonctionne grâce à des commandes textuelles envoyées au serveur POP. Chacune des commandes envoyées par le client (validée par la séquence CR/LF) est composée d'un mot-clé, éventuellement accompagné d'un ou plusieurs arguments et est suivie d'une réponse du serveur POP composée d'un numéro et d'un message descriptif.

Voici un tableau récapitulant les principales commandes POP2 :

Commandes POP2
Commande
Description
HELLO Identification à l'aide de l'adresse IP de l'ordinateur expéditeur
FOLDER Nom de la boîte à consulter
READ Numéro du message à lire
RETRIEVE Numéro du message à récupérer
SAVE Numéro du message à sauvegarder
DELETE Numéro du message à supprimer
QUIT Sortie du serveur POP2

Voici un récapitulatif des commandes POP3 :

Commandes POP3
Commande
Description
USER identifiant Cette commande permet de s'authentifier. Elle doit être suivie du nom de l'utilisateur, c'est-à-dire une chaîne de caractères identifiant l'utilisateur sur le serveur. La commande USER doit précéder la commande PASS.
PASS mot_de_passe La commande PASS, permet d'indiquer le mot de passe de l'utilisateur dont le nom a été spécifié lors d'une commande USER préalable.
STAT Information sur les messages contenus sur le serveur
RETR Numéro du message à récupérer
DELE Numéro du message à supprimer
LIST [msg] Numéro du message à afficher
NOOP Permet de garder les connexion ouverte en cas d'inactivité
TOP <messageID> <n> Commande affichant n lignes du message, dont le numéro est donné en argument. En cas du réponse positive du serveur, celui-ci renvoie les en-têtes du message, puis une ligne vierge et enfin les n premières lignes du message.
UIDL [msg] Demande au serveur de renvoyer une ligne contenant des informations sur le message éventuellement donné en argument. Cette ligne contient une chaîne de caractères, appelée listing d'identificateur unique, permettant d'identifier de façon unique le message sur le serveur, indépendamment de la session. L'argument optionnel est un numéro correspondant à un message existant sur le serveur POP, c'est-à-dire un message non effacé).
QUIT La commande QUIT demande la sortie du serveur POP3. Elle entraîne la suppression de tous les messages marqués comme effacés et renvoie l'état de cette action.

Le protocole POP3 gére ainsi l'authentification à l'aide d'un nom d'utilisateur et d'un mot de passe, il n'est par contre pas sécurisé car les mots de passe, au même titre que les mails, circulent en clair (de manière non chiffrée) sur le réseau. En réalité, selon la RFC1939, il est possible de chiffrer le mot de passe en utilisant l'algorithme MD5 et ainsi bénéficier d'une authentification sécurisée. Toutefois, cette commande étant optionnelle, peu de serveurs l'implémentent D'autre part le protocole POP3 bloque la boîte aux lettres lors de la consultation, ce qui signifie qu'une consultation simultanée par deux utilisateurs d'une même boîte aux lettres est impossible.

Au même titre qu'il est possible d'envoyer un email grâce à telnet, il est également possible d'accéder à son courrier entrant grâce à un simple telnet sur le port du serveur POP (110 par défaut) :

telnet mail.commentcamarche.net 110

(le serveur indiqué ci-dessus est volontairement inexistant, vous pouvez essayer en remplaçant commentcamarche.net par le domaine de votre fournisseur d'accès à internet)

S: +OK mail.commentcamarche.net POP3 service
S: (Netscape Messaging Server 4.15 Patch 6 (built Mar 31 2001))
C: USER jeff
S: +OK Name is a valid mailbox
C: PASS mon_pass
S: +OK Maildrop ready
C: STAT
S: +OK 2 0
C: TOP 1 5
S: Subject: Petit Bonjour
S: Salut Meandus,
S: comment ca va?
S :
S: A bientot !
C: QUIT
S: +OK

L'affichage des données que vous saisissez dépend du client Telnet que vous utilisez. Selon votre client Telnet, il vous faudra peut-être activer l'option echo local.

Le protocole IMAP

Le protocole IMAP (Internet Message Access Protocol) est un protocole alternatif au protocole POP3 mais offrant beaucoup plus de possibilités :

  • IMAP permet de gérer plusieurs accès simultanés
  • IMAP permet de gérer plusieurs boîtes aux lettres
  • IMAP permet de trier le courrier selon plus de critères

Plus d'informations

Pour plus d'informations sur le protocole SMTP, le mieux est de se reporter à la RFC 821 expliquant de manière détaillée le protocole :

  • RFC 821 traduite en français
  • RFC 821 originale

 

Introduction au protocole Telnet

Le protocole Telnet est un protocole standard d'Internet permettant l'interfaçage de terminaux et d'applications à travers Internet. Ce protocole fournit les règles de base pour permettre de relier un client (système composé d'un affichage et d'un clavier) à un interpréteur de commande (côté serveur).

Le protocole Telnet s'appuie sur une connexion TCP pour envoyer des données au format ASCII codées sur 8 bits entre lesquelles s'intercalent des séquences de contrôle Telnet. Il fournit ainsi un système orienté communication, bi-directionnel (half-duplex), codé sur 8 bits facile à mettre en oeuvre.

Le protocole Telnet repose sur trois concepts fondamentaux :

  • Le paradigme du terminal réseau virtuel (NVT, Network Virtual Terminal) ;
  • Le principe d'options négociées ;
  • Les règles de négociation.

Ce protocole est un protocole de base, sur lequel s'appuient certains autres protocoles de la suite TCP/IP (FTP, SMTP, POP3, ...). Les spécifications de Telnet ne mentionnent pas d'authentification car Telnet est totalement séparé des applications qui l'utilisent (le protocole FTP définit une séquence d'authentification au-dessus de Telnet). En outre le protocole Telnet est un protocole de transfert de données non sûr, c'est-à-dire que les données qu'il véhicule circulent en clair sur le réseau (de manière non chiffrée). Lorsque le protocole Telnet est utilisé pour connecter un hôte distant à la machine sur lequel il est implémenté en tant que serveur, ce protocole est assigné au port 23.

Hormis les options et les règles de négociation associées, les spécifications du protocole Telnet sont basiques. La transmission de données à travers Telnet consiste uniquement à transmettre les octets dans le flux TCP (le protocole Telnet précise tout de même que les données doivent par défaut, c'est-à-dire si aucune option ne précise le contraire, être groupées dans un tampon avant d'être envoyées. Plus exactement cela signifie que par défaut les données sont envoyées ligne par ligne). Lorsque l'octet 255 est transmis, l'octet suivant doit être interprété comme une commande. L'octet 255 est ainsi nommé IAC (Interpret As Command, traduisez Interpréter comme une commande). Les commandes sont décrites plus loin dans le document.

Les spécifications basiques du protocole Telnet sont disponibles dans le RFC 854, tandis que les nombreuses options sont décrites par les RFC 855 à 861.

RFC concernant Telnet
RFC 854 Telnet Protocol Specifications
RFC 855 Telnet Option Specifications
RFC 856 Telnet binary transmission
RFC 857 Telnet Echo Option
RFC 858 Telnet Suppress Go ahead Option
RFC 859 Telnet Status Option
RFC 860 Telnet Timing Mark Option
RFC 861 Telnet Extended options-list Option

La notion de terminal virtuel

Aux débuts d'Internet, le réseau (ARPANET) était composé de machines dont les configurations étaient très peu homogènes (claviers, jeux de caractères, résolutions, longueur des lignes d'affichage). D'autre part, les sessions des terminaux possédaient également leur propre façon de contrôler les flux de données en entrée/sortie.

Ainsi, au lieu de créer des adaptateurs pour chaque type de terminal afin qu'il puisse y avoir une interopérabilité de ces systèmes, il a été décidé de mettre au point une interface standard, appelée NVT (Network Virtual Terminal, traduisez Terminal réseau virtuel), fournissant une base de communication standard, composée de :

  • Caractères ASCII 7 bits auxquels s'ajoutent le code ASCII étendu
  • Trois caractères de contrôle
  • Cinq caractères de contrôle optionnels
  • Un jeu de signaux de contrôle basique

Le protocole Telnet consiste ainsi à créer une abstraction du terminal, permettant à n'importe quel hôte (client ou serveur) de communiquer avec un autre hôte sans connaître ses caractéristiques.

Le principe d'options négociées

Les spécifications du protocole Telnet permettent de prendre en compte le fait que certains terminaux puissent proposer des services additionnels, non définis dans les spécifications de base (mais conformes aux spécifications), afin de pouvoir utiliser des fonctions avancées. Ainsi, ces fonctionnalités se traduisent en terme d'options. Le protocole Telnet propose donc un système de négociations d'options permettant l'utilisation de fonctions avancées sous forme d'options de part et d'autre en initiant des requêtes pour en demander l'autorisation au système distant.

Les options de Telnet affectent séparément chaque direction du canal de données. Ainsi, chaque extrémité est à même de négocier les options, c'est-à-dire de définir les options qu'elle :

  • veut utiliser (DO)
  • refuse d'utiliser (DON'T)
  • veut que l'autre extrémité utilise (WILL)
  • refuse que l'autre extrémité utilise (WON'T)

De cette façon, chacune des parties peut émettre une demande d'utilisation d'une option. L'autre partie doit alors répondre si elle accepte ou non l'utilisation de l'option. Dans le cas où la requête concerne une désactivation d'option, le destinataire de la requête ne doit pas refuser pour être totalement compatible avec le modèle NVT.

La négociation d'options Telnet
Requête Réponse Interprétation
DO WILL L'émetteur commence en utilisant l'option
WON'T L'émetteur ne doit pas utiliser l'option
WILL DO L'émetteur commence en utilisant l'option, après avoir envoyé un DO
DON'T L'émetteur ne doit pas utiliser l'option
DON'T WON'T L'émetteur signale qu'il a désactivé l'option
WON'T DON'T L'émetteur signale que l'émetteur doit désactiver l'option

Il existe 255 codes d'options. Le protocole Telnet prévoit tout de même un espace d'adressage permettant de décrire de nouvelles options.
Le RFC 855 explique comment documenter toute nouvelle option.

Les règles de négociation

Des règles de négociation d'options permettent d'éviter des situations de bouclage (par exemple qu'une des parties envoie des requêtes de négociation d'options à chaque confirmation de l'autre partie).

  1. Les requêtes ne doivent être émises que lors d'un changement de mode
  2. Lorsqu'une des parties reçoit une requête de changement de mode, il ne doit l'aquitter que s'il ne se trouve pas déjà dans le mode approprié
  3. Une requête ne doit être insérée dans le flux de données qu'à l'endroit où elle prend effet.

Les caractères de contrôle de la sortie

Les caractères suivants sont des commandes permettant de contrôler l'affichage du terminal réseau virtuel :

Commandes de contrôle de l'affichage
Numéro Code Nom Signification
0 NULL Null Cette commande permet d'envoyer des données à l'hôte distant sans que celles-ci ne soient interprétées (notamment pour signaler que l'hôte local est toujours en ligne)
1 LF Line Feed Cette commande permet de déplacer le curseur d'impression à la ligne suivante, à la même position horizontale
2 CR Carriage Return Cette commande (Retour Chariot) permet de déplacer le curseur d'impression à l'extrême gauche de la ligne courante

Ainsi, on définit la commande CRLF, composée des deux commandes CR et LF l'une après l'autre (dans n'importe quel ordre) permettant de déplacer le curseur d'impression à l'extrême gauche de la ligne suivante.

Les caractères de contrôle optionnels

Les caractères précédents sont les seuls (parmi les 128 caractères du code ASCII de base et des 128 caractères du code ASCII étendu) à possèder une signification particulière pour le terminal réseau virtuel. Les caractères suivants peuvent éventuellement avoir une signification sur un terminal réseau virtuel mais ne sont pas nécessairement implémentés.

Commandes de contrôle de l'affichage
Numéro Code Nom Signification
7 BEL Bell Cette commande permet d'émettre un signal sonore ou visuel sans modifier la position du curseur
8 BS BackSpace Cette commande permet de modifier la position du curseur vers sa position précédente
9 HT Horizontal Tab Cette commande permet de modifier la position du curseur vers la tabulation suivante à droite
11 VT Vertical Tab Cette commande permet de modifier la position du curseur vers la tabulation suivante de la ligne du dessous
12 FF Form Feed Cette commande permet de modifier la position du curseur vers le bas à la page suivante en conservant la position horizontale

Les caractères de contrôle de la session

Les caractères suivants sont des commandes permettant de contrôler la session Telnet. Ces commandes pour être interprétées en tant que telles doivent être précédées du caractère d'échappement IAC (Interpret As Command). Ainsi, si ces octets sont transmis sans être précédés du caractère IAC, ils seront traités comme de simples caractères. Pour transmettre le caractère IAC, il faut le faire précéder d'un caractère d'échappement (lui-même) autrement dit il doit être doublé.

Les commandes correspondant à une négociation d'option doivent être suivies d'un octet précisant l'option. Ces commandes permettent d'interrompre des signaux, de supprimer des informations dans le cache du terminal, ...

caractères de contrôle de la session
Numéro Code Nom Signification
240 SE   Fin de négociation d'option
241 NOP No Operation Cette commande permet d'envoyer des données à l'hôte distant sans que celles-ci ne soient interprétées (notamment pour signaler que l'hôte local est toujours en ligne)
242 DM Data Mark Permet de vider l'ensemble des tampons entre le terminal réseau virtuel et l'hôte distant. Elle correspond à un appui sur la touche Synch du NVT et doit impérativement être associé à un marquage du bit Urgent de TCP
243 BRK Break Caractère Break du terminal virtuel
244 IP Interrupt Process Cette commande permet de suspendre, interrompre ou abandonner le processus distant
245 AO Abort Output Cette commande permet de suspendre, interrompre ou abandonner l'affichage du processus distant
246 AYT Are You There Cette commande permet de vérifier que le système distant est toujours "en vie"
247 EC Erase Character Cette commande permet de supprimer le caractère précédent
248 EL Erase Line Cette commande permet de supprimer la ligne précédente
249 GA Go Ahead Cette commande permet d'inverser le contrôle, pour les liaisons half-duplex
250 SB SB Cette commande indique que les données qui suivent sont une négociation de l'option précédente
251 WILL code d'option  
252 WON'T code d'option  
253 DO code d'option  
254 DON'T code d'option  
255 IAC Interpret As Command Cette commande permet d'interpréter l'octet suivant comme une commande. La commande IAC permet d'aller au-delà des commandes de base

Plus d'information

  • RFC 854 traduite en français
  • RFC 854 originale
  • L'utilisation de Telnet pour la connexion distante aux services d'un hôte


Article ajouté le 2007-02-12 , consulté 68 fois

Commentaires



Poster un commentaire





http://





Merci de recopier le nombre présent à gauche dans la case de texte ci-dessous ( Pourquoi ? )





Liens

Voir les articles de la catégorie " ***** INFORMATIQUE ***** "

Imprimer cet article

Retour aux articles


Parrainé par ntic