Groupe de travail Réseau	S. Alexander, éditeur	
Request for Comments : 1572	Lachman Technology, Inc.	
Catégorie : En cours de normalisation	janvier 1994	
Traduction Claude Brière de L'Isle		

Option Telnet Environnement

Statut du présent mémoire
Le présent document spécifie un protocole de l’Internet en cours de normalisation pour la communauté de l’Internet, et appelle à des discussions et suggestions pour son amélioration. Prière de se référer à l’édition en cours des "Protocoles officiels de l’Internet" (STD 1) pour voir l’état de normalisation et le statut de ce protocole. La distribution du présent mémoire n’est soumise à aucune restriction.

Résumé
Le présent document spécifie un mécanisme pour passer les informations d'environnement entre un client et un serveur telnet. L'utilisation de ce mécanisme permet à un usager telnet de propager les informations de configuration à un hôte distant lors de la connexion.

Ce document corrige certaines erreurs de [1].

1.	Noms et codes des commandes

NEW-ENVIRON	39
IS	0
SEND	1
INFO	2
VAR	0
VALUE	1
ESC	2
USERVAR	3

2.	Signification des commandes

IAC WILL NEW-ENVIRON
Celui qui envoie cette commande veut envoyer les variables d'environnement.

IAC WONT NEW-ENVIRON
Celui qui envoie cette commande refuse d'envoyer les variables d'environnement.

IAC DO NEW-ENVIRON
Celui qui envoie cette commande veut recevoir les variables d'environnement.

IAC DONT NEW-ENVIRON
Celui qui envoie cette commande refuse d'accepter les variables d'environnement.

IAC SB NEW-ENVIRON SEND [ type ... [ type ... [ ... ] ] ] IAC SE
Celui qui envoie cette commande demande que le côté distant envoie ses variables d'environnement. Le "type" peut être VAR ou USERVAR, pour indiquer des noms de variable bien connues ou d'utilisateur. Seul le côté qui est DO NEW-ENVIRON peut initier une commande SEND. Si une liste des variables est spécifiée, alors seules ces variables devraient être envoyées. Si aucune liste n'est spécifiée, alors l'environnement par défaut, des variables bien connues ainsi que des variables définies par l'utilisateur, devraient être envoyés. Si une des variables n'a pas de nom, alors toutes les variables de ce type (bien connues ou définies par l'utilisateur) dans l'environnement par défaut devraient être envoyées.

IAC SB NEW-ENVIRON IS type ... [ VALEUR ... ] [ type ... [ VALEUR ... ] [ ... ] ] IAC SE
Celui qui envoie cette commande envoie les variables d'environnement. Cette commande est envoyée en réponse à une demande SEND. Seul le côté qui est WILL NEW-ENVIRON peut envoyer une commande IS. Les paires "type"/VALEUR doivent être retournées dans le même ordre que la demande SEND les spécifiait, et il doit y avoir une réponse pour chaque "type ..." explicitement demandé. Le "type" sera VAR ou USERVAR. Plusieurs variables d'environnement peuvent être envoyées. Les caractères qui suivent un "type" jusqu'au prochain "type" ou VALEUR spécifient le nom de la variable. Les caractères qui suivent une VALEUR jusqu'au prochain "type" spécifient la valeur de la variable. Si un "type" n'est pas suivi par une VALEUR (par exemple, par une autre VAR, USERVAR, ou IAC SE) cette variable est alors indéfinie. Si une VALEUR est immédiatement suivie par un "type" ou IAC, alors la variable est définie, mais n'a pas de valeur. Si un IAC est contenu entre l'IS et le IAC SE, il doit être envoyé comme IAC IAC. Si une variable ou une valeur contient un VAR, elle doit être envoyée comme ESC VAR. Si une variable ou une valeur contient un USERVAR, elle doit être envoyée comme ESC USERVAR. Si une variable ou une valeur contient une VALEUR, elle doit être envoyée comme ESC VALUE. Si une variable ou une valeur contient un ESC, elle doit être envoyée comme ESC ESC.

IAC SB NEW-ENVIRON INFO type ... [ VALEUR ... ] [ type ... [ VALEUR ... ] [ ... ] ] IAC SE
Celui qui envoie cette commande envoie des informations sur les variables d'environnement qui ont changé. Elle est identique à la commande IS, sauf que cette commande est INFO au lieu de IS. Seul le côté qui est WILL NEW-ENVIRON peut envoyer une commande INFO. La commande INFO n'est pas à utiliser pour envoyer des informations initiales ; la séquence SEND/IS est à utiliser pour cela. La commande INFO est à utiliser pour propager les changements des variables d'environnement, et peut être générée spontanément.

3.	Spécification par défaut

La spécification par défaut pour cette option est

WONT NEW-ENVIRON
DONT NEW-ENVIRON

qui signifie qu'il n'y aura aucun échange d'informations d'environnement.

4.	Motivation

De nombreux systèmes d'exploitation ont des variables d'informations de démarrage et d'environnement qui contiennent des informations qui devraient être propagées aux machines distantes lorsque les connexions Telnet sont établies. Plutôt que de créer une nouvelle option Telnet chaque fois que quelqu'un arrive avec une nouvelle information qu'il est nécessaire de propager à travers une session Telnet, mais que la session Telnet par elle-même n'a pas réellement besoin de connaître, cette option générique d'information peut être utilisée.

5.	Variables bien connues

USER : Cette variable est utilisée pour transmettre le nom de l'usager ou du compte que le client souhaite enregistrer sur le système distant. Le format de la valeur de la variable USER dépend du système, comme déterminé par le système distant.

JOB : Cette variable est utilisée pour transmettre l'identifiant de tâche que le client souhaite utiliser lorsqu'il se connecte au système distant. Le format de la valeur de la variable JOB dépend du système, comme déterminé par le système distant.

ACCT  : Cette variable est utilisée pour transmettre l'identifiant de compte que le client souhaite utiliser lorsqu'il se connecte au système distant. Le format de la valeur de la variable ACCT dépend du système, comme déterminé par le système distant.

PRINTER : Cette variable est utilisée pour identifier la localisation par défaut de la sortie d'imprimante. Comme il n'existe pas actuellement de façon standard de nommer une imprimante sur un réseau, le format de cette variable est actuellement indéfini.

SYSTEMTYPE : Ceci est utilisé pour transmettre le type de système d'exploitation sur le système qui envoie cette variable. Sa valeur est identique à la valeur de la commande SYSTEM (SYST) dans FTP [4]. Le format de la valeur devra avoir comme premier mot un des noms de système dont la liste figure dans la version en cours du document Numéros alloués [5].

DISPLAY : Cette variable est utilisée pour transmettre la localisation d'affichage X du client. Le format de la valeur de la variable DISPLAY est :

<host>:<dispnum>[.<screennum>]

Cette information est identique à l'information passée en utilisant l'option Telnet X-DISPLAY-LOCATION. Si la variable d'environnement DISPLAY et l'option X-DISPLAY-LOCATION [6] sont toutes deux reçues, et qu'elles contiennent des informations contradictoires, les informations les plus récentes reçues devraient être utilisées.

Comme il est impossible d'anticiper toutes les variables que les usagers peuvent souhaiter échanger, le type USERVAR est fourni pour permettre aux usagers de transmettre des paires arbitraires variable/valeur. L'utilisation d'un type supplémentaire permet aux mises en œuvre de faire la distinction entre les valeurs déduites pas le logiciel d'hôte distant et les valeurs fournies par l'usager. Les mises en œuvres paranoïaques vont vraisemblablement traiter les deux types avec un niveau égal de défiance. Les résultats d'une collision d'espace de nom entre une variable bien connue et une variable d'utilisateur sont spécifiques de la mise en œuvre.

6.	Règles de mise en œuvre

WILL et DO ne sont utilisés qu'au début de la connexion pour obtenir et accorder la permission de négociations futures.

Une fois que les deux hôtes ont échangé un WILL et un DO, celui qui envoie le DO NEW-ENVIRON est libre de demander que les variables d'environnement soient envoyées. Seul celui qui a envoyé le DO peut envoyer des demandes (IAC SB NEW-ENVIRON SEND IAC SE) et seul celui qui a envoyé le WILL peut transmettre des informations d'environnement réelles (via la commande IAC SB NEW-ENVIRON IS ... IAC SE). Bien que cette option puisse être utilisée à tout moment tout au long de la vie de la connexion telnet, l'échange des informations d'environnement va normalement survenir au démarrage de la connexion. Cela parce que de nombreux systèmes d'exploitation n'ont de mécanismes de propagation des informations d'environnement qu'à la création du processus, de sorte que les informations sont nécessaires avant que l'usager ne se connecte .

L'hôte qui reçoit n'est pas obligé de mettre toutes les variables qu'il reçoit dans l'environnement. Par exemple, si le client doit envoyer à travers USERVAR "TERM" VALUE "xterm" comme une variable d'environnement, et si l'option TERMINAL-TYPE [3] a déjà été utilisée pour déterminer le type de terminal, le serveur peut en toute sécurité ignorer la variable TERM. Aussi, certaines informations de démarrage peuvent être utilisées d'autres façons ; par exemple, les valeurs pour "USER", "ACCT" et "PROJ" peuvent être utilisées pour décider dans quel compte s'enregistrer, et pourraient n'être jamais entrées dans l'environnement des usagers. En général, si le serveur a déjà déterminé la valeur d'une variable d'environnement par quelque autre moyen approprié, ou si il ne comprend pas le nom d'une variable, il peut ignorer la valeur envoyée dans l'option NEW-ENVIRON. Le serveur peut aussi préférer simplement mettre toutes les informations inconnues dans l'environnement des usagers. C'est la méthode de mise en œuvre suggérée, parce qu'elle permet le plus de souplesse à l'usager.

Voici un exemple d'utilisation de l'option :

Hôte 1	Hôte 2
IAC DO NEW-ENVIRON
	IAC WILL NEW-ENVIRON
[ L'Hôte 1 est maintenant libre de demander des informations d'environnement ]
IAC SB NEW-ENVIRON SEND VAR
"USER" VAR "ACCT" VAR USERVAR
IAC SE
[ Le serveur a maintenant explicitement demandé les variables USER et ACCT, l'ensemble par défaut des variables d'environnement bien connues, et l'ensemble par défaut des variables définies par l'usager. Noter que le client inclut deux fois l'information USER ; une fois parce qu'elle est explicitement demandée, et une fois parce que c'est au titre de l'environnement par défaut . ]
	IAC SB NEW-ENVIRON IS VAR "USER"
	VALUE "joe" VAR "ACCT" VALUE
	"kernel" VAR "USER" VALUE "joe"
	VAR "DISPLAY" VALUE "foo:0.0"
	USERVAR "SHELL" VALUE "/bin/csh"
	IAC SE

Il est légal pour un client de répondre avec un environnement vide (pas de données entre le IAC SB et IAC SE) lorsque aucune variable bien connue ou d'usager n'est actuellement définie. Par exemple :

IAC SB NEW-ENVIRON IS IAC SE

est une réponse valide à tout ce qui suit :
IAC SB NEW-ENVIRON SEND IAC SE
IAC SB NEW-ENVIRON SEND VAR IAC SE
IAC SB NEW-ENVIRON SEND USERVAR IAC SE
IAC SB NEW-ENVIRON SEND VAR USERVAR IAC SE

(Le dernier exemple est équivalent au premier...)

La précédente version de cette spécification [1] inversait de façon incorrecte les valeurs de VAR et de VALUE,  ce qui mettait la spécification en contradiction avec les mises en œuvre existantes. Afin de résoudre ce problème, ainsi que quelques autres problèmes mineurs, un nouveau numéro d'option a été alloué à l'option NEW-ENVIRON. Cela permet aux mises en œuvre du présent mémoire d'interopérer sans ambiguïté.

Pour une discussion sur la façon de mettre en œuvre l'interfonctionnement avec les diverses mises en œuvre antérieures à ce mémoire, voir [2].

Il est prévu que toute mise en œuvre qui prend en charge l'option Telnet NEW-ENVIRON prenne en charge la totalité de cette spécification.

7.	Considérations de sécurité

Il est important pour une mise en œuvre de l'option NEW-ENVIRON de comprendre les interactions de l'établissement d'options et du processus de connexion/authentification. Précisément, une analyse soigneuse devrait être faite pour déterminer de quelles variables l'établissement est "sûr" avant la connexion du client. Un exemple de mauvais choix serait de permettre qu'une variable soit changée et laisse alors un intrus circonvenir ou compromettre le programme de connexion/authentification lui-même.

8.	Références
[1]	D. Borman, éditeur, "Option Telnet Environnement", RFC 1408, Cray Research, Inc., janvier 1993. (Historique)
[2]	D. Borman, "Questions d'interopérabilité de l'option Telnet Environnement", RFC 1571, Cray Research, Inc., janvier 1994.
[3]	J. VanBokkelen, "Option Telnet Type de terminal", RFC 1091, FTP Software, Inc., février 1989.
[4]	J. Postel et J. Reynolds, "Protocole de transfert de fichiers (FTP)", STD 9, RFC 959, USC/Information Sciences Institute, octobre 1985.
[5]	J. Reynolds et J. Postel, "Numéros alloués", STD 2, RFC 1340, USC/Information Sciences Institute, juillet 1992. (Rendue obsolète par la RFC 1700, elle-même Historique)
[6]	G. Marcy, "Option Telnet Localisation d'affichage X", RFC 1096, Carnegie Mellon University, mars 1989.

Remerciements

La version originale de ce document a été écrite par Dave Borman de Cray Research, Inc. On remercie vivement de leurs commentaires les membres du groupe de travail Telnet de l'IETF.

Adresse de l'éditeur

Steve Alexander
Lachman Technology, Inc.
1901 North Naper Boulevard
Naperville, IL 60563-8895
Téléphone : (708) 505-9555 x256
mél : stevea@lachman.com