Протокол Telnet, описанный в RFC 854 , включает в себя способ для отправки команд в полосе, состоящий из характера IAC , '\255'
с последующим еще несколько байт. Эти команды могут выполнять такие действия, как отправка прерывания на удаленный компьютер, но обычно они используются для отправки параметров. .
Подробный обзор обмена, который отправляет параметр типа терминала, можно найти в Microsoft Q231866. .
Опция размера окна описана в RFC 1073 . Клиент сначала отправляет свою готовность отправить NAWS
опцию. Если сервер отвечает DO NAWS
, клиент может затем отправить NAWS
данные опции, которые состоят из двух 16-битных значений.
Пример сеанса на терминале с 47 строками и 80 столбцами:
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)
Протокол ssh описан в RFC 4254 . Он состоит из потока сообщений. Одним из таких сообщений является "pty-req"
запрос псевдотерминала, а его параметры включают в себя высоту и ширину терминала.
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
Клиенты telnet и ssh поймают SIGWINCH
сигнал, поэтому, если вы измените размер окна терминала во время сеанса, они отправят соответствующее сообщение на сервер с новым размером. Ssh отправляет сообщение об изменении размера окна:
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
? Я не могу найти пример этого нигде.Я подозреваю, что это через сигнал
SIGWINCH
- вероятно, доставлен по трубе.Из википедии :
Если я сделаю (в
zsh
):... и я изменяю размер терминала:
источник
RFC 4254 Раздел 6.9 Имя сообщения «изменение окна» отправляется с новыми размерами. На стороне клиента это может быть правдой, что оригинальный SIGWINCH перехватывается, но он отправляется через то сообщение, которое я считаю. https://www.ietf.org/rfc/rfc4254.txt
источник