当前位置:首页 » 文件传输 » ftp分布式计算
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

ftp分布式计算

发布时间: 2023-01-04 12:21:22

㈠ 大数据所谓的分布式运算是指什么

分布式计算是一种计算方法,和集中式计算是相对的。分布式计算将该应用分解成许多小的部分,分配给多台计算机进行处理。这样可以节约整体计算时间,大大提高计算效率。

分布式计算可以分为以下几类:

传统的C/S模型。如HTTP/FTP/SMTP/POP/DBMS等服务器。客户端向服务器发送请求,服务器处理请求,并把结果返回给客户端。客户端处于主动,服务器处于被动。

集群技术。一种称集群的技术出现了,它把多台服务器连接起来,当成一台服务器来用。这种技术的好处就是,不但对客户来说是透明的,对服务器软件来说也是透明的,软件不用做任何修改就可以在集群上运行。

通用型分布式计算环境。如CORBA/DCOM/ RMI/ DBUS等,这些技术(规范)差不多都有具有网络透明性,被调用的方法可能在另外一个进程中,也可能在另外一台机器上。调用者基本上不用关心是本地调用还是远程调用。

㈡ 如何将自己的电脑设置成FTP服务器

  1. 打开 "控制面板",选择"程序" -> "打开或关闭Windows资源",在弹出的窗体里找到 “Internet信息服务”,展开后选择“Ftp服务器",然后点击"确定",此时Windows开始更新功能资源列表。

  2. 更新完成后,进入"控制面板" -> "系统和安全" -> "管理工具" ,双击 "Internet 信息服务(IIS)管理器"。

  3. 在弹出的窗体中右键点击计算机名称,选择添加FTP站点。在弹出的对话框中输入Ftp站点的名称(例如"myFtp"),物理路径(例如"d:myFtp"),点击 "下一步".

  4. 在"IP地址"框中输入本机的IP地址(例如我的本机IP地址为192.168.1.100),然后点"下一步",勾选允许所有用户访问,执行读和写的操作权限。最后点击完成。

  5. 设置防火墙,以便其它用户通过局域网中其它计算机访问本计算机中的Ftp资源。进入"控制面板" -> "系统和安全" - > "允许程序通过防火墙" -> 钩上FTP及后面两个框选上。

  6. 在IE地址栏中输入"ftp :// 192.168.1.100 "(这个地址根据个人电脑实际情况是不同的),在弹出的身份认证对话框中输入用户名和密码,点击登陆即可访问ftp资源。

FTP是文件传输协议使得主机间可以共享文件。 FTP 使用TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输。控制连接使用类似TELNET协议在主机间交换命令和消息。文件传输协议是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录。

FTP独立权限设置:权限设置需要分两部分来进行,即对FTP服务器主目录的权限设置和对各个用户文件夹的权限设置。假设FTP服务器的主目录路径为“F:/FTP”,先取消“FTP”组的用户对“FTP”文件夹的“写入 ”权限。右击“FTP”文件夹,执行“属性”命令。在打开的“FTP 属性”对话框中切换至“安全”选项卡下,然后依次单击“添加”→“高级”→“立即查找”按钮,单击选中“FTP”组并依次单击“确定”按钮回到“FTP 属性”对话框。接着在“FTP的权限”列表框中勾选“拒绝写入”复选框。为了使“拒绝写入”权限仅对“FTP”文件夹有效,还需要单击“高级”按钮,在“FTP的高级安全设置”对话框中双击“权限列表”中的“拒绝FTP写入”选项,打开“FTP的权限设置”对话框。在“应用到”下拉列表中选中“只有该文件夹”选项,连续单击“确定”按钮完成设置。

接着为每个用户创建独立的文件夹(以用户名命名),并针对每个文件夹赋予相应用户适当的权限。以文件夹“xxxx”为例,在“xxxx属性”对话框的“安全”选项卡下将用户“xpzx”添加进来,并赋予其读取和写入的权限。同理,对于其他文件夹,也只赋予相应用户读取和写入的权限。

需权限保护的文件夹必须在NTFS分区中创建,FAT32分区内的资源无法设置权限。

至此,设置工作就全部结束了。在任意一台机器上以用户“xxxx”的身份登录FTP服务器,你会发现该用户只能在“xxxx”文件夹中任意读写,而无法看到主目录和其他用户目录的内容。

㈢ 何谓计算机网络的体系结构与网络协议

计算机协议及体系结构网络协议与层次结构

1.2.1网络体系结构

1.网络协议

通过通信信道和网络设备互联起来的不同地理位置的多个计算机系统,要使其能协同工作实现信息交换和资源共享,它们之间必须具有共同的语言。交流什么、怎样交流及何时交流,都必须遵循某种互相都能接受的规则。

网络协议(Protocol)是为进行计算机网络中的数据交换而建立的规则、标准或约定的集

合。准确地说,它是对同等实体之间通信而制定的有关规则和约定的集合;

网络协议的三个要素: 、

l)语义(Semarlties)涉及用于协调与差错处理的控制信息。

2)语法(Syntax)涉及数据及控制信息的格式、编码及信号电平等。

3)定时(Timing)涉及速度匹配和定序等。

2.网络的体系结构及其划分所遵循的原则计算机网络系统是一个十分复杂的系统。将一个复杂系统分解为若干个容

易处理的子系统。分层就是系统分解的最好方法之一。

在图1-4所示的一般分层结构中,n层是n-l层的用户,又是n+l层的服务提供者。n+1层虽然只直接使用了n层提供的服务,实际上它通过n层还间接地使用了n-1层以及以下所有各层的服务。、

层次结构的好处在于使每一层实现一种相对独立的功能。分层结构还有利于交流、理解和标准化。

所谓网络的层次模型就是计算机网络各层次及其协议的 集合。层次结构一般以垂直分层模型来表示, 层次结构的要点:

1)除了在物理媒体上进行的是实通信之外,其余各 对等实体间进行的都是虚通信。

2)对等层的虚通信必须遵循该层的协议。

3)n层的虚通信是通过n/n-l层间接口处n-l层提供的服务以及n-1层的通信(通常也

是虚通信)来实现的。

1.2.2网络体系结构

网络体系结构最常用的分为两种:

OSI七层结构和TCP/IP(TramferControlProtocol/InternetProtocol,传输控制协议/网际协议)四层结构。TCP/IP协议是Internet的核心协议。

1.OSI/RM基本参考模型

开放系统互联(OpenSystemIntercomectim)基本参考模型是由国际标准化组织(ISO)

制定的标准化开放式计算机网络层次结构模型,又称ISO/OSI参考模型。"开放"这个词表示能使任何两个遵守参考模型和有关标准的系统可以进行互联。

OSI/RM包括了体系结构、服务定义和协议规范三级抽象。OSI的体系结构定义了一个七层模型,用以进行进程间的通信,并作为一个框架来协调各层标准的制定gOSI的服务定义描述了各层所提供的服务,以及层与层之间的抽象接口和交互用的服务原语:OSI各层的协议规范,精确地定义了应当发送何种控制信息及何种过程来解释该控制信息。

OSI/RM的七层参考模型结构包括:从下至上分别为物理层、数据链路层、网络层、传输层,

会话层、表示层和应用层。

2.Internet层次模型

Internet网络结构以TCP/IP协议层次模型为核心,

共分四层结构:应用层、传输层、网际层和网络接口层。TCP/IP的体系结构与ISO的OSI七层参考模型的对应关系如图1-6所示。TCP/IP是Internet的核心,利用TCP/IP协议可以方便地实现各种网络的平滑、无缝连接。在TCP/IP四层模型中,作为最高层的应用层相当于OSI的5~7层,该层中包括了所有的高层协议,如常见的文件传输协议FTP(文件传输协议)、电子邮件SMTP,(简单邮件传送协议)、域名系统DNS(域名服务)、网络管理协议SNMP、访问WWW的超文本传输协议HTTP、远程终端访问协议TELNET等。

TCP/IP的次高层为传输层,相当于OSI的传输层,该层负责在源主机和目的主机之间提供端到端的数据传输服务。这一层上主要定义了两个协议:面向连接的传输控制协议TCP和无连接的用户数据报协议UDP(UserDatagramProtocol)。

TCP/IP的第二层相当于OSI的网络层,该层负责将报文(数据包)独立地从信源传送到信宿,主要解决路由选择、阻塞控制级网际互联问题。这一层上定义了网际协议(InternetProtocol,IP协议)、地址转换协议ARP(AddressResolutionProtocol)、反向地址转换协议RARP(ReverseARP)和网际控制报文协议ICMP()等协议。

TCP/IP的最低层为网络接口层,该层负责将IP分组封装成适合在物理网络上传输的帧格式并发送出去,或将从物理网络接收到的帧卸装并递交给高层。这一层与物理网络的具体实现有关,自身并无专用的协议。事实上,任何能传输IP报文的协议都可以运行。虽然该层一般不需要专门的TCP/IP协议,各物理网络可使用自己的数据链路层协议和物理层协议。

3.Internet主要协议

TCP/IP协议集的各层协议的总和亦称作协议枝。给出了TCP/IP协议集与OSI参

考模型的对应关系。其中每一层都有着多种协议。一般来说,TCP提供传输层服务,而IP提供网络层服务。

(l)TCP/IP的数据链路层

数据链路层不是TCP/IP协议的一部分,但它是TCP/IP与各种通信网之间的接口。这些通信网包括多种广域网和各种局域网。

一般情况下,各物理网络可以使用自己的数据链路层协议和物理层协议,不需要在数据链路层上设置专门的TCP/IP协议。但是,当使用串行线路连接主机与网络,或连接网络与网络时,例如用户使用电话线接入网络肘,则需要在数据链路层运行专门的SLIP(SerialLineIP)协议的PPP(PointtoPointProtocol)协议。

(2)TCP/IP网络层

网络层最重要的协议是IP,它将多个网络联成一个互联网,可以把高层的数据以多个数据报的形式通过互联网分发出去。

网络层的功能主要由IP来提供。除了提供端到端的报文分发功能外,IP还提供了很多扩充功能。例如:为了克服数据链路层对帧大小的限制,网络层提供了数据分块和重组功能,这使得很大的IP数据报能以较小的报文在网上传输。

网络层的另一个重要服务是在互相独立的局域网上建立互联网络,即网际网。网间的报文来往根据它的目的IP地址通过路由器传到另一网络。

IP的基本任务是通过互联网传送数据报,各个IP数据报之间是相互独立的。主机上的IP层向传输层提供服务。IP从源传输实体取得数据,通过它的数据链路层服务传给目的主机的IP层。IP不保证服务的可靠性,在主机资源不足的情况下,它可能丢弃某些数据报,同时IP也不检查被数据链路层丢弃的报文。

在传送时,高层协议将数据传给IP层,IP层再将数据封装为互联网数据报,并交给数据链路层协议通过局域网传送。若目的主机直接连在本局域网中,IP可直接通过网络将数据报传给

目的主机;若目的主机在其他网络中,则IP路由器传送数据报,而路由器则依次通过下一网络将数据报传送到目的主机或再下一个路由器。即IP数据报是通过互联网络逐步传递,直到终点 为止。

(3)TCP/IP传输层

TCP/IP在这一层提供了两个主要的协议:传输控制协议(TCP)和用户数据协议(UDP)。TCP提供的是一种可靠的数据流服务。当传送有差错数据,或网络故障,或网络负荷太

重不能正常工作时,就需要通过其他协议来保证通信的可靠。TCP就是这样的协议,它对应于OSI模型的传输层,它在IP协议的基础上,提供端到端的面向连接的可靠传输。

TCP采用"带重传的肯定确认"技术来实现传输的可靠性。简单的"带重传的肯定确认"是指与发送方通信的接收者,每接收一次数据,就送回一个确认报文J发送者对每个发出去的

报文都留一份记录,等到收到确认之后再发出下一报文。发送者发出报文时,启动计时器,若计时器计数完毕,确认还未到达,则发送者重新发送该报文。

TCP通信建立在面向连接的基础上,实现了一种"虚电路"的概念。双方通信之前,先建立一条连接,然后双方就可以在其上发送数据流。这种数据交换方式能提高效率,但事先建立连接和事后拆除连接需要开销。

4.TCP/IP协议族中的其他协议

TCP/IP是网络中使用的基本的通信协议,是一系列协议和服务的总集。虽然从名字上看

τCP/IP包括两个协议一一…传输控制协议(TCP)和网际协议(IP),但TCP/IP实际上是一组协议,包括了上百个各种功能的协议,如:远程登录、文件传输和电子邮件(PPP,ICMP,ARP/

RARP,UDP,FTP,HTTP,SMTP,SNMP,RIP,OSPF)等协议,而TCP协议和IP协议是保证数据完整传输的两个最基本的重要协议。通常说TCP/IP是指TCP/IP协议族,而不单单是TCP和IP。TCP/IP依靠TCP和IP这两个主要协议提供的服务,加上高层应用层的服务,共同实现了TCP/IP协议族的功能。

TCP/IP的最高层与OSI参考模型的上三层有较大区别,也没有非常明确的层次划分。其中FTP,TELNET,SMTP,DNS是几种广泛应用的协议,TCP/IP中还定义了许多别的高层协议。

(l)文件传输协议FTP

FTP(FileTransferProtocol):文件传输协议,允许用户将远程主机上的文件拷贝到自

己的计算机上。

文件传输协议是用于访问远程机器的专门协议,它使用户可以在本地机与远程机之间进行有关文件的操作。FTP工作时建立两条TCP连接,条用于传送文件,另一条用于传送控制。

FTP采用客户/服务器模式,它包含FTP客户端和FTP服务器。客户启动传送过程,而服 务器对其做出应答。客户FTP大多有交互式界面,使客户可以方便地上传或下载文件。

(2)远程终端访问TELNET

Telnet(RemoteLogin):提供远程登录功能,用户可以登录到远程的另一台计算机土,如同在远程主机上直接操作一样。

设备或终端进程交互的方讼,支持终端到终端的连接及进程到进程分布式计算的通信。

(3)域名服务DNS

DNS是一个域名服务的协议,提供域名到IP地址的转换,允许对域名资源进行分散管理。(4)简单邮件传送协议SMTP

SMTP(SimpleMailTransferProtocol,简单邮件传输协议),用于传输电子邮件。

互联网标准中的电子邮件是基于文件的协议,用于可靠、有效的数据传输。SMTP作为应用层的服务,并不关心它下面采用的是何种传输服务,它可通过网络在TCP连接上传送邮件, 或者简单地在同一机器的进程之间通过进程通信的通道来传送邮件。

邮件发送之前必须协商好发送者、接收者。SMTP服务进程同意为接收方发送邮件时,它将邮件直接交给接收方用户或将邮件经过若干段网络传输,直到邮件交给接收方用户。在邮件传输过程中,所经过的路由被记录下来。这样,当邮件不能正常传输时可按原路由找到发送者。

13网络互联基础

1.3.1IP地址

IP地址和域名是Internet使用的、符合TCP/IP协议规定的地址方案。这种地址方案与日常生活中涉及的电话号码和通信地址相似,涉及到Internet服务的每一环节。IP协议要求所有Internet的网络节点要有统一规定格式的地址,简称IP地址。IP地址是运行TCP/IP协议的唯一标识符。TCP/IP协议是上层协议,无论下层是何种拓扑结构的网络,均应统一在上层IP地址上。任何网络接入Internet,均应使用IP地址。

IP地址是唯一的、全球识别的InterIEt网络地址,采用32位二进制(即4字节)的格式。

在Internet上,每台计算机或网络设备都被分配一个IP地址,这个IP地址在整个InterIIet网络中是唯一的,保证了Internet成为全球开放互联的网络系统。

1.3.2IP地址的格式和分类

IP地址可表达为二进制格式和十进制格式。二进制的IP地址为32位,分为4个8位二进制数。为书写方便起见,常将每个字节作为一段并以十进制数来表示,每段间用"."分隔,每段取值为0~255,。例如:135.111.5.27(二进制格式:10000111.01101111.00000101.00011011)就是合怯的IP地址。

IP地址由网络标识和主机标识两部分组成。常用的IP地址有ATB,C三类,每类均规定

了网络标识和主机标识在32位中所占的位数。这三类IP地址的格式表示范围分别为:

A类地址:0.0.0.O~127.255.255.255

B类地址:128.0.0.O~191.255.255.255

C类地址:192.0.0.O~233.255.255.255

A类IP地址一般用于主机数多达160余万台的大型网络,前8位代表网络号,后3个8

位代表主机号。32位的最高位为Og十进制的第一组数值范围为000~127。IP地址范围为:001.x.y.z~126.x.y.z。

B类IP地址一般用于中等规模的各地区网管中心,前两个8位二进制代表网络号,后两个8位代表主机号。32位的最高两位为10;十进制的第一组数值范围为128~191。IP地址范围为:128.x.y.Z~191.x.y.z。

C类地址一般用于规模较小的本地网络,如校园网、企业网、政府机构网等。前三个8位代表网络号,最后8位代表主机号。32位的最高3位为110,十进制第一组数值范围为192~223。IP地址范围为:192.x.y.z~223.x.y.z。一个C类地址可连接256个主机。

A类地址一般分配给具有大量主机的网络使用,B类地址通常分配给规模中等的网络使用,C类地址通常分配给小型局域网使用。为了确保唯→性,IP地址由世界各大地区的权威机构InterNIC()管理和分配。

1.3.3子网的划分与掩码

在Internet中,如果每个物理网络就要占用一个网络号,是不够用的。另外,如果每个单位增添新的物理网络(例如新建楼房或新部门中新建的网络)就要向Internet的NIC申请新网络号,也太麻烦,并且不便于IP地址的分配管理。

,
在IP地址的某个网络标识中,可以包含大量的主机(如A类地址的主机标识域为24位,B类地址的主机标识域为16位),而在实际应用中不可能将这么多的主机连接到单一的网络中, 这将给网络寻址和管理带来不便。为解决这个问题,可以在网络中引入"子网"的概念。

注意:这里的子网与前面所说的通信子网是两个完全不同的概念。将主机标识域进一步划分为子网标识和子网主机标识,通过灵活定义子网标识域的位数,可以控制每个子网的规模。将一个大型网络划分为若干个既相对独立又相互联系的子网后,网络内部各子网便可独立寻址和管理,各子网间通过跨子网的路由器连接,这样也提高了网络的安全性。

利用子网掩码可以判断两台主机是否在同一子网中。子网掩码与IP地址一样也是32位二进制数,不同的是它的子网主机标识部分为全"。"。若两台主机的IP地址分别与它们的子网掩码相"与"后的结果相同,则说明这两台主机在同一网中。

1.子网划分

为使多个物理网络共用一个IP地址,可以采取把IP地址中主机号部分进一步划分为子网号和主机号两部分。例如:一个B类IP地址,可以把第三个字节作为子网号,第四个字节作为子网(物理网络)上主机号。

2.子网掩码

IP路由选择算法是根据IP数据报报头中目的地址的网络号,查找它的路由表,找到一个表项的目的网络号能与它匹配,然后用匹配上表项的中继IP地址作为发送该数据报到达目的主机的下一个路由器地址。IP数据报报头中目的地址的网络号是根据该地址最高位值来决定它是哪一类IP地址,网络号应占用多少位。

划分了子网后,就不能从地址的最高位值来判断网络号占用的位数了,用户可以自行决定子网号占用的位数。为了解决这个问题,必须使用子网掩码(mask)子网掩码是一个32位的数,其中取值为1的位,对应网络号或子&网号:取值为0的位,对应主机号。

㈣ 现在的云存储和ftp有什么区别都是文件传输协议啊!区别在于哪里

说白了就是云存储是把所有人的文件都放在一个ftp上,可以节省资源,统计数据等,相当于公共汽车,平常的FTP只保存你少数人的资源,相当于私家车

如下为网络
云存储是在云计算(cloud computing)概念上延伸和发展出来的一个新的概念,是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。 当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,那么云计算系统就转变成为一个云存储系统,所以云存储是一个以数据存储和管理为核心的云计算系统。

㈤ nfs ,ftp 和samba都有什么区别

NFS:Network File System 是已故的Sun公司制定的用于分布式访问的文件系统,它的本质是文件系统。主要在Unix系列操作系统上使用,基于TCP/IP协议层,可以将远程的计算机磁盘挂载到本地,像本地磁盘一样操作。

samba是Unix系统下实现的 Windows文件共享协议-CIFS,由于Windows共享是基于NetBios协议,是基于Ethernet的广播协议,在没有透明网桥的情况下(如VPN)是不能跨网段使用的。它主要用于unix和windows系统进行文件和打印机共享,也可以通过samba套件中的程序挂载到本地使用。

FTP的目的是在Internet上共享文件而发明的一种协议,基于TCP/IP。世界上绝大多数系统都会有支持FTP的工具存在,通用性很强。目前少有人把VPS修改成支持FTP组件的形式,主要是因为FTP一开始就不是为了文件系统而设计的。

三种协议虽然都可以支持文件共享,但是其功能点和侧重点上面各有所不同,协议格式不同。Authentication(鉴定)也就是你说的登陆方式也会随着协议的内容也有所不同。

标准的FTP协议的登陆密码是用明文传输的,没有加密,这会有很大的安全隐患,目前有FTPs(FTP on SSL/TLS)和sFTP(SSH FTP)等基于通信层进行加密的FTP协议,这样会有更好的安全性。

NFS的鉴定机制是基于IP地址的,没有密码这种东西。是控制本地映射的用户权限来控制访问者的权限。

samba和windows那个是基本一致的。不过我不太熟悉,就不妄言了

㈥ 怎么样在Redhat Linux 下配置FTP,Web,Mysql服务(要具体的,最好完整的)

1,Linux下架FTP!!

Linux下一般最常用的工具wu-ftpd.
wu-ftpd的安装非常容易,大多数版本的Linux中都包含了wu-ftpd的rpm软件包,你可以在安装Linux时指定装入。如果你想自行编译源代码,也可以到ftp://ftp.wu-ftpd.org下载最新版本的源代码包。
安装好以后,可以用ckconfig命令来检查是否已经正确安装。在/etc/passwd中可以指定ftp用户的登入目录。
wu-ftpd主要有以下6个配置文件:
ftpaccess(主要配置文件,控制存取权限)
ftpconvertions(配置文件压缩/解压缩转换)
ftpgroups(设定ftp自己定义的群组)
ftphosts(设定个别的用户权限)
ftpservers(设定不同IP/Domain Name以对应到不同的虚拟主机)
ftpusers(设定哪些帐号不能用ftp连线)
下面我们来一一介绍。
⒈/etc/ftpaccess(wu-ftpd的主要配置文件)
class--定义群组,用法如下:
class<种类>;<用户地址>;[<用户地址>;……]
由class定义的群组用户才可以连线进来,可以使用多层式的class来规范哪些群组的用户能够从哪些地方上来。这里有三个重要的种类,real、anonymous个guest。real如果没有列在定义中,那么这台机器中任何真实的一般用户都无法用自己的帐号连上来。anonymous如果没有在定义,就表示不让没有帐号的的人连上来。如果有定义guest,那么guest群组的人就可以上来。另外<用户地址>;是指ftp上来的用户会用到的IP地址,则可自行设定。以下是一些例子:
class all real,guest,anonymous *
定义了一个名为all的class,包含三种人,所有IP的连线用户(也就是所有人都包括了)
class local real localhost loopback
local这个class说,只有real的用户可以从本机机器连上来
class remote guest,anonymous *
remote这个class包含了从任何地方上来的guest和anonymous用户,但是real用户不算
class rmtuser real !*.example.com
rmtuser这个class包含了从外面来的(除了example.com)真实用户
autogroup--自动对应群组,用法如下:
autogroup[……]
当你定义好的那些同属于一个class的用户,一旦连线上来就会被对应到一个相应的群组下面,这样你就可以用Unix的文件权限对某一群人做限制。
deny--拒绝某些地址连线,用法如下:
deny<拒绝连线的地址>;<信息文件>;
禁止某些机器连线,并显示<信息文件>;。例如:
deny 210.62.146.*:255.255.255.254 /etc/reject.msg
guestgroup--设定访客群
guestuser--设定访客帐号
realgroup--设定真实群组
realuser--设定真实帐号
nice--设定给某些class多少优先权,用法如下:
nice
在Linux中,nice的值是-20(最优先)到19(最后处理),这里你可以指定负的值来提高某class的优先顺序。
defumask--设定某class的umask,用法如下:
defumask[]
umask是建立文件时该文件的的权限掩码
tcpwindow--设定tcpwindow的大小
keepalive--设定是否使用TCP SO_KEEPALIVE来控制断线情形
timeout--设定连线超时,用法如下:
timeout accept<秒>;
接受连线超时,预设120秒
timeout connect<秒>;
连线建立超时,预设120秒
timeout data<秒>;
数据传送超时,预设1200秒
timeout idle<秒>;
用户发呆超时,预设900秒
file-limit--限制某class只能传几个文件,用法如下:
file-limit[][]
对某个class限制存取文件的数目,包含了in(上传)、out(下载),total raw代表整个传输的结果,不光是数据文件。例如:
file-limit out 20 lvfour
限制lvfour这个class的用户最多只能下载20个文件
byte-limit--限制某class只能传几个字节,用法跟file-limit相似
limit-time--限制一个连线只能持续多久,用法如下:
limit-time{*|anonymous|guest}<分钟>;
为了避免有人挂在站上不下来,可以用这个方法限制用户的上线时间,例如:
limit-time guest 5
让guest帐号的用户只能用5分钟
limit--限制某class能同时几人上线,用法如下:
limit<连线数目>;<时间区段>;<额满信息文件>;
设定某个class在某一时间区段内最多能够几人同时上线,后面是当超过连线数目时要显示的信息。例如:
limit all 32 Any /home/ftp/etc/toomanyuser.msg
限制所有连线在任何时间只能有32个用户,超过则拒绝连线并显示信息
limit levellone 5 Any2300-0600 /home/ftp/etc/toomanyuser.msg
限制levellone这个class的用户在23:00到6:00这段时间内只能有5人连线
noretrieve--设定哪些文件不可下载
noretrieve[absolute/relative][class=]…[-][<文件名>;…]
absolute或relative指文件是用绝对路径还是相对路径
allow=retrieve--设定哪些文件可以下载
allow[absolute/relative][class=]…[-][<文件名>;…]
loginfails--设置登入错误可尝试的次数
当用户连线时可能打错ID或密码,这个设定可以让他打错几次以后就断线,避免有人用穷举法猜测密码。
private--设定线上是否可以执行SITE GROUP/SITE GPASS
当开放SITE GROUP与SITE GPASS指令时,可以用这两个指令切换到/etc/ftpgroup的群组。一般而言我们不会用到这个功能,以避免安全漏洞。
greeting--显示Server的版本信息,用法如下:
greeting
当用户登入画面显示的server信息,full是预设值,包含版本号以及hostname,brief只有hostname,而terse只有“FTP server ready”的信息。
barnner--设定未进入Login画面之前用户看到的信息,用法如下:
banner<文件路径>;
这里叙述了在用户登入时,在还没打ID/Password之前要出现的信息。文件路径指的是相对于真实的路径,而不是相对于ftp的根目录。
host--设定ftp主机名
email--指定ftp管理者的email地址
message--信息文件的设定,用法如下:
message<文件>;{<何时>;{……}}
这里的文件的路径是相对于ftp的根目录的,“何时”是指当你做了什么动作之后的反应,有几个选择:
login(登入时)
cwd=<目录>;(进入某目录时)
class 名称是前面已经定义过的,允许你的信息只对哪些人发出。
而信息文件的内容除了文字以外,还可以使用以下一些事先定义好的代号:
%T(本机时间)
%F(目前分区所剩余的空间)
%C(目前所在的目录)
%E(管理者的E-mail)
%R(客户端主机名称)
%L(本机主机名称)
%U(用户名称)
%M(与我相同class用户允许多少人连线)
%N(与我相同class用户目前有多少人连线)
%B(绝对磁盘限制大小,目前分区(单位blocks))
%b(preferred磁盘限制大小,目前分区(单位blocks))
%Q(目前已使用的blocks)
%I(最大可使用的inodes(+1))
%i(Preferred inodes限制)
%q(目前使用的indoes)
%H(超量使用磁盘空间的时间限制)
%h(超量使用文件数目的时间限制)
readme--通知用户哪些README文件已经更新
log commands--记录用户所使用过的命令,用法如下:
log commands<用户种类>;
log transfers--记录用户所传输的文件,用法如下:
log transfers<用户种类>;<传输方向>;
设定有哪些类型的用户传输文件需要记录,包含了inbound(用户上传)和outbound(用户下载),例如:
log transfers anonymous,guest inbound,outbound
log security--记录安全性,用法如下:
log security<用户种类>;
特别用于记录某类用户关于noretrive、notar等有关安全性的记录
log syslog--记录到系统的syslog文件
alias--设定目录别名,用法如下:
alias<别名字符串>;<目录>;
cdpath--设定cd更换目录搜索顺序
compress,tar--设定是否自动压缩,用法如下:
compress[……]
tar[……]
定义哪些人可以执行压缩以及tar
shutdown--通知用户要关站了
shutdown<信息文件>;
如果信息文件存在的话,当这个文件指定的某时间以后,就会拒绝连线并切断已有的连线,等时间一到就关机。这个信息文件的格式如下:
<年>;<月>;<日>;<时>;<分>;<拒绝倒数>;<断线倒数>;<文字>;
daemon address--指定只监听某个IP地址,用法如下:
daemon address
当你有许多IP的时候,使用这个选项将会取消其它任何虚拟FTP主机的设定。不设定的话,监听所有IP。
virtual--设定虚拟FTP站台
wu-ftpd提供了虚拟主机的功能,也就是说,在同一台机器上提供了不同FTP站台,以主机名称或IP来区分;当然你要用名称的话,还需要跟DNS配合才行。virtual有很多个设定:
virtual
<路径>;
可以是主机名或IP地址
root指的是ftp的根目录,banner是欢迎信息,logfile指的是这个虚拟站台的log文件
以下是一些例子:
virtual virtual.com.bj root /home/ftp2
virtual virtual.com.bj banner /etc/vftpbanner.2
virtual virtual.com.bj logfile /etc/viftplog.2
virtual
<字母>;
用户可以查到hostname跟管理者email,以下是一些例子:
virtual 210.62.146.50 hostname virtual.site.com.bj
virtual vritual.site.com.bj email [email protected]
virtual
allow<用户>;[<用户>;……]
virtual
deny<用户>;[<用户>;……]
很明显,以上两个选项是设定是否允许连线的,以下是一些例子:
virtual virtual.site.com.bj allow *
virtual virtual.site.com.bj deny badman
virtual
private
本虚拟站台拒绝anonymous用户
defaultserver deny <用户>;[<用户>;……]
defaultserver allow <用户>;[<用户>;……]
当我们使用了虚拟主机,原先的deny,allow设定不知道要设哪个server,所以会无效,用defaultserver代表原来的主机
defaultserver private
主站台拒绝anonymous用户
passive address--转换IP数值
passive address<外部IP>;/cidr
passive ports--passive的ports范围
passive ports
pasv-allow--允许使用pasv
pasv-allow[<地址>;……]
port-allow--允许使用port
port-allow[<地址>;……]
mailserver--指定Upload通知的mail服务器
incmail--指定anonymous upload的email通知地址
virtual incmail--指定虚拟主机anonymous upload的email通知地址
defaultserver incmail--指定预设主机anonymous upload的email通知地址
mailfrom--通知的寄信人upload
virtual mailfrom--虚拟主机upload通知的寄信人
defaultserver mailfrom--预设主机upload通知的寄信人
chmod--设定是否可以改变文件权限
delete--设定是否可以删除文件
overwrite--覆盖文件
rename--重命名文件
umask--允许设定umask
passwd-check--设定anonymous FTP的密码检查程度,用法如下:
passwd-check()
设定对anonymous ftp用户的密码是否检查,none表示不检查,trivial为包含@的任意密码,rfc822则表示密码要遵循RFC822格式,enforce表示密码检查不过不允许进入,warn表示密码检查不过只出现警告信息。
deny=email--拒绝特定的email当密码
path-filer--摄定哪些文件名不可使用
path-filer<错误信息文件>;<允许字符>;<不允许字符>;
upload--设定upload权限
upload[absloute/relative][class=]…[-]<设定的目录>; >;[dirs/nodirs][d_mode]
用来对我们要设定的目录做权限设定:
absoulte/relative使用绝对路径或是相对路径
class=指定某个class
root-dir指的是对哪些root-dir的人,也就是chroot后的登入目录,应用这个规则
设定的目录指的就是我们要限制的目录
yes/no指得是能否在此目录下开新文件
owner,group指出是开出来的文件拥有者及群组
Mode指的是文件权限
dirs/nodirs指的是能否开新目录
d_mode设定建立新目录时目录的权限,如果不设定会根据mode来设定
thoughput--控制下载速度
thoughput<子目录列表>;<文件>;<远端地址列表>;
对远端的地址,控制他抓某个子目录下的某些文件时的速度,例如:
thoughput /e/ftp * * oo - *
thoughput /e/ftp /sw* * 1024 0.5 *
thoughput /e/ftp sw* readme oo - *
thoughput /e/ftp sw* * oo - *.foo.com
以上的设定你是否能够看出来呢?“oo”表示不限制bytes/sec,“-”或是“1.0”都是代表一倍。第一行的意思是说,在/e/ftp下面的文件不限制下载速度;第二行说,在/sw*下面的任何文件限速为1024bytes/sec*
0.5=512bytes/sec;第三行又把readme文件的限速取消;最后一行则对*.foo.com开放全速。
anonymous-root--对某class设定匿名用户的根目录
anonymous-root[]
guest-root--预设一个guest用户根目录
guest-root[]
其中用于指定uid的范围
deny-uid,deny-gid--拒绝某段UID(GID)范围
allow-uid,allow-gid--允许某段UID(GID)范围
restricted-uid,restricted-gid--限制用户不能离开他的登录目录
unrestricted-uid,unrestricted-gid--用户可以离开他的登录目录
dns refuse_mismatch--设定DNS查到名称与用户设定不符的动作
dns refuse_mismatch<信息文件>;[override]
当用户使用未注册IP时,拒绝他的连线,override则是不理会错误而让他连线,信息文件则是我们要给用户看的。
dns refuse_no_reverse--设定无反查记录拒绝连线
dns refuse_no_reverse<信息文件>;[override]
当用户的IP反查无记录时,拒绝他的连线
dns resolveoptions--设定DNS解析选项
dns resolveoptions[options]
这里可以设定DNS解析选项
⒉/etc/ftphosts
ftphosts文件其实跟ftpaccess里面的access,deny很像,它是特别用来设定某些ID的连线,它没有class定义,所以必须是真实用户。
allow|deny<用户>;<地址>;[<地址>;……]
以下是一些例子:
allow rose 140.0.0/8
deny jack 140.123.0.0:255.255.0.0
允许rose从140.*.*.*进来,拒绝jack从140.123.*.*上来
⒊/etc/ftpservers
这个文件控制了当你有不同的IP/hostname的时候,进来的连线使用哪一个配置文件。例如:
10.196.145.10 /etc/ftpd/ftpaccess.somedomain/
10.196.145.200 /etc/ftpd/ftpaccess.someotherdomain/
some.domain internal
10.196.145.20 /etc/ftpd/config/faqs.org/
ftp.some.domain /etc/ftpd/config/faqs.org/
⒋/etc/ftpusers
在这个文件里记录的用户禁止使用FTP
⒌/etc/ftpgroups
给SITE GROUP指令使用,线上切换group。SITE EXEC容易造成安全漏洞,一般我们都不开放。
⒍/etc/ftpconversions
用来做tar、compress、gzip等动作指令配置文件,只要用预设即可,如果你不开放即时压缩打包,也可以把内容清除。
2,Linux操作系统近几年有了蓬勃的发展,在整个世界范围内得到了越来越多公司和团体的支持,尤其是最近IBM公司的鼎力支持,更是使Linux服务器如虎添翼,更上一层楼

Linux操作系统近几年有了蓬勃的发展,在整个世界范围内得到了越来越多公司和团体的支持,尤其是最近IBM公司的鼎力支持,更是使Linux服务器如虎添翼,更上一层楼。而在国内,Linux的应用也是方兴未艾,众多公司已经投入到Linux系统的研发和推广工作中。一些优秀的Linux操作系统相继出现,比如红旗Linux等。但是我国的Linux应用水平还很低,熟悉Linux的人员严重缺乏,Linux专业人才的缺乏已成为Linux在国内应用和普及的瓶颈问题。据《开放系统世界》2003年第八期介绍,中国五年内Linux人才需求量将会超过120万。而“1+1+1”工程的实施,也是间接地告诉我们这个问题的严重性。如此大好时机,我们干吗还愣着不动呢!如果你是一位Linux爱好者,你可能已经掌握了基本的Linux的知识与操作,毫无疑问,你并不会去满足这样小小的成就。Linux为何如此的流行?其最大的特点莫过于功能强大,性能稳定的服务器应用了。像WWW,MAIL,FTP,DNS和SMB等。在这篇文章中,我将以Redhat Linux 9为蓝本,从Web服务器的一些最基本的操作入手,从初学者使用的态度,让读者正确充分的认识Apache。好,现在就让我们一起踏上征服Apache的自由之路吧。

Apache的主要特征是:

. 可以运行上所有计算机平台;

. 支持最新的HTTP 1.1协议;

. 简单而强有力的基于文件的配置;

. 支持通用网关接口CGI;

. 支持虚拟主机;

. 支持HTTP认证;

. 集成Perl脚本编程语言;

. 集成的代理服务器;

. 具有可定制的服务器日志;

. 支持服务器端包含命令(SSI)

. 支持安全Socket层(SSL)

. 用户会话过程的跟踪能力;

. 支持FastCGI;

. 支持Java Servlets。

安装Apache

下面我们就开始漫漫征服Apache之旅,通过循序渐进的需求实例,一步步地学习使用Apache,从入门到精通。

系统需求

运行Apache不需要太多的计算资源。它在有6-10MB硬盘空间和8MB RAM的Linux系统上运行得很好。然而,只运行Apache可能不是你想做的事情。更可能的是,你想运行Apache来提供WWW服务、启动CGI进程以及充分利用所有WWW能够提供的令人惊奇的功能。在这种情况下,你需要提供反映负载要求的额外的磁盘空间和内存空间。也就是说,如果仅仅是启动WWW服务并不需要太多的系统资源,但是想要能为大量的客户提供服务就需要更多的系统资源。

获取软件

你可以在http://www.apache.org中获得Apache的最新版。而几乎所有的Linux发行版中均包含有Apache软件包,你也可以直接使用它。

需要注意的是,Apache软件包有两种:一种是源代码,下载后需要自己重新编译;另一种是可执行文件,下载后只需解压就可以使用。

安装软件

你可以通过以下三种方法安装Apache服务器。

1.如果你安装的Linux版本中带用Apache的话,就在选择所要安装的服务器的时候,将httpd这个服务选上,Linux安装程序将自动完成Apache的安装工作,并做好基本的配置。

2.使用可执行文件软件包,这比较适合那些对编译工作不是太熟悉的初级用户,因为它相对比较简单。

下载软件包apache_1.2.4.e.tar.gz

tar xvzf apache_1.2.4.e.tar.gz

这就完成了安装工作,简单吧!

如果你使用的是RedHat Linux的话,你也可以下载apache_1.2.4.rpm软件安装包,然后使用rpm -ivh apache_1.2.4.rpm命令安装。

3.如果你想把Apache服务器充分利用起来的话,就一定要自己编译Apache定制其功能。

下载包含Apache源代码的软件包apache_1.2.4.tar.gz; 然后用tar命令将它解开; 将当前目录改变为Apache源代码发行版的src目录; 将配置样本文件(Configuration.tmpl)复制为Configuration文件;

编辑Configuration文件中的配置选项:

Makefile配置选项:一些编译选项:

. "CC="一行指定用什么编译软件编译,一般为"CC=gcc";

. 如果需要将额外的标志(参数)指定给C编译软件,可以使用:

EXTRA_CFLAGS=

EXTRA_LFLAGS=

. 如果系统需要特殊的库和包含文件,可以在这里指定它们:

EXTRA_LIBS=

EXTRA_INCLUDES=

. 如果你要改变代码优化设置的话,你须将下面一句去掉注释,然

后改成你所需要的值:

#OPTIM=-O2

Rule配置选项:用来决定需要什么功能,一般情况下无需改变。

模块配置:模块是Apache的组成部分,它为Apache内核增加新功能。通过使用模块配置,可以自定义在Apache服务器中需要什么功能,这个部分也是Apache灵活性的表现。模块配置行如下所示:

AddMole moles/standard/mod_env.o

如果你需要Apache服务器具备什么功能,就将那个模块用AddMole语句加到配置文件Configuration中去。

3,一、 MYSQL的基本概念
1、MYSQL的定义
MYSQL一种多用户、多任务的数据库服务器软件
2、MYSQL的特点
支持多平台,没有内存漏洞,分布式处理
支持JAVA、PHP、PERL、支持数据类型
支持ODBC,支持SQL查询
二、 安装MYSQL的服务器
1、 RPM方式MYSQL
#RPM –ivh MYSQL-3。23-3.i386.rpm
#RPM –ivh MYSQL-client-3.23-33.i386.rpm
#RPM-ivh MYSQL-Shared.3.23-33.i386.rpm
#Tpm -ivh MYSQL –server.3.23-33.i386.rpm
2.编译安装方式
#tar -xvzf mysql 3.23.tar.gz
# cd mysql-3.23
#/configure --prdfix=/usr/local
#make
#malke install
# cd/usr/local/bin/
#/mysql-install-db 初始数据库系统。
系统库作用:记录服务器的设置参数,存放用户库信息
安全选项
#safe-mysqld

㈦ 谁能提供一点电脑名词的材料,要通俗易懂的!

RAID(独立磁盘阵列)
一种将同一数据存放在多个硬盘上的不同位置的存储方式。通过将数据置于多硬盘,能和谐地实施并行I/O 操作,提高了性能。过个硬盘同时延长了平均无故障工作时间(MTBF),存储数据的也增强了容错能力

IP存储
通过INTERNET协议(IP)或以太网的数据存储。IP存储使得性价比较好的SAN技术能应用到更广阔的市场中。它利用廉价,货源丰富的以太网交换机,集线器和线缆来实现低成本,低风险基于IP的SAN存储。

光纤通道(FC)
一种以双向,串行方式通讯的高性能连接标准。就有效传送大型数据文件而言。光纤通道拥有长距离连接和高带宽等优势。

SATA
SATA是取代ATA的新一代内部存储器技术,也是ATA接口从并行总线到串行总线架构的自然发展,其初始速率为150MB/S,计划达到600MB/S,采用点对点连接拓扑,每个通道独立工作,不必共享接口带宽,并增加了32位CRC错误校验,通过硬件的支持以及连接器的设计器设计实现热拔插,SATA还为主控DMA提供内部支持,消除了板载DMA控制器方面的瓶颈。

Value entry
Value entry(值项):带有一个名称的一个值的有序值。每个键都可包含任何数量的值项。每个值项都均由三部分组成:名称,数据类型,数据。
★ 名称:不包含反斜杠的字符、数字、代表符、空格的任意组合。同一键中不可有相同的名称。
★ 数据类型:包括字符串、二进制、双字三种。
字符串(REG_SZ):顾名思义,一串ASCII码字符。如“HELLO WORLD”,是一串文字或词组。在注册表中,字符串值一般用来表示文件的描述、硬件的标识等。通常它由字母和数字组成。注册表总是在引号内显示字符串。
二进制(REG_BINARY):如F03D990000BC,是没有长度限制的二进制数值,在注册表编辑器中,二进制数据以十六进制的方式显示出来。
双字(REG_DWORD):从字面上理解应该是Double Word,双字节值。由1-8个十六进制数据组成,我们以十六进制的方式来编辑。如:D1234567。
★ 数据:值项的具体值,它可以占用到64KB。

Subkey
Subkey(子键):在某一个键(父键)下面出现的键(子键)。

HKEY
“根键”或“主键”,它的图标与资源管理器中文件夹的图标有点儿相象。Windows98将注册表分为六个部分,并称之为HKEY_name,它意味着某一键的句柄。

最高分辨率
最高分辨率是摄像头所拍摄静态图像和所采集到动态图像的所能达到的最大分辨率,但一般在最高分辨率下生成的图片文件的数据量较大。

硬盘转速
即Rotational speed。硬盘的转速是指硬盘盘片每分钟转过的圈数,单位为RPM(RotationPerMinute)。一般硬盘的转速都达到5400RPM(每分钟5400转),而部分硬盘如迈拓的金钻系列则达到了7200RPM。有些SCSI接口的硬盘使用了液态轴承技术,转速可达10000-15000RPM。上述的平均等待时间,为盘片旋转一周所需时间的一半,主要就由硬盘转速来决定。

SMbus
SMBus 是 System Management Bus 的缩写,是1995年由Intel提出的,应用于移动PC和桌面PC系统中的低速率通讯。它主要是希望通过一条廉价并且功能强大的总线(由两条线组成),来控制主板上的设备并收集相应的信息。
SMBus 为系统和电源管理这样的任务提供了一条控制总线,使用 SMBus 的系统,设备之间发送和接收消息都是通过 SMBus,而不是使用单独的控制线,这样可以节省设备的管脚数。

使用 SMBus,设备还可以提供它的生产信息,告诉系统它的型号,部件号等,针对一些事件的保存它的状态,报告不同类别的错误,接收控制参数,并返回它的状态等。

SMBus 最适用于笔记本电脑上,检测各元件状态并更新硬件设置引脚 (pull-high 或 pull-low)。例如,将不存在的 DIMM 时钟关闭,或检测电池低电压状态。 SMBus 的数据传输率只有 100Kbit/s;这允许单一主机与 CPU 和多个主从硬盘通讯并收发数据。SMBus 也可用于免跳线设计的主板上。

DDR内存
DDR(Dual date rate) SDRAM 称为"双倍速率SDRAM",在133MHz的前端总线频率下,带宽可达2.128GB/S。它的工作原理是其能在控制时钟触发沿的上、下沿都能进行数据传输(而SDRAM只在控制时钟的下降沿进行数据传输),因此在一次控制信号过程中,DDR SDRAM能进行两次的数据交换,这也就是它为什么又如此高的带宽。

CPU内核
CPU的中间就是我们平时称作核心芯片或CPU内核的地方,这颗由单晶硅做成的芯片可以说是电脑的大脑了,所有的计算、接受/存储命令、处理数据都是在这指甲盖大小的地方进行的。目前绝大多数CPU都采用了一种翻转内核的封装形式,也就是说平时我们所看到的CPU内核其实是这颗硅芯片的底部,它是翻转后封装在陶瓷电路基板上的,这样的好处是能够使CPU内核直接与散热装置接触。这种技术也被使用在当今绝大多数的CPU上。而CPU核心的另一面,也就是被盖在陶瓷电路基板下面的那面要和外界的电路相连接。现在的CPU都有以千万计算的晶体管,它们都要连到外面的电路上,而连接的方法则是将每若干个晶体管焊上一根导线连到外电路上。例如Duron核心上面需要焊上3000条导线,而奔腾4的数量为5000条,用于服务器的64位处理器Itanium则达到了7500条。这么小的芯片上要安放这么多的焊点,这些焊点必须非常的小,设计起来也要非常的小心。由于所有的计算都要在很小的芯片上进行,所以CPU内核会散发出大量的热,核心内部温度可以达到上网络,而表面温度也会有数十度,一旦温度过高,就会造成CPU运行不正常甚至烧毁,因此很多电脑书籍或者杂志都会常常强调对CPU散热的重要性。

至于CPU内核的内部结构,就更为复杂了,CPU的基本运算操作有三超线程
即Hyperthreading Technology。HT技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,从而兼容多线程操作系统和软件并提高处理器的性能。操作系统或者应用软件的多线程可以同时运行于一个处理器上,两个逻辑处理器共享一组处理器执行单元,并行完成加、乘、负载等操作。在同一时间里,应用程序可以使用芯片的不同部分。虽然单线程芯片每秒钟能够处理成千上万条指令,但是在任一时刻只能够对一条指令进行操作。而“HT”技术可以使芯片同时进行多线程处理。当在支持多处理器的Windows XP或Linux等操作系统之下运行时,同时运行多个不同的软件程序可以获得更高的运行效率。这两种方式都可使计算机用户获得更优异的性能和更短的等待时间。
:读取数据、对数据进行处理、然后把数据写回到存储器上。对于由最简单的信息构成的数据,CPU只需要四个部分来实现它对数据的操作:指令、指令指示器、寄存器、算术逻辑单元,此外,CPU还包括一些协助基本单元完成工作的附加单元等。

㈧ 分布式计算怎么出现的

分布式计算可以分为以下几类:

传统的C/S模型。如HTTP/FTP/SMTP/POP/DBMS等服务器。客户端向服务器发送请求,服务器处理请求,并把结果返回给客户端。客户端处于主动,服务器处于被动。这种调用是显式的,远程调用就是远程调用,本地调用就是本地调用,每个细节你都要清楚,一点都含糊不得。

集群技术。近年来PC机的计算能力飞速发展,而服务器的计算能力,远远跟不上客户端的要求。这种多对一的关系本来就不公平,人们已经认识到靠提高单台服务器的计算能力,永远满足性能上的要求。一种称集群的技术出现了,它把多台服务器连接起来,当成一台服务器来用。这种技术的好处就是,不但对客户来说是透明的,对服务器软件来说也是透明的,软件不用做任何修改就可以在集群上运行。集群技术的应用范围也仅限于此,只能提高同一个软件的计算能力,而对于多个不同的软件协同工作无能为力。

通用型分布式计算环境。如CORBA/DCOM/ RMI/ DBUS等,这些技术(规范)差不多都有具有网络透明性,被调用的方法可能在另外一个进程中,也可能在另外一台机器上。调用者基本上不用关心是本地调用还是远程调用。当然正是这种透明性,造成了分布式计算的滥用,分布式计算用起来方便,大家以为它免费的。实际上,分布式计算的代价是可观的,据说跨进程的调用,速度可能会降低一个数量级,跨机器的调用,速度可能降低两个数量级。一些专家都建议减少使用分布式计算,即使要使用,也要使用粗粒度的调用,以减少调用的次数。

还其一些混合形式(SOAP?),这里不再多说。我们主要介绍第三种分布式模型,这类分布式模型即适用于企业级应用,也适用于桌面应用。有的专注于企业级应用(如CORBA),有的专注于桌面环境(如DBUS)。它们的实现原理都差不多,基本上都基于传统的RPC或者仿RPC实现的,下面介绍一下它们的基本原理。

我们先看一下分布式的最简模型:

在传统的方法中,调用一个对象的函数很简单:创建这个对象,然后调用它的函数就行了。而在分布式的环境中,对象在另外一个进程中,完全在不同的地址空间里,要调用它的函数可能有点困难了。

看看传统的C/S模型的请求方式,客户端把参数通过网络发给服务器,服务器根据参数要求完成相应的服务,然后把结果返回给客户端,客户端拿到结果了,一次请求算完成。由此看来,调用远程对象似乎并不难,问题在于这种方式不是网络透明的,每一个细节你都要自己处理,非常复杂。

要简化软件的设计,当然是网络操作透明化,调用者和实现者都无需关心网络操作。要做到这一点,我们可以按下列方法:

在客户端要引入一个代理(Proxy)对象。它全权代理实际对象,调用者甚至都不知道它是一个代理,可以像调用本地对象一样调用这个对象。当调用者调用Proxy的函数时,Proxy并不做实际的操作,而是把这些参数打包成一个网络数据包,并把这个数据包通过网络发送给服务器。

在服务器引入一个桩(Stub)对象,Stub收到Proxy发送的数据包之后,把数据包解开,重新组织为参数列表,并用这些参数就调用实际对象的函数。实际对象执行相关操作,把结果返回给Stub,Stub再把结果打包成一个网络数据包,并把这个数据包通过网络发送给客户端的Proxy。

Proxy收到结果数据包后,把数据包解开为返回值,返回给调用者。至此,整个操作完成了。怎么样,简化吧。

Proxy隐藏了客户端的网络操作,Stub隐藏了服务器端的网络操作,这就实现了网络透明化。你也许会说,根本没有简化,只是把网络操作隔离开了,仍然要去实现Proxy和Stub两个对象,一样的麻烦。

没错。不过仔细研究一下Proxy和Stub的功能,我们会发现,对于不同对象,这些操作都差不多,无非就是打包和解包而已,单调重复。单调重复的东西必然有规律可循,有规律可循就可以用代码产生器自动产生代码。

像DCOM和CORBA等也确实是这样做的,先用IDL语言描述出对象的接口,然后用IDL编译器自动产生Proxy和Stub代码,整个过程完全不需要开发人员操心。

打包和解包的专业术语叫做marshal和unmarshal,中文常用翻译为列集和散集。不过这两个词太专业了,翻译成中文之后更加让人不知所云。我想还是用打包和解包两个词更通俗一点。

在以上模型中,调用对象的方法,确实做到了网络透明化。读者可以会问,我要访问对象的属性怎么办呢?对象的属性就是变量,变量就一块内存区域,内存区域在不同的进程里完全是独立的,这看起来确实是一个问题。还记得很多关于软件设计书籍里面讲过的吗:不要暴露对象属性,调用者若要访问对象的属性,通过get/set方法去访问。这样不行了吗,对属性的访问转换为对对象方法的调用。

OK,调用对象的方法和访问对象的属性都解决了。还有重要的一点,如何创建对象呢。因为实际的对象并不固定在某台机器上,它的位置可能是动态的。甚至Proxy本身也不知道Stub运行在哪里。如果要让调用者来指定,创建对象的过程仍未达到网络透明化。通常的做法是引入一个第三方中介,这个第三方中介是固定的,可以通过一定的方法找到它。第三方中介负责在客户端的Proxy和服务器的Stub之间穿针引线。第三方中介通常有两种:一种是只负责帮客户端找到服务器,之后客户端与服务器直接通信。另外一种就是不但负责找到服务器,而且负责转发所有的请求。

以上的模型仍然不完整,因为现实中的对象并不是一直处理于被动的地位。而是在一定的条件下,会主动触发一些事件,并把这些事件上报给调用者。也就是说这是一个双向的动作,单纯的C/S模型无法满足要求,而要采用P2P的方式。原先的客户端同时作为一个服务器存,接受来自己服务器的请求。像COM里就是这样做的,客户端要注册对象的事件,就要实现一个IDispatch接口,给对象反过来调用。

自己实现时还要考虑以下几点:

l 传输抽象层。分布可能是跨进程也可能是跨机器。在不同的情况下,采用不同的通信方式,性能会有所不同。做一个传输抽象层,在不同的情况下,可选用不同的传输方式,是一种好的设计。

l 文本还是二进制。把数据打包成文本还是二进制?打包成文本的好处是,可移植性好,由于人也可以看懂,调试方便。坏处是速度稍慢,打包后的数据大小会明显变大。采用二进制的好处是,速度快,打包后的数据大小与打包前相差不大。坏处是不易调试,可移植性较差。

l 字节顺序和字节对齐。若采用二进制方式传输,可移植性是个问题。因为不同的机器上,字节顺序和字节对齐的方式都有些差异,在数据包中要加入这些说明,以提高可移植性。