1.命令名稱和選項代碼
名稱=NAWS(NegotiateAboutWindowSize)協商窗口的尺寸
代碼=31
2.命令含義
IACWILLNAWS
由Telnet客戶端發送來建議使用NAWS.
IACWON'TNAWS
由Telnet客戶端發送來拒絕使用NAWS.
IACDONAWS
由Telnet服務器端發送來建議使用NAWS.
IACDON'TNAWS
由Telnet服務器端發送來拒絕使用NAWS.
IACSBNAWS<16-bitvalue><16-bitvalue>IACSE
由Telnet客戶端發送,通知Telnet服務器端這個窗口的寬度和高度。窗口尺寸信息從Telnet客戶端到Telnet服務器端通過這個選項來傳遞。此信息是參考性的。服務器可能接受這個選項,但是并不使用傳遞的信息。
客戶端和服務器端使用標準的TelnetWILL/DO/DON'T/WON'T機制來協商發送窗口尺寸信息。假如客戶端和服務器端都同意,客戶端可以發送一個子協商用來傳遞窗口的尺寸。假如以后客戶端的窗口尺寸改變了(例如,窗口尺寸被用戶改變),客戶端可能再次發送這個子協商。因為在某些操作系統上,服務器正在執行的時候可能不答應更新窗口尺寸信息,所以服務器可能在接受最初的窗口尺寸后發送一個DON'TNAWS給客戶端以阻止更多的子協商。一個協商循環將不會形成下面這些規則。
子協商包含兩個值,用字符表示的窗口的寬度值和高度值。這兩個值中的每一個值都是以兩個字節為一組以標準的Internet字節和比特順序發送的。這就答應窗口的寬度或高度的最大值是65535個字符。對于寬度或高度來說,接受一個等于零的值就意味著沒有字符寬度或高度被發送。既然如此,Telnet服務器將假定寬度或高度是與操作系統相關的(它將有可能是基于終端類型信息的,這個終端類型信息是使用TERMINALTYPE的Telnet選項來發送的)。
子協商的語法是
IACSBNAWSWIDTH[1]WIDTH[0]HEIGHT[1]HEIGHT[0]IACSE
象Telnet協議所要求的那樣,在子協商中任何出現255的地方都必須顯示兩次。為了和IAC(它有一個255的值)字符區別。
3.默認的規范
WON'TNAWS
DON'TNAWS
這個選項不假定任何默認的窗口尺寸信息。通常由TERMINALTYPETelnet選項傳遞的終端類型可能暗示著一個窗口尺寸,但是對于這個選項,那是不必要的。
4.動機
隨著窗口系統的日益流行,Telnet客戶端總是運行在一個可變尺寸的窗口中。Telnet服務器為了正確控制光標,需要知道窗口的尺寸。窗口可能在Telnet的會話過程中改變尺寸,更新的窗口尺寸需要傳送給服務器。本備忘錄就確定了一個從客戶端到服務器發送用字符表示的窗口高度和寬度的選項。
Telnet選項:協商輸出行寬(NAOL)和協商輸出頁尺寸(NAOP)在語義上并不是很恰當,他們不是公用的[見RFC-1011"正式Internet協議",和"防衛協議手冊"]。NAOL和NAOP選項是雙向的(也就是說服務器可以控制客戶端的行寬或者頁尺寸),在每一軸中限制253個字符。
這個選項是正常窗口協商過程的一個較好的模型。客戶端完全控制它的窗口尺寸,只是簡單地告訴服務器當前的窗口是多大。而且,253個字符的高度和寬度的限制非常低,所以,新的選項具有65535字符的限制。最后,這個選項同時發送窗口的高度和寬度,因為窗口高度和寬度通常都是同時改變的。許多操作系統和窗口應用程序更可能認為窗口的高度和寬度是同時改變的。
5.描述和實現的注釋
這個選項的典型用戶可能是運行在XWindow下的Telnet客戶端。在用戶調整了客戶端窗口的尺寸后,一定會和Telnet客戶端通信。在4.3BSDUnix中,信號SIGWINCH(窗口改變)可能被Telnet客戶端捕捉并且一個新的NAWS子協商會被發送到服務器端。在接收到NAWS子協商后,服務器可能作出適當地ioctl來處理這個新的消息,然后發出SIGWINCH信號給它的子進程,可能是一個shell。
6.例子
在下列的例子中,數據流中的所有數字都是十進制。
1).服務器建議,客戶端同意使用NAWS
(服務器發送)IACDONAWS
(客戶端發送)IACWILLNAWS
(客戶端發送)IACSBNAWS080024IACSE
[窗口80字符寬,24字符高]
[某個時刻用戶改變了窗口尺寸]
(客戶端發送)IACSBNAWS080064IACSE
[窗口80字符寬,64字符高]
所有的數字形式
(服務器發送)25525331
(客戶端發送)25525331
(客戶端發送)25525031080024255240
(客戶端發送)25525031080064255240
2).客戶端建議,服務器同意使用NAWS
(客戶端發送)IACWILLNAWS
(服務器發送)IACDONAWS
(客戶端發送)IACSBNAWS144024IACSE
[窗口300字符寬,24字符高]
3).客戶端建議,服務器拒絕使用NAWS
(客戶端發送)IACWILLNAWS
(服務器發送)IACDON'TNAWS
4).服務器建議,客戶端拒絕使用NAWS
(服務器發送)IACDONAWS
(客戶端發送)IACWON'TNAWS
7.致謝
一個基于Xwindow系統的這個選項的更加具體的版本已經由GlennMarcy和作者本人在Carnegie-Mellon大學實現。它在Carnegie-Mellon大學的計算機系被廣泛地使用。Marcy先生幫助撰寫了此備忘錄的早期版本,記錄了更多的選項。
新聞熱點
疑難解答