翻了很多的资料,对于x的说明各有不同,有的说是协议,有的说是进程,有的说是基于c/s模型。我可能理解上偏于c/s模型。理解的对错在不影响使用的情况下,暂且把一些经验写一下,万一哪一天顿悟了,好知道是哪个细节错了。
      我把X的桌面环境分两部分两说明:一部分是Xserver,一部分是Xclient.这样既有特殊性又有一般性。
       Xserver,这个server很好玩如果你装了xorg的话,它就会蹲在系统端口那看,有没有Xclient连接到端口,如果没有就一直等着,有点像守株待兔的感觉。那么端口我们只从应用的角度看,Xserver就好比是一张画纸,空空的什么都没有。那么画板就是你的linux系统,那么这张空空的画纸是不是在等待,Xclient即画笔上来描绘图案呢。
       好了这样一比喻完,Xserver其实就是一张画纸,那你可能会问画纸可以有很多张对吧。没错确实有很多。每张对应这一个端口从6000开始,第二张就是6001.
我们开启启动用系统级五进入是不是就一个华丽丽的gnome。这个就是一张Xserver的画纸,加上gnome-seesion 和matecity窗口管理器。这两个Xclient。默认情况下,这个端口号是不对外开放的因为不安全。(但是如果需要用VNC的时候实现桌面的共享这个端口需要开放,如果你不开我们怎么看到你的桌面呀。)那我们再来开一个Xserver
[root@studnet20 ~]# X :1.0 //这个将占用一个终端。
[root@studnet20 ~]# echo $DISPLAY /server是从0开始计数的,小数点后面的就不懂有啥具体用处了。
:0.0
[root@studnet20 ~]# export DISPLAY=:1.0 //把server换成1.0,在第二张画纸上。然后之后的gui程序全都在我们开好的1.0的这个server运行!
[root@studnet20 ~]# echo $DISPLAY
1.0
这个时候你运行,周面会没有任何反应,因为这个hello.txt在另个server上运行了用ctrl +alt+F7切换过去,看看是不是有了,一个最原始的界面。
[root@studnet20 ~]#gedit hello.txt

这样的话,你可以慢慢的把gnome这个集成度很高的Xclient打到那里。再打一个matecity。那样的话你就有两个桌面咯。嘿嘿。
   切记:一个X的桌面环境至少要包含桌面管理器,和窗口管理器。
  
Xclient说明:
    Xlient就是Xserver一直等待的东西。Xclient一般指的是那些带有GUI界面的程序。这个就有很多了哦。比较大型的就是像Gnome,KDE这样集成度很高的。


下面来说说vnc这个Xvnc。VNC就是远程虚拟连接,连接远程主机的桌面。原理就是基于Xserver与Xclient
     VNCserver 相当于Xserver ,VNCclient 相当于Xclient.
在服务器端起一个VNCservser 端口是从5900开始的,但是有的时候5900会被某些进程像KVM,或者是vino-server 占用。相应的会生成一个对应的600X的端口。例如:
[root@studnet20 ~]# vncserver :3 //开启第三个Xvnc

New 'studnet20.redhat.com:3 (root)' desktop is studnet20.redhat.com:3

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/studnet20.redhat.com:3.log

[root@studnet20 ~]# netstat -lntp | grep vnc
tcp        0      0 0.0.0.0:5903                0.0.0.0:*                   LISTEN      4017/Xvnc          
tcp        0      0 0.0.0.0:6003                0.0.0.0:*                   LISTEN      4017/Xvnc          
tcp        0      0 :::6003                     :::*                        LISTEN      4017/Xvnc          
占用了两个端口。那么Xvncserver就猫在5903上等Xvncclient连上来。
    我们刚刚有做过一件事:export DISPLAY=: (这个冒号有含义,代表套接字) 所以我们可以这样 export DISPLAY=192.168.0.110:3 ,只要远程主机开启了6003.其实vncclient 也是这样子的,只是连接的端口不一样而已人家连的是6003,而你是5903.
    那我们发现其实,每开一个VNC就要占用590X和600X两个端口,这个很有用。思路是这样:我们可以在一群的客户机上同时用vncclient登录到同一台,vncserver,服务主机的5903端口。但是看到的是单纯的桌面,没什么意义。但是如果5903这个端口是盯着运行级五的那张画纸看的话,那就有意义了:服务主机的操作可以完全在客户主机上呈现,特别是在办公会议,培训教学方面可以节省很多成本。
      以上是我这两个月来的一些成果,实验最后成功了。原理大致上上面所书,希望能得到大家的建议,批评指导,谢谢。