? ? ? ? 虛擬終端或串口終端的數目是有限的,虛擬終端(字符控制終端)一般就是/dev/tty1~/dev/tty6六個,串口終端的數目也不超過串口的數目。然而網絡終端或圖形終端窗口的數目卻是不受限制的,這是通過偽終端(Pseudo TTY)實現的。一套偽終端由一個主設備(PTY Master)和一個從設備(PTY Slave)組成。主設備在概念上相當于鍵盤和顯示器,只不過它不是真正的硬件而是一個內核模塊,操作它的也不是用戶而是另外一個進程。從設備和上面介紹的/dev/tty1這樣的終端設備模塊類似,只不過它的底層驅動程序不是訪問硬件而是訪問主設備。網絡終端或圖形終端窗口的Shell進程以及它啟動的其它進程都會認為自己的控制終端是偽終端從設備,例如/dev/pts/0、/dev/pts/1等。下面以telnet為例說明網絡登錄和使用偽終端的過程。
TCP/IP協議棧:在數據包上添加報頭。
如果telnet客戶端和服務器之間的網絡延遲較大,我們會觀察到按下一個鍵之后要過幾秒鐘才能回顯到屏幕上。這說明我們每按一個鍵telnet客戶端都會立刻把該字符發送給服務器,然后這個字符經過偽終端主設備和從設備之后被Shell進程讀取,同時回顯到偽終端從設備,回顯的字符再經過偽終端主設備、telnetd服務器和網絡發回給telnet客戶端,顯示給用戶看。也許你會覺得吃驚,但真的是這樣:每按一個鍵都要在網絡上走個來回!