linux終端閑談

來源:互聯網
上載者:User

為何向ssh之類的終端裝置檔案必須成對出現,而諸如tty或者串口或者slip之類的終端只有一個裝置檔案即可,這不得不從終端的本質說起,其實像串口或者s符合lip規程之類終端和tty/console終端本質是一樣的,只不過tty的裝置線路是用pci,agp之類的匯流排串連,其終端裝置就是鍵盤,顯示器/印表機之類的,而串口串連的終端是通過諸如RS232之類的介面串連的,這類終端只是延長了鍵盤,顯示器而已,後來的X window的設計思想也是利用了這個思想,只不過終端完全進化成了一個圖形伺服器,以前的終端只能顯示字元,輸入字元,X終端卻可以畫圖,顯示不同映像以及任意操作這些圖形等等,從終端的思想理解X系統就會明白為何xterm是X用戶端而不是伺服器了,不過這是後話,此文不談。
     現在考慮ssh使用的偽終端,如果你徹底理解openvpn的工作原理,那麼理解ssh偽終端就簡單多了,這類終端使用ssh協議進行和主機通訊,而ssh是一個應用程式層協議,因此就必須對登入ssh終端的使用者屏蔽掉“資料到達應用程式層”這個資訊,而使它們感到資料是直接由裝置驅動產生的,也就是說讓遠程使用ssh串連到linux主機的使用者敲擊鍵盤時感到好像在linux主機敲擊鍵盤是一樣的,而不是讓他們感到鍵資訊先到達linux主機的應用程式層sshd守護進程,然後再“通過某種方式”“類比”出“好像在linux主機敲擊鍵盤”這件事,比如可以通過往input裝置中寫鍵資訊。總之,資料到達sshd之後必須通過某種方式再次進入核心,然後再從核心返回到使用者空間特定的應用。反過來理解,如果在/dev/ttyn終端上,當往/dev/ttyn寫入一個字元時,該字元直接進入核心,然後通過驅動的協助傳輸到系統匯流排或者從串口出去,最終到達輸出裝置,而是用ssh偽終端的話,一旦往/dev/pts/n寫入一個資料,邏輯上資料可以直接到達遠端主機,比如windows主機的SecureCRT視窗中,可是實際上資料需要到達核心後然後返回使用者空間的sshd,然後通過通訊端將資料發送到遠程主機的顯示視窗中,這就需要在核心和sshd之間建立一條通道,字元裝置是可以的,正如openvpn那樣。因此ssh本質上也是建立了一條“虛擬物理通道”資料發往sshd的那一刻起就相當於進入了物理通道,比如串連遠端RS232介面或者原生agp匯流排,該物理通道是由ssh協議來實現的。最終的通道上匝道是通過成對的終端實現的,而此成對的終端其實就是一對管道,從一端寫入資料可以從另一端讀出,bash將資料從/dev/pts/n寫入,然後sshd從/dev/ptmx被讀出,反之亦然。
     在openvpn中,虛擬網卡和使用者空間的openvpn進程之間通過一個字元裝置建立了一個通道的上下匝道,而ssh則是通過一對實質上是管道的終端來建立通道上匝道的,注意,ssh終端沒有下匝道,因為資料到達windows機器或者其它機器後就直接被回顯了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.