El protocolo Telnet, se describe en RFC 854 , incluye una forma de enviar comandos en-banda, que consiste en el carácter IAC , '\255'
, seguido por varios más bytes. Estos comandos pueden hacer cosas como enviar una interrupción al control remoto, pero generalmente se usan para enviar opciones .
Puede encontrar una vista detallada de un intercambio que envía la opción de tipo de terminal en Microsoft Q231866 .
La opción de tamaño de ventana se describe en RFC 1073 . El cliente primero envía su disposición a enviar una NAWS
opción. Si el servidor responde DO NAWS
, el cliente puede enviar los NAWS
datos de la opción, que se compone de dos valores de 16 bits.
Ejemplo de sesión, en un terminal de 47 filas y 80 columnas:
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)
El protocolo ssh se describe en RFC 4254 . Consiste en una secuencia de mensajes. Uno de estos mensajes es "pty-req"
, que solicita un pseudo-terminal, y sus parámetros incluyen la altura y el ancho del 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
Los clientes telnet y ssh captarán la SIGWINCH
señal, por lo que si cambia el tamaño de una ventana de terminal durante una sesión, enviarán un mensaje apropiado al servidor con el nuevo tamaño. Ssh envía el mensaje de cambio de dimensión de ventana:
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
? No puedo encontrar un ejemplo de ello en ningún lado.Sospecho que es a través de la señal
SIGWINCH
--- probablemente entregado por la tubería.De wikipedia :
Si hago un (in
zsh
):... y modifico el tamaño del terminal:
fuente
RFC 4254 Sección 6.9 El nombre del mensaje "cambio de ventana" se envía con las nuevas dimensiones. En el lado del cliente, puede ser cierto que el SIGWINCH original se detecta, pero creo que se envía a través de ese mensaje. https://www.ietf.org/rfc/rfc4254.txt
fuente