一文带你彻底理解Linux的各种终端类型及概念( 二 )


 
但是好景不长 。
合久必分 。
一切似乎又回到了大型机时代 。在大型机时代 , 一台机器是拥有多个终端的 , 那是五十年以前 。今天 , 我们拥有了各种各样的小型设备 , 智能手机 , 平板电脑 , 智能手表….然而这些东西 , 其实仅仅只是一系列的终端而已!那么既然这些东西都成了终端 , 真正的计算机在哪儿?当然在各大机房(也是类似车间大小的那种房间)里了 , 只是现在不叫大型机了 , 而叫做云端 , 这种技术叫做云计算(似乎有点炒作概念的意思) 。如果你不信你花了几千上万块的钱买来的设备仅仅是一个完成输入输出功能的终端 , 那么请断网试试 , 看看你的iphone是不是变砖头了 。可见 , 昂贵的是云提供的计算服务 , 而不是终端设备本身 , 我们把所谓的云看作是一台计算机 , 这幅图景是不是跟五十年前的非常像呢?

一文带你彻底理解Linux的各种终端类型及概念

文章插图
 
你有多久没有打开过家里的PC了 , 是不是很久了 , 但是日子也还过得去 。但是你能忍受哪怕几个小时不登录微信吗?某种意义上 , 成为新的终端的不是这些个硬件设备 , 而是基于云计算技术的现代互联网服务的各类App 。

是不是又要分久必合了呢?早就有迹象了 , 从用QQ号可以登录微信 , 微博 , 内推网的时候就有迹象了 。
一文带你彻底理解Linux的各种终端类型及概念

文章插图
 
好了 , 扯了这么多关于终端的发展 , 其实根本上也就一句话 , 能接受输入 , 能显示输出 , 就这就够了 , 不管到了什么时代 , 终端始终扮演着人机接口的角色 , 所谓Terminal , 即机器的边缘!
只要能提供给计算机输入和输出功能 , 它就是终端 , 而与其所在的位置无关 。我可以用ls命令列举五千公里以外的一台计算机上某个目录下的文件并且显示在我眼前的屏幕上 , 至于我的输入如何到达五千公里以外 , 这并不是我要关注的 , 也不是计算机要关注的 , 这显然只是一个通信方式问题 。那么使用TCP/IP网络进行这类通信传输就是再显然不过的了 。
这就是SSH使用的方法 。我们知道 , SSH是一个TCP/IP协议族的协议 , 而其上跑的却是一个远程登录后的终端流 , 这显然只是用TCP/IP构建了一条隧道 , 然后终端流通行于该隧道 。除此之外 , 更简单的Telnet也不例外 , 也是通过一个TCP/IP隧道来封装承载远程登录的终端流 。除却TCP/IP , 如果我们执意使用卡车来运载我们的输入和输出 , 也完全是合适的 , TCP/IP也好 , 卡车也好 , 它们只是通信手段 , 它们并非终端本身 。
一文带你彻底理解Linux的各种终端类型及概念

文章插图
 
我们现在可以想象一下终端存在的形式都会有哪些 。
  • 本地终端
  • 用VGA连接主机和显示器 , 用PS/2或者USB连接主机和键盘 , 这样的一个显示器/键盘组合就是一个本地终端 。
  • 用串口连接的远程终端
  • 通过串口线把主机接到另外一个有显示器和键盘的主机 , 通过运行一个终端模拟程序 , 比如“windows超级终端”来将这台主机的显示器和键盘借给串口对端的主机 。
  • 用TCP/IP承载的远程终端
  • 类似Telnet , SSH这般 。
大致就先说这几类吧 。可见上述的三类中 , 前两类都是在本地就直接关联了物理设备的 , 比如VGA口啊 , PS/2口啊 , 串口啊之类的 , 这种终端叫做物理终端 , 而第三类在本地则没有关联任何物理设备 , 注意 , 不要把物理网卡当成终端关联的物理设备 , 它只是隧道关联的物理设备 , 这里的物理网卡完全可以换成卡车 , 它们与终端并不直接相关 , 所以这类不直接关联物理设备的终端叫做伪终端 。
既然知道了这些终端到底是怎么回事 , 理解余下来的那些术语就不在话下了 。这些术语的存在并非是为了故意增加复杂性 , 而是因为工程上的东西必须要有可操作性 , 要可操作就必须至少有个名字来称呼 , 仅此而已 。这跟我们中国的传统道 , 可道非常道;名 , 可名非常名是完全不同的 。可谓现代数学 , 既要有名又要有道 , 而现代工程 , 则必须舍道而取名 。


推荐阅读