Le protocole Telnet, décrit dans le RFC 854 , comprend un moyen pour envoyer des commandes dans la bande, constitué par le caractère IAC , '\255'
, suivie de plusieurs autres octets. Ces commandes peuvent faire des choses comme envoyer une interruption à la télécommande, mais elles sont généralement utilisées pour envoyer des options .
Un examen détaillé d'un échange qui envoie l' option de type de terminal se trouve dans Microsoft Q231866 .
L' option de taille de fenêtre est décrite dans la RFC 1073 . Le client envoie d'abord sa volonté d'envoyer une NAWS
option. Si le serveur répond DO NAWS
, le client peut alors envoyer les NAWS
données d'option, qui sont composées de deux valeurs 16 bits.
Exemple de session, sur un terminal à 47 colonnes et 80 colonnes:
telnet> set options
Will show option processing.
telnet> open localhost
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
SENT WILL NAWS
RCVD DO NAWS
SENT IAC SB NAWS 0 80 (80) 0 47 (47)
Le protocole ssh est décrit dans la RFC 4254 . Il consiste en un flux de messages. Un tel message est "pty-req"
, qui demande un pseudo-terminal, et ses paramètres incluent la hauteur et la largeur du terminal.
byte SSH_MSG_CHANNEL_REQUEST
uint32 recipient channel
string "pty-req"
boolean want_reply
string TERM environment variable value (e.g., vt100)
uint32 terminal width, characters (e.g., 80)
uint32 terminal height, rows (e.g., 24)
uint32 terminal width, pixels (e.g., 640)
uint32 terminal height, pixels (e.g., 480)
string encoded terminal modes
Les clients telnet et ssh capteront le SIGWINCH
signal, donc si vous redimensionnez une fenêtre de terminal pendant une session, ils enverront un message approprié au serveur avec la nouvelle taille. Ssh envoie le message de changement de dimension de fenêtre:
byte SSH_MSG_CHANNEL_REQUEST
uint32 recipient channel
string "window-change"
boolean FALSE
uint32 terminal width, columns
uint32 terminal height, rows
uint32 terminal width, pixels
uint32 terminal height, pixels
Window Dimension Change Message
? Je n'en trouve aucun exemple nulle part.Je soupçonne que c'est via le signal
SIGWINCH
--- probablement envoyé dans le tuyau.De wikipedia :
Si je fais un (en
zsh
):... et je modifie la taille du terminal:
la source
RFC 4254 Section 6.9 Le nom du message "changement de fenêtre" est envoyé avec les nouvelles dimensions. Côté client, il est peut-être vrai que le SIGWINCH d'origine est pris, mais il est envoyé via ce message, je crois. https://www.ietf.org/rfc/rfc4254.txt
la source