O protocolo de telnet, descrito em RFC 854 , inclui um modo para enviar comandos dentro da banda, que consiste no carácter IAC , '\255'
, seguido por várias mais bytes. Esses comandos podem fazer coisas como enviar uma interrupção para o controle remoto, mas geralmente são usados para enviar opções .
Uma visão detalhada de uma troca que envia a opção de tipo de terminal pode ser encontrada no Microsoft Q231866 .
A opção de tamanho da janela é descrita na RFC 1073 . O cliente primeiro envia sua vontade de enviar uma NAWS
opção. Se o servidor responder DO NAWS
, o cliente poderá enviar os NAWS
dados da opção, que são compostos por dois valores de 16 bits.
Exemplo de sessão, em um terminal de 47 linhas 80 colunas:
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)
O protocolo ssh é descrito na RFC 4254 . Consiste em um fluxo de mensagens. Uma dessas mensagens é a "pty-req"
que solicita um pseudo-terminal e seus parâmetros incluem a altura e a largura do 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
Os clientes telnet e ssh capturam o SIGWINCH
sinal; portanto, se você redimensionar uma janela do terminal durante uma sessão, eles enviarão uma mensagem apropriada ao servidor com o novo tamanho. O Ssh envia a mensagem de alteração de dimensão da janela:
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
? Não consigo encontrar um exemplo disso em nenhum lugar.Suspeito que seja pelo sinal
SIGWINCH
- provavelmente entregue no cano.Da wikipedia :
Se eu fizer um (in
zsh
):... e eu modifico o tamanho do terminal:
fonte
RFC 4254 Seção 6.9 O nome da mensagem "window-change" é enviado com as novas dimensões. No lado do cliente, pode ser verdade que o SIGWINCH original foi capturado, mas é enviado por essa mensagem, acredito. https://www.ietf.org/rfc/rfc4254.txt
fonte