假如客戶不支持行方式,那么較新的服務器支持行方式選項,它也將轉入準行方式(Kludgelinemode)。我們同時指出所有的客戶進程和服務器進程都支持準行方式,但它不是默認方式,必須由客戶進程或用戶特地激活它。讓我們來看看如何用Telnet選項激活準行方式。
首先介紹當客戶進程不支持行方式時,BSD/386服務器進程如何協商進入該方式。
1)當客戶進程不同意服務器進程激活行方式的請求時,服務器進程發送DOTIMINGMARK選項。RFC860[Postel和Reynolds1983f]定義了這個Telnet選項。它的作用是讓收發雙方同步,關于這個問題將在本節的后面講到用戶鍵入中斷鍵時討論。該選項只是用來判定客戶進程是否支持準行方式。
2)客戶響應WILLTIMINGMARK,表明支持準行方式。
3)服務器發送WONTSUPPRESSGOAHEAD和WONTECHO選項,告訴客戶它希望禁止這兩個選項。我們在前面已經強調:單個字符方式下是假定SUPPRESSGOAHEAD和ECHO選項同時有效的,所以禁止兩個選項就進入了準行方式。
4)客戶響應DONTSUPPRESSGOAHEAD和DONTECHO命令。5)服務器發送login:提示符,然后用戶鍵入用戶名。用戶名是以整行的方式發送給服務器,回顯由客戶進程在本地處理。
6)服務器發送PassWord:提示符和WILLECHO命令。這將使客戶進程的回顯失效,因為此時客戶進程認為服務器進程將處理回顯工作,所以用戶鍵入的口令就不回顯到屏幕上??蛻繇憫狣OECHO命令。
7)我們鍵入口令??蛻粢哉蟹绞桨l送到服務器。
8)服務器發送WONTECHO命令,使得客戶重新激活回顯功能,客戶響應DONTECHO。
從此以后的普通命令處理過程就和行方式相似了。客戶進程負責所有的編輯和回顯,并以整行的方式發送給服務器進程。在圖26-11中,我們已經強調:所有標注為“char”的記錄都支持準行方式,只不過默認是單個字符方式罷了。假如要客戶進入行方式,我們就能很輕易看到選項協商的過程:客戶是sun,服務器是svr4鍵入Control院Telnet客戶進程通信(無回顯)檢驗現在是否在一次一字符方式下注重選項協商過程切換到準行方式客戶發送這兩個選項服務器把WONT做為上述兩個選項協商的響應這將使Telnet會話進入準行方式,此時SUPPRESSGOAHEAD和ECHO選項都是失效的。


假如在服務器端運行如vi編輯器這樣的應用程序,同樣會有行方式下碰到的問題。當要運行這樣的應用程序時,服務器進程必須告訴客戶進程從準行方式切換到單字符方式。當應用程序結束時,必須告訴客戶進程返回到準行方式。下面是這個過程需要用到的技術要點。
1)當應用程序改變其偽終端方式并通知服務器進程時,服務器進程將進入單字符方式。服務器進程向客戶進程發送WILLSUPPRESSGOAHEAD和WILLECHO,這將使客戶進程進入單字符方式。
2)客戶進程回送DOSUPPRESSGOAHEAD和WILLECHO。
3)應用程序開始在服務器端運行。
4)當應用程序結束并改變其偽終端方式時,服務器進程發送WONTSUPPRESSGOAHEAD和WONTECHO命令,使得客戶進程返回準行方式。
5)客戶進程回送DONTSUPPRESSGOAHEAD和DONTECHO命令,告訴服務器進程它已經回到了準行方式。
下圖概括了單個字符方式及準行方式中不同的SUPPRESSGOAHEAD和ECHO選項設置。
方式SUPPRESS GO AHEAD E C H O 舉例一次一字符√ √ 準行方式下的v i編輯器準行方式× × 正常命令準行方式× √ 鍵入我們的口令
新聞熱點
疑難解答