Appearance
网络软件与CS架构.md
元信息
- 目标:通过 TightVNC 双机实操建立网络软件的体感——至少两个进程跨机器协作;由此理解 C/S 架构中服务器(被动、长驻)与客户机(主动、有界面)的角色分工,及 P2P 对等架构
- 关键概念:网络软件、C/S架构、服务器、客户机、守护进程(daemon)、windows服务、P2P、绿色软件
- 关联阶段:cp1
- 常见误区:把单个 exe 当成完整网络软件(tvnserver/tvnviewer 必须跨机配合才有意义);以为服务器一定"更强"(区分的是角色:被动提供方 vs 主动消费方);以为 QQ/微信是纯 P2P(消息中转是中心化的 C/S,思考题的典型陷阱)
示例软件
TightVNC是一个桌面软件、是一个网络软件,它的功能是允许用户将本机的电脑屏幕或桌面共享给另一台机器。
此处使用绿色版本进行演示,因其无需安装即可立即使用,故称之为 green software 或 portable software
安装
直接下载,并解压到本地,比如 D:\tools\TightVnc,可以看到该软件包含两个关键的可执行exe文件
- tvnserver.exe 服务端软件
- tvnviewr.exe 客户端软件
这两个exe文件都是一个单机软件或桌面软件,但如果仅仅执行其中的一个,并不能发挥其功能
网络软件的使用前提
网络软件需要至少2个软件(进程或节点)进行相互配合才能正常运行,并且一般分布在2台机器之上。
准备两台电脑,并满足如下条件
- 两台电脑位于同一局域网或连接同一个wifi
- 获取各电脑的IP地址,可通过 设置->网络状态->属性 或 命令行中执行ipconfig 获取
- 在两台电脑上均安装有上面的tightVNC目录
tightVNC配置:服务端
电脑A:扮演服务器角色,即该电脑的屏幕将被共享,假设其IP:192.168.0.1
- 在该电脑上双击执行tvnserver.exe,出现防火墙提示,选择”允许访问“,即表示允许外部机器通过某个网络端品(vnc默认是5900)与tvncserver.exe进行连接,从而访问电脑A上的资源

- 允许后将出现配置窗口(server configuration)。如果未弹出,请在操作系统右下角的托盘区找到
图标,并点击激活,
- 确认复选“require VNC authentication”,并设置登录密码:
- primary password:主密码,以此密码登录的客户,可操控服务器桌面。也可以通过复选”block remote input events“ 来禁止客户的键鼠事件
- view-only password: 以此密码登录的客户,仅可浏览服务器的桌面

tightVNC配置:客户端
电脑B:扮演客户机角色,即由该电脑访问上述服务器机器的屏幕,假设其IP:192.168.0.10
在该电脑上双击执行tvnviewer.exe,弹出客户端配置窗口,填写欲连接的服务器IP地址(remote host) ,然后点击连接(connet),在弹出的密码提示框中,输入之前在服务端设置的密码,即可浏览甚至操控服务器的桌面了。

Client/Server架构
将组成网络软件的的各个节点,划分为客户机和服务器这两种不同角色,以简化网络节点之间的协作,称之为客户机/服务器架构,简称C/S架构。
- 服务器 server:作为资源提供方,通常以被动方式(passive)运行;并且作为linux守护进程(daemon)或windows服务(service)在系统中长驻运行;甚至无需要界面(采用配置文件和日志文件等)
- 客户机 client:作为资源的消费方,一般由用户驱动和主动发起请求;有丰富的人机界面

C/S架构广泛适用于中心化资源共享的场景,比如屏幕共享或远程桌面访问、数据库、Web网站等。一般由多个客户机 + 较少的服务器组成。
P2P(peer to peer)
特别地,接上例,如果在电脑A和B上,同时执行tvnviewr和tvnserver软件,即同时扮演服务器和客户机的角色,并且彼此互相访问和共享各自的屏幕。
这种情况下,可以称电脑A和B组成一个对等网(P2P),或P2P架构。
所谓对等,即平等的互享彼此的资源
在局域网中,使用上面的VNC软件很容易组成P2P网,但在互联网上,由于IP地址及电信服务商的限制,就不那么容易了
思考题
即时通讯软件如QQ、微信等,采用的是C/S架构?还是P2P架构?
windows service
services.msc
