ftp服务器如何整理
ftp服务器完全手册
FTP简介
FTP的全称是File Transfer Protocol(文件传输协议)。顾名思义,就是专门用来传输文件的协议。而FTP服务器,则是在互联网上提供存储空间的计算机,它们依照FTP协议提供服务。当它们运行时,用户就可以连接到服务器上下载文件,也可以将自己的文件上传到FTP服务器中。因此,FTP的存在,大大方便了网友之间远程交换文件资料的需要,充分体现了互联网资源共享的精神。现在许多朋友都已经用上了宽带网,而且硬盘也有足够的空间,完全可以通过软件手段把自己的电脑变为一台FTP服务器,和网络中的朋友们一起分享大家各自收藏的好东东!
用Serv-U架设个人FTP
架设FTP服务器,其实并没有技术难度,只需用Serv-U这个软件就可轻松搞定了。Serv-U支持所有版本的Windows操作系统,可以设定多个FTP服务器,可以限定登录用户的权限、登录目录及服务器空间大小,功能非常完善。以下笔者就以Serv-U汉化版为例,给大家讲讲架设个人FTP的具体步骤。
首先下载安装Serv-U,运行,将出现“设置向导”窗口,我们就来跟随着这个向导的指引,一步步进行操作。
1 设置Serv-U的IP地址与域名
一路单击“下一步”跳过系统提示信息,来到“您的IP地址”窗口,这里要求输入本机的IP地址。
如果你的电脑有固定的IP地址,那就直接输入;如果你只有动态IP(例如拨号用户),那该处请留空,Serv-U在运行时会自动确定你的IP地址。
下一步,进行“域名”设定。这个域名只是用来标识该FTP域,没有特殊的含义,比如笔者输入“ftpwxxi520com”。
接下来的“系统服务”选项必须选“是”,这样当你的电脑一启动,服务器也会跟着开始运行。
2设置匿名登录
匿名访问就是允许用户以Anonymous为用户名,无需特定密码即可连接服务器并拷贝文件。如果你不想让陌生人随意进入你的FTP服务器,或想成立VIP会员区,就应该在“匿名账号”窗口中选“否”,这样就只有经过你许可的用户才能登录该FTP。鉴于匿名登录尚有一定的实用需求,笔者在此选“是”。
之后就要为匿名账户指定FTP上传或下载的主目录,这是匿名用户登录到你的FTP服务器后看到的目录。设定后,向导还会继续询问你是否将匿名用户锁定于此目录中,从安全的角度考虑,建议选“是”。这样匿名登录的用户将只能访问你指定的主目录及以下的各级子目录,而不能访问上级目录,便于保证硬盘上其他文件的安全。
3创建新账户
除了匿名用户,我们一般还需要建立有密码的专用账号,也就是说可以让指定用户以专门的账号和密码访问你的服务器,这样做适用于实行会员制下载或只让好友访问。在“命名的账号”窗口中将“创建命名的账号吗”选为“是”,进入“账号名称”设置,填入你制定的账号名称,而后在“账号密码”窗口输入该账号的密码。
单击“下一步”,会要求你指定FTP主目录,并询 问是否将用户锁定于主目录中,选“是”,作用与匿名账户设定基本相同,不再赘述。
紧接着要设置该账户的远程管理员权限,分为“无权限”、“组管理员”、“域管理员”、“只读管理员”和“系统管理员”五种选项,每项的权限各不相同,可根据具体情况进行选择。
至此,我们已拥有了一个域——ftpwxxi520com及两个用户——Anonymous和wxxi520。点击“完成”退出向导,稍等片刻Serv-U软件主界面将自动弹出,我们还要在此进行一些管理员设置。
4管理员设置
每个Serv-U引擎都能用来运行多个虚拟的FTP服务器,而虚拟的FTP服务器就称为“域”。
对FTP服务器来说,建立多个域是非常有用的,每个域都有各自的用户、组和相关的设置。以下笔者就简要说说管理器界面上必要的各项设置。
★ 首先点击窗体左方的“本地服务器”,勾选右边的“自动开始(系统服务)”。
★ 选择左方的“域→活动”,这里记载了该域下所有用户的活动情况,是非常重要的监控数据。
★ “域→组”:在此可自建一些用户组,把各类用户归到相应的组中,便于管理。
★ “域→用户”:这里有我们刚建立的两个账号,其中的细节设置十分重要,具体如下。
账号:如果有用户违反FTP的规定,你可以点击此处的“禁用账号”,让该用户在一段时间内被禁止登录。另外此处的“锁定用户于主目录”一定要勾选,否则你硬盘的绝对地址将暴露。
常规:根据自身的实际需要,在此设置最大的下载和上传速度、登录到本服务器的最大用户数、同一IP的登录线程数等。
IP访问:你可以在此拒绝某个讨厌的IP访问你的FTP服务器,只要在“编辑规则”处填上某个IP地址,以后该IP的访问将会全部被拦下。
配额:勾选“启用磁盘配额”,在此为每位FTP用户设置硬盘空间。点击“计算当前”,可知当前的所有已用空间大小,在“最大”一栏中设定最大的空间值。
最后,请在有改动内容的标签卡上点击右键,选择“应用”,如此才能使设置生效!
好了!现在,一个简单的个人FTP服务器就已经完整地呈现在你面前了。不过这时还要测试一下能否成功地下载和上传。
下载和上传
要使用FTP服务器下载和上传,就要用到FTP的客户端软件。常用的FTP客户端软件有CuteFTP、FlashFXP、FTP Explorer等等。对于它们的具体使用,这里就不细讲了。基本上只要在这些软件的“主机名”处中填入你庙宇的FTP服务器IP地址,而后依次填入用户名,密码和端口(一般为21),点击连接,只要能看到你设定的主目录并成功实现文件的下载和上传,就说明这个用Serv-U建立起来的FTP服务器能正常使用了!
新手必备:FTP命令大全
本文将为在DOS和UNIX操作系统下上网使用FTP功能的用户提供一些帮助。
大量的FTP内部命令,常常让人头昏眼花。对于熟悉的人倒还好一点,如果是才接触到的朋友,就会非常的头疼了。我们在这里为大家整理了一些FTP的内部命令,方便大家查阅。
c FTP的命令行格式为: ftp -v -d -i -n -g [主机名] ,其中
-v 显示远程服务器的所有响应信息;
-n 限制ftp的自动登录,即不使用;
n etrc文件;
-d 使用调试方式;
-g 取消全局文件名。
ftp使用的内部命令如下(中括号表示可选项):
1![cmd[args]]:在本地机中执行交互shell,exit回到ftp环境,如: !lszip
2$ macro-ame[args]:执行宏定义macro-name
3account[password]:提供登录远程系统成功后访问系统资源所需的补 充口令。
4append local-file[remote-file]:将本地文件追加到远程系统主机, 若未指定远程系统文件名,则使用本地文件名。
5ascii:使用ascii类型传输方式。
6bell:每个命令执行完毕后计算机响铃一次。
7bin:使用二进制文件传输方式。
8bye:退出ftp会话过程。
9case:在使用mget时,将远程主机文件名中的大写转为小写字母。
10cd remote-dir:进入远程主机目录。
11cdup:进入远程主机目录的父目录。
12chmod mode file-name:将远程主机文件file-name的存取方式设置为 mode,如: chmod 777 aout 。
13close:中断与远程服务器的ftp会话(与open对应)。
14cr:使用asscii方式传输文件时,将回车换行转换为回行。
15delete remote-file:删除远程主机文件。
16debug[debug-value]:设置调试方式, 显示发送至远程主机的每条命 令,如: deb up 3,若设为0,表示取消debug。
17dir[remote-dir][local-file]:显示远程主机目录,并将结果存入本 地文件local-file。
18disconnection:同close。
19form format:将文件传输方式设置为format,缺省为file方式。
20get remote-file[local-file]: 将远程主机的文件remote-file传至 本地硬盘的local-file。
21glob:设置mdelete,mget,mput的文件名扩展,缺省时不扩展文件名, 同命令行的-g参数。
22hash:每传输1024字节,显示一个hash符号(#)。
23help[cmd]:显示ftp内部命令cmd的帮助信息,如:help get。
24idle[seconds]:将远程服务器的休眠计时器设为[seconds]秒。
25image:设置二进制传输方式(同binary)。
26lcd[dir]:将本地工作目录切换至dir。
27ls[remote-dir][local-file]:显示远程目录remote-dir, 并存入本 地文件local-file。
28macdef macro-name:定义一个宏,遇到macdef下的空行时,宏定义结 束。
29mdelete[remote-file]:删除远程主机文件。
30mdir remote-files local-file:与dir类似,但可指定多个远程文件, 如: mdir ozipoutfile 。
31mget remote-files:传输多个远程文件。
32mkdir dir-name:在远程主机中建一目录。
33mls remote-file local-file:同nlist,但可指定多个文件名。
34mode[modename]:将文件传输方式设置为modename, 缺省为stream方 式。
35modtime file-name:显示远程主机文件的最后修改时间。
36mput local-file:将多个文件传输至远程主机。
37newer file-name: 如果远程机中file-name的修改时间比本地硬盘同 名文件的时间更近,则重传该文件。
38nlist[remote-dir][local-file]:显示远程主机目录的文件清单,并 存入本地硬盘的local-file。
39nmap[inpattern outpattern]:设置文件名映射机制, 使得文件传输 时,文件中的某些字符相互转换,如:nmap $1$2$3[$1, $2][$2,$3],则 传输文件a1a2a3时,文件名变为a1,a2。该命令特别适用于远程主机为非UNIX 机的情况。
40ntrans[inchars[outchars]]:设置文件名字符的翻译机制,如ntrans 1R,则文件名LLL将变为RRR。
41open host[port]:建立指定ftp服务器连接,可指定连接端口。
42passive:进入被动传输方式。
43prompt:设置多个文件传输时的交互提示。
44proxy ftp-cmd:在次要控制连接中,执行一条ftp命令, 该命令允许 连接两个ftp服务器,以在两个服务器间传输文件。第一条ftp命令必须为open, 以首先建立两个服务器间的连接。
45put local-file[remote-file]:将本地文件local-file传送至远程主 机。
46pwd:显示远程主机的当前工作目录。
47quit:同bye,退出ftp会话。
48quote arg1,arg2:将参数逐字发至远程ftp服务器,如: quote syst
49recv remote-file[local-file]:同get。
50reget remote-file[local-file]:类似于get,但若local-file存在, 则从上次传输中断处续传。
51rhelp[cmd-name]:请求获得远程主机的帮助。
52rstatus[file-name]:若未指定文件名,则显示远程主机的状态,否 则显示文件状态。
53rename[from][to]:更改远程主机文件名。
54reset:清除回答队列。
55restart marker:从指定的标志marker处,重新开始get或put,如: restart 130。
56rmdir dir-name:删除远程主机目录。
57runique:设置文件名唯一性存储,若文件存在,则在原文件后加后缀 1,2等。
58send local-file[remote-file]:同put。
59sendport:设置PORT命令的使用。
60site arg1,arg2:将参数作为SITE命令逐字发送至远程ftp主机。
61size file-name:显示远程主机文件大小,如:site idle 7200。
62status:显示当前ftp状态。
63struct[struct-name]:将文件传输结构设置为struct-name, 缺省时 使用stream结构。
64sunique:将远程主机文件名存储设置为唯一(与runique对应)。
65system:显示远程主机的操作系统类型。
66tenex:将文件传输类型设置为TENEX机的所需的类型。
67tick:设置传输时的字节计数器。
68trace:设置包跟踪。
69type[type-name]:设置文件传输类型为type-name,缺省为ascii,如: type binary,设置二进制传输方式。
70umask[newmask]:将远程服务器的缺省umask设置为newmask,如: umask 3。
71user user-name[password][account]:向远程主机表明自己的身份, 需要口令时,必须输入口令,如:user anonymous my@email。
72verbose:同命令行的-v参数,即设置详尽报告方式,ftp服务器的所有 响应都将显示给用户
一、活动目录的由来
谈到活动目录最使人容易想起的就是DOS下的“目录”、“路径”和Windows9X/ME下“文件夹”,那个时候的“目录”或“文件夹”仅代表一个文件存在磁盘上的位置和层次关系,一个文件生成之后相对来说这个文件的所在目录也就固定了(当然可以删除、转移等,现在不考虑这些),也就是说它的属性也就相对固定了,是静态的。这个目录所能代表的仅是这个目录下所有文件的存放位置和所有文件总的大小,并不能得出其它有关信息,这样就影响到了整体使用目录的效率,也就是影响了系统的整体效率,使系统的整个管理变得复杂。因为没有相互关联,所以在不同应用程序中同一对象要进行多次配置,管理起来相当繁锁,影响了系统资源的使用效率。为了改变这种效率低下的关系和加强与Internet上有关协议的关联Microsoft公司决定在WIN2K中全面改革,也就是引入活动目录的概念。理解活动目录的关键就在于“活动”两个字,千万不要将“活动”两个字去掉而仅仅从“目录”两个字去理解,那你我理来理去一定还是不能脱离原来在DOS下目录或Windows9x下的文件夹,正因为这个目录是活动的,所以它是动态的,它是一种包含服务功能的目录,它可以做到“由此及彼”的联想、映射,如找到了一个用户名,就可联想到它的账号、出生信息、E-mail、电话等所有基本信息,虽然组成这些信息的文件可能不在一块。同时不同应用程序之间还可以对这些信息进行共享,减少了系统开发资源的浪费,提高了系统资源的利用效率。
活动目录包括两个方面:目录和与目录相关的服务。目录是存储各种对象的一个物理上的容器,从静态的角度来理解这活动目录与我们以前所结识的“目录”和“文件夹”没有本质区别,仅仅是一个对象,是一实体;而目录服务是使目录中所有信息和资源发挥作用的服务,活动目录是一个分布式的目录服务,信息可以分散在多台不同的计算机上,保证用户能够快速访问,因为多台机上有相同的信息,所以在信息容氏方面具有很强的控制能力,正因如此,不管用户从何处访问或信息处在何处,都对用户提供统一的视图。
二、相关名词术语
虽然活动目录中用到的许多技术在其他软件产品中也已经出现过,但作为全面的整体网络方案还是首次亮相,其中有许多名词或术语或许是闻所未闻的,所以有必要详细了解
一下活动目录的有关名词或术语。
1、名字空间:从本质上讲,活动目录就是一个名字空间,我们可以把名字空间理解为任何给定名字的解析边界,这个边界就是指这个名字所能提供或关联、映射的所有信息范围。通俗地说就是我们在服务器上通过查找一个对象可以查到的所有关联信息总和,如一个用户,如果我们在服务器已给这个用户定义了讲如:用户名、用户密码、工作单位、联系电话、家庭住址等,那上面所说的总和广义上理解就是“用户”这个名字的名字空间,因为我们只输入一个用户名即可找到上面我所列的一切信息。名字解析是把一个名字翻译成该名字所代表的对象或者信息的处理过程。举例来说,在一个电话目录形成一个名字空间中,我们可以从每一个电话户头的名字可以被解析到相应的电话号码,而不是象现在一样名字是名字,号码归号码,根本不能横向联系。Windows 作系统的文件系统也形成了一个名字空间,每一个文件名都可以被解析到文件本身(包含它应有的所有信息)。
2、对象: 对象是活动目录中的信息实体,也即我们通常所见的“属性”,但它是一组属性的集合,往往代表了有形的实体,比如用户账户、 文 件名等。对象通过属性描述它的基本特征,比如,一个用户账号的属性中可能包括用户姓名、 电话号码、 电子邮件地址和家庭住址等。
3、容器:容器是活动目录名字空间的一部分,与目录对象一样,它也有属性,但与目录对象不同的是,它不代表有形的实体,而是代表存放对象的空间,因为它仅代表存放一个对象的空间,所以它比名字空间小。比如一个用户,它是一个对象,但这个对象的容器就仅限于从这个对象本身所能提供的信息空间,如它仅能提供用户名、用户密码。其它的如:工作单位、联系电话、家庭住址等就不属于这个对象的容器范围了。
4、目录树:在任何一个名字空间中,目录树是指由容器和对象构成的层次结构。树的叶子、节点往往是对象,树的非叶子节点是容器。目录树表达了对象的连接方式,也显示了从一个对象到另一个对象的路径。在活动目录中,目录树是基本的结构,从每一个容器作为起点,层层深入, 都可以构成一棵子树。一个简单的目录可以构成一棵树,一个计算机网络或者一个域也可以构成一棵树。这也很容易理解,我们最初学电脑时不就是在全面理解DOS下的路径概念基础之上开始的吗,其实这“目录树”也就是一种“路径关系”,如果你理解了DOS下的“路径”相信理解这“目录树”是没什么问题的!
5、域: 域是WIN2K网络系统的安全性边界。我们知道一个计算机网最基本的单元就是“域”,这一点不是WIN2K所独有的,但活动目录可以贯穿一个或多个域。在独立的计算机上,域即指计算机本身,一个域可以分布在多个物理位置上,同时一个物理位置又可以划分不同网段为不同的域,每个域都有自己的安全策略以及它与其他域的信任关系。当多个域通过信任关系连接起来之后,活动目录可以被多个信任域域共享
6、组织单元:包含在域中特别有用的目录对象类型就是组织单元。组织单元是可将用户、组、计算机和其他单元放入活动目录的容器中,组织单元不能包括来自其他域的对象。组织单元是可以指派组策略设置或委派管理权限的最小作用单位。使用组织单元,您可在组织单元中代表逻辑层次结构的域中创建容器,这样您就可以根据您的组织模型管理帐户、资源的配置和使用,可使用组织单元创建可缩放到任意规模的管理模型。可授予用户对域中所有组织单元或对单个组织单元的管理权限,组织单元的管理员不需要具有域中任何其他组织单元的管理权,组织单元有点象我们在NT时代的工作组,我们从管理权限上来讲可以这么理解。
7、域树:域树由多个域组成,这些域共享同一表结构和配置,形成一个连续的名字空间。树中的域通过信任关系连接起来,活动目录包含一个或多个域树。域树中的域层次越深级别越低,一个“”代表一个层次,如域childMicrosoftcom 就比 Microsoftcom这个域级别低,因为它有两个层次关系,而Microsoftcom只有一个次。而域GrandchildChildMicrosoftcom双比 ChildMicrosoftcom级别低,道理一样。域树中的域是通过双向可传递信任关系连接在一起。由于这些信任关系是双向的而且是可传递的,因此在域树或树林中新创建的域可以立即与域树或树林中每个其他的域建立信任关系。这些信任关系允许单一登录过程,在域树或树林中的所有域上对用户进行身份验证,但这不一定意味着经过身份验证的用户在域树的所有域中都拥有相同的权利和权限。因为域是安全界限,所以必须在每个域的基础上为用户指派相应的权利和权限。
8、域林:域林是指由一个或多个没有形成连续名字空间的域树组成,它与上面所讲的域树最明显的区别就在于这些域树之间没有形成连续的名字空间,而域树则是由一些具有连续名字空间的域组成。但域林中的所有域树仍共享同一个表结构、配置和全局目录。域林中的所有域树通过Kerberos 信任关系建立起来,所以每个域树都知道Kerberos信任关系,不同域树可以交叉引用其他域树中的对象。域林都有根域,域林的根域是域林中创建的第一个域,域林中所有域树的根域与域林的根域建立可传递的信任关系。
9、站点:站点是指包括活动目录域服务器的一个网络位置,通常是一个或多个通过TCP/IP连接起来的子网。站点内部的子网通过可靠、快速的网络连接起来。站点的划分使得管理员可以很方便地配置活动目录的复杂结构,更好地利用物理网络特性,使网络通信处于最优状态。当用户登录到网络时,活动目录客户机在同一个站点内找到活动目录域服务器,由于同一个站点内的网络通信是可靠、快速和高效的,所以对于用户来说,他可以在最快的时间内登录到网络系中。因为站点是以子网为边界的,所以活动目录在登录时很容易找到用户所在的站点,进而找到活动目录域服务器完成登录工作。
10、域控制器:域控制器是使用活动目录安装向导配置的WIN2K Server 的计算机。活动目录安装向导安装和配置为网络用户和计算机提供活动目录服务的组件供用户选择使用。域控制器存储着目录数据并管理用户域的交互关系,其中包括用户登录过程、身份验证和目录搜索,一个域可有一个或多个域控制器。为了获得高可用性和容错能力,使用单个局域网 (LAN) 的小单位可能只需要一个具有两个域控制器的域。具有多个网络位置的大公司在每个位置都需要一个或多个域控制器以提供高可用性和容错能力。
WIN2K Server 域控制器扩展了 WINNT Server 40 的域控制器所提供的能力和特性,WIN2K Server 多宿主复制使每个域控制器上的目录数据同步,以确保随着时间的推移这些信息仍能保持一致,也就是说是动态的,这就是活动目录的作用。多宿主复制是 WINNT Server 40 中使用的主域控制器和备份域控制器模型的发展,在 WINNT Server 40 中只有一个服务器,即主域控制器,拥有该目录的可读写副本。
三、安装活动目录的意义
我们说WIN2K的成功和创造性之一就是成功的全面引入了活动目录服务,那么到底安装活动目录有什么意义呢?这是我们所有初学WIN2K的人首要要问的一个问题。因为活动目录并不是WIN2K系统必需安装的一种服务,要全面理解它又是非常的不容易,那么安装活动目录的意义在哪里呢?它主要体现在以下几个方面:
1、信息的安全性大大增强
安装活动目录后信息的安全性完全与活动目录集成,用户授权管理和目录进入控制已经整合在活动目录当中了(包括用户的访问和登录权限等),而它们都是WIN2K作系统的关键安全措施。活动目录集中控制用户授权,目录进入控制不只能在每一个目录中的对象上定义,而且还能在每一个对象的每个属性上定义,这一点是以前任何系统所不能达到的,包括WINNT 40。除此之外,活动目录还可以提供存储和应用程序作用域的安全策略,提供安全策略的存储和应用范围。安全策略可包含帐户信息,如域范围内的密码限制或对特定域资源的访问权等。所以从一定程序上可以这么说WIN2K的安全性就是活动目录所体现的安全性,由此可见对于网管来说如何配置好活动目录中对象及属性的安全性是一个网管配置好WIN2K系统的关键。
2、引入基于策略的管理,使系统的管理更加明朗
活动目录服务包括目录对象数据存储和逻辑分层结构(指上面所讲的目录、目录树、域、域树、域林等所组成的层次结构),作为目录,它存储着分配给特定环境的策略,称为组策略对象。作为逻辑结构,它为策略应用程序提供分层的环境。组策略对象表示了一套商务规则,它包括与要应用的环境有关的设置,组策略是用户或计算机初始化时用到的配置设置。所有的组策略设置都包含在应用到活动目录,域,或组织单元的组策略对象(GPOs)中。GPOs设置决定目录对象和域资源的进入权限,什么样的域资源可以被用户使用,以及这些域资源怎样使用等。例如,组策略对象可以决定当用户登录时用户在他们的计算机上看到什么应用程序,当它在服务器上启动时有多少用户可连接至 Server,以及当用户转移到不同的部门或组时他们可访问什么文件或服务。组策略对象使您可以管理少量的策略而不是大量的用户和计算机。通过活动目录,您可将组策略设置应用于适当的环境中,不管它是您的整个单位还是您单位中的特定部门。
3、具有很强的可扩展性
WIN2K的活动目录具有很强的可扩展性,管理员可以在计划中增加新的对象类,或者给现有的对象类增加新的属性。计划包括可以存储在目录中的每一个对象类的定义和对象类的属性。例如,在电子商务上你可以给每一个用户对象增加一个购物授权属性,然后存储每一个用户购买权限作为用户帐号的一部分。
4、具有很强的可伸缩性
活动目录可包含在一个或多个域,每个域具有一个或多个域控制器,以便您可以调整目录的规模以满足任何网络的需要。多个域可组成为域树,多个域树又可组成为树林,活动目录也就随着域的伸缩而伸缩,较好地适应了单位网络的变化。目录将其架构和配置信息分发给目录中所有的域控制器,该信息存储在域的第一个域控制器中,并且复制到域中任何其他域控制器。当该目录配置为单个域时,添加域控制器将改变目录的规模,而不影响其他域的管理开销。将域添加到目录使您可以针对不同策略环境划分目录,并调整目录的规模以容纳大量的资源和对象。
5、智能的信息复制能力
信息复制为目录提供了信息可用性、容错、负载平衡和性能优势,活动目录使用多主机复制,允许您在任何域控制器上而不是单个主域控制器上同步更新目录。多主机模式具有更大容错的优点,因为使用多域控制器,即使任何单独的域控制器停止工作,也可继续复制。由于进行了多主机复制,它们将更新目录的单个副本,在域控制器上创建或修改目录信息后,新创建或更改的信息将发送到域中的所有其他域控制器,所以其目录信息是最新的。域控制器需要最新的目录信息,但是要做到高效率,必须把自身的更新限制在只有新建或更改目录信息的时候,以免在网络高峰期进行同步而影响网络速度。在域控制器之间不加选择地交换目录信息能够迅速搞垮任何网络。通过活动目录就能达到只复制更改的目录信息,而不至于大量增加域控制器的负荷。
6、与 DNS 集成紧密
活动目录使用域名系统 (DNS)来为服务器目录命名,DNS 是将更容易理解的主机名(如 MikeMycompanycom)转换为数字 IP 地址的 Internet 标准服务,利于在TCP/IP网络中计算机之间的相互识别和通讯。DNS 的域名基于 DNS 分层命名结构,这是一种倒置的树状结构,单个根域,在它下面可以是父域和子域(分支和叶子)。关于这一点我会在后面以专门的篇章加以详细讲述,在此就仅作简单介绍。
7、与其他目录服务具有互性
由于活动目录是基于标准的目录访问协议,许多应用程序界面(API)都允许开发者进入这些协议,例如活动目录服务界面(ADSI)、轻型目录访问协议 (LDAP) 第三版和名称服务提供程序接口 (NSPI),因此它可与使用这些协议的其他目录服务相互作。LDAP 是用于在活动目录中查询和检索信息的目录访问协议。因为它是一种工业标准服务协议,所以可使用 LDAP 开发程序,与同时支持 LDAP 的其他目录服务共享活动目录信息。活动目录支持 Microsoft Exchange 40 和 5x 客户程序所用的 NSPI 协议,以提供与 Exchange 目录的兼容性。
8、具有灵活的查询
任何用户可使用“开始”菜单、“网上邻居”或“活动目录用户和计算机”上的“搜索”命令,通过对象属性快速查找网络上的对象。如您可通过名字、姓氏、电子邮件名、办公室位置或用户帐户的其他属性来查找用户,反之亦然。
一、呵呵,服务器硬件归服务器件,服务器软件类服务器软件,两者并没有必然联系。你可以在普通台式机上安装服务器软件,也可以在服务器上安装非服务器软件(比如游戏)。服务器与普通机的不同,不过是硬件注重点不同罢了。服务器更注重数据处理速度、数据安全性、整机稳定性、整机可靠度。
二、“需要装那些软件服务器”,这是根据你的需要来的。就你的说法开个网站,偷偷地告诉你,网站的根本也有很多种。大体上来说,有以下一些情况:
1、IIS+ASP+ACCESS+MSSQL
说明:使用IIS做为WEB服务器,这是最常见的WEB服务器之一,也是最容易最好掌握的WEB服务器。这要求你安装Windows2000 Server版或Windows 2003 Server版或最新的Windows 2008。它们都自带有IIS,当然,需要你在基础安装后加装。IIS架好后自有功能能支持ASP,当然,也需要你打开这个支持。如果需要ASP加数据库,你可以使用最简单的ACCESS数据库,可能需要加装Office(Office 2003或其它版),如果需要高强度的数据库管理可以加装MS SQL(SQL2000企业版或其它版本)。
实例:比如动网论坛一般就是使用的这种环境。用ASP的网站多数都使用这种环境。
需要安装的服务器软件有:
A、Windows Server版,建议windows 2003 企业版。
B、Office,建议安装Office 2003,如果你要在服务器上调网页,可考虑安装带FrontPage 2003,它是Office的可选组件之一。
C、MS SQL,建议安装SQL 2000企业版。
2、Apache+Php+oracle
说明,用Apache做WEB服务器,使用Php做动态网页,用oracle做数据库。特别说明的是,Apache在win里也一样能用,Php也能在IIS下玩,oracle也能在win里架。但是Apache一般不在win里用,因为win自带了IIS嘛。Php一般也不在IIS下玩,因为很难搞定。oracle在win里架倒不是件少见的事,oracle的效率比SQL高,但是掌握和操作比SQL难了很多很多。Apache+Php+oracle的组合常见于安装Linux的服务器,这是因为Linux没有自带WEB服务器,Linux下也安装不了MS SQL。使用Apache+Php+oracle多见于大型网站,主要理由有以下:
A、Linux是免费的,出了名的站用win要不出钱(Server版的win很贵哦),要不就用Linux,否则让微软抓住了会罚死。
B、oracle的效率的确比SQL高,虽然搞定它难了些。
C、Php一般人玩不来,看不懂,所以BUG少。
实例:霏凡论坛用的就是Php。
需要安装的服务器软件:
A、Linux服务器版。
B、Apache及Php支持文件。
C、Oracle数据库。
三、“又要把网页上传到服务器(指同台电脑)去的电脑”,无法理解你的意思。如果你说的是,在这个服务器上写网页,然后使这些网页能在这台服务器上让别人能正常访问,那么,这不叫上传了,呵呵。只要你把写好的网页直接复制到WEB服务器设定好的相应目录中就OK。
四、以上是最常见的“网站”架设的情况,当然也存在混着来的情况,比如IIS+ASP+Oacle、IIS+PHP+SQL等等,根据网站拥有者自个的爱好,不过比较少见(不合群的做法常常是比较难的)。玩Linux+Apache+Php+oracle的多数是电脑的内行高手,因为多数菜鸟级的朋友是搞不定的。
五、如果你是新手,建议你按IIS+ASP+ACCESS+MSSQL的方式去安装服务器软件。
六、此外,规范的做法是不去服务器上做网页的,不但不做网页,服务器上一般是不会有人去操作的!调试工作都是用另外的机器联入服务器(比如联入服务器上的SQL服务器)后远程操作的,这样可以最大程度上保证服务器的稳定性。网页也是写好后通过FTP或目录共享复制到服务器上。
七、网页异机上传最常见的是FTP或目录共享,FTP功能也是Win自带的,当然如果需要更高级的管理,可以使用Server-U。
八、如果你不打算做动态网页,全是静态网页,那么,嘿嘿,装个windows Server版吧,什么都不用安装了。
九、做动态网页的程序很多,我一般是直接用记事本写哦,嘿嘿,反正我不写复杂的。如果你真打算在服务器上写网页,一般用到的是FrontPage、dreamweaver等等。
十、顺便说下,要真正正儿八经做网站可不是你想开就开的,要通过电信(或其它)拥有固定IP(如果你用动态域名,那只能是小儿科)和较大的带宽、要通过公安等管理部门备案、要拥有防火墙以防止别人攻击等等。当然,你要只是玩玩,那一台一般的台机,装上软件,加上个动态域名(如花生壳或其它),写好网页(搞上别人写好的也成),调好IIS(或别的WEB服务器)就成了。
题主是否想询问“乌龟服务器怎么归还财产”?
1、根据查询魔兽世界官网得知,首先,前往魔兽世界官网并登录进入控制台,点击“资源”中的“云服务器”。
2、其次,进入到乌龟服务器实例页面,点击退还按钮。
3、其次,点击发送验证码按钮并输入短信验证码,点击确定按钮。
4、然后,勾选“已阅读并同意退费规则”,并点击下一步按钮。
5、然后,此时可以看到将会退还的总费用是多少。
6、然后,退款信息按钮。
7、最后,此时,在“退订清单”中可以看到该台服务器的详细信息,以及退款金额。
1、硬件层面
服务器需要稳定的、长时间的运行,所以有许多保持稳定的硬件模块,例如:双路电源提供双通道供电、raid卡提供硬盘故障的冗余、服务器版多核心低频率的cpu提供稳定的计算性能、服务器版可容错内存等等。
计算机是用时打开,不用时关闭的机器,机器不需要强稳定性,所以可以使用普通电源内存硬盘,cpu也可以使用更高频率的、甚至超频使用。
2、软件层面
服务器需要稳定、开销小的操作系统,同时因为归属于公司,并且大部分归属于营利性公司,所以需要性价比,压榨其计算能力。
而计算机需要功能多、生态好的操作系统,来满足使用的便捷。
3、应用层面
服务器大都使用稳定、单一、高性能的应用软件。比较偏重单一功能点的专业性。
而计算机的多样功能的应用比较多。
相比于传统的网络编程方式,事件驱动能够极大的降低资源占用,增大服务接待能力,并提高网络传输效率。 关于本文提及的服务器模型,搜索网络可以查阅到很多的实现代码,所以,本文将不拘泥于源代码的陈列与分析,而侧重模型的介绍和比较。使用 libev 事件驱动库的服务器模型将给出实现代码。 本文涉及到线程 / 时间图例,只为表明线程在各个 IO 上确实存在阻塞时延,但并不保证时延比例的正确性和 IO 执行先后的正确性;另外,本文所提及到的接口也只是笔者熟悉的 Unix/Linux 接口,并未推荐 Windows 接口,读者可以自行查阅对应的 Windows 接口。阻塞型的网络编程接口几乎所有的程序员第一次接触到的网络编程都是从 listen()、send()、recv()等接口开始的。使用这些接口可以很方便的构建服务器 /客户机的模型。我们假设希望建立一个简单的服务器程序,实现向单个客户机提供类似于“一问一答”的内容服务。图1 简单的一问一答的服务器 /客户机模型我们注意到,大部分的 socket接口都是阻塞型的。所谓阻塞型接口是指系统调用(一般是 IO接口)不返回调用结果并让当前线程一直阻塞,只有当该系统调用获得结果或者超时出错时才返回。实际上,除非特别指定,几乎所有的 IO接口 (包括 socket 接口 )都是阻塞型的。这给网络编程带来了一个很大的问题,如在调用 send()的同时,线程将被阻塞,在此期间,线程将无法执行任何运算或响应任何的网络请求。这给多客户机、多业务逻辑的网络编程带来了挑战。这时,很多程序员可能会选择多线程的方式来解决这个问题。多线程服务器程序 应对多客户机的网络应用,最简单的解决方式是在服务器端使用多线程(或多进程)。多线程(或多进程)的目的是让每个连接都拥有独立的线程(或进程),这样任何一个连接的阻塞都不会影响其他的连接。 具体使用多进程还是多线程,并没有一个特定的模式。传统意义上,进程的开销要远远大于线程,所以,如果需要同时为较多的客户机提供服务,则不推荐使用多进程;如果单个服务执行体需要消耗较多的 CPU 资源,譬如需要进行大规模或长时间的数据运算或文件访问,则进程较为安全。通常,使用 pthread_create () 创建新线程,fork() 创建新进程。 我们假设对上述的服务器 / 客户机模型,提出更高的要求,即让服务器同时为多个客户机提供一问一答的服务。于是有了如下的模型。图2 多线程服务器模型 在上述的线程 / 时间图例中,主线程持续等待客户端的连接请求,如果有连接,则创建新线程,并在新线程中提供为前例同样的问答服务。 很多初学者可能不明白为何一个 socket 可以 accept 多次。实际上,socket 的设计者可能特意为多客户机的情况留下了伏笔,让 accept() 能够返回一个新的 socket。下面是 accept 接口的原型: int accept(int s, struct sockaddr addr, socklen_t addrlen); 输入参数 s 是从 socket(),bind() 和 listen() 中沿用下来的 socket 句柄值。执行完 bind() 和 listen() 后,操作系统已经开始在指定的端口处监听所有的连接请求,如果有请求,则将该连接请求加入请求队列。调用 accept() 接口正是从 socket s 的请求队列抽取第一个连接信息,创建一个与 s 同类的新的 socket 返回句柄。新的 socket 句柄即是后续 read() 和 recv() 的输入参数。如果请求队列当前没有请求,则 accept() 将进入阻塞状态直到有请求进入队列。 上述多线程的服务器模型似乎完美的解决了为多个客户机提供问答服务的要求,但其实并不尽然。如果要同时响应成百上千路的连接请求,则无论多线程还是多进程都会严重占据系统资源,降低系统对外界响应效率,而线程与进程本身也更容易进入假死状态。 很多程序员可能会考虑使用“线程池”或“连接池”。“线程池”旨在减少创建和销毁线程的频率,其维持一定合理数量的线程,并让空闲的线程重新承担新的执行任务。“连接池”维持连接的缓存池,尽量重用已有的连接、减少创建和关闭连接的频率。这两种技术都可以很好的降低系统开销,都被广泛应用很多大型系统,如 websphere、tomcat 和各种数据库等。 但是,“线程池”和“连接池”技术也只是在一定程度上缓解了频繁调用 IO 接口带来的资源占用。而且,所谓“池”始终有其上限,当请求大大超过上限时,“池”构成的系统对外界的响应并不比没有池的时候效果好多少。所以使用“池”必须考虑其面临的响应规模,并根据响应规模调整“池”的大小。 对应上例中的所面临的可能同时出现的上千甚至上万次的客户端请求,“线程池”或“连接池”或许可以缓解部分压力,但是不能解决所有问题。 总之,多线程模型可以方便高效的解决小规模的服务请求,但面对大规模的服务请求,多线程模型并不是最佳方案。下一章我们将讨论用非阻塞接口来尝试解决这个问题。使用select()接口的基于事件驱动的服务器模型 大部分 Unix/Linux 都支持 select 函数,该函数用于探测多个文件句柄的状态变化。下面给出 select 接口的原型: FD_ZERO(int fd, fd_set fds) FD_SET(int fd, fd_set fds) FD_ISSET(int fd, fd_set fds) FD_CLR(int fd, fd_set fds) int select(int nfds, fd_set readfds, fd_set writefds, fd_set exceptfds, struct timeval timeout) 这里,fd_set 类型可以简单的理解为按 bit 位标记句柄的队列,例如要在某 fd_set 中标记一个值为 16 的句柄,则该 fd_set 的第 16 个 bit 位被标记为 1。具体的置位、验证可使用 FD_SET、FD_ISSET 等宏实现。在 select() 函数中,readfds、writefds 和 exceptfds 同时作为输入参数和输出参数。如果输入的 readfds 标记了 16 号句柄,则 select() 将检测 16 号句柄是否可读。在 select() 返回后,可以通过检查 readfds 有否标记 16 号句柄,来判断该“可读”事件是否发生。另外,用户可以设置 timeout 时间。 下面将重新模拟上例中从多个客户端接收数据的模型。图4使用select()的接收数据模型 上述模型只是描述了使用 select() 接口同时从多个客户端接收数据的过程;由于 select() 接口可以同时对多个句柄进行读状态、写状态和错误状态的探测,所以可以很容易构建为多个客户端提供独立问答服务的服务器系统。图5使用select()接口的基于事件驱动的服务器模型 这里需要指出的是,客户端的一个 connect() 操作,将在服务器端激发一个“可读事件”,所以 select() 也能探测来自客户端的 connect() 行为。 上述模型中,最关键的地方是如何动态维护 select() 的三个参数 readfds、writefds 和 exceptfds。作为输入参数,readfds 应该标记所有的需要探测的“可读事件”的句柄,其中永远包括那个探测 connect() 的那个“母”句柄;同时,writefds 和 exceptfds 应该标记所有需要探测的“可写事件”和“错误事件”的句柄 ( 使用 FD_SET() 标记 )。 作为输出参数,readfds、writefds 和 exceptfds 中的保存了 select() 捕捉到的所有事件的句柄值。程序员需要检查的所有的标记位 ( 使用 FD_ISSET() 检查 ),以确定到底哪些句柄发生了事件。 上述模型主要模拟的是“一问一答”的服务流程,所以,如果 select() 发现某句柄捕捉到了“可读事件”,服务器程序应及时做 recv() 操作,并根据接收到的数据准备好待发送数据,并将对应的句柄值加入 writefds,准备下一次的“可写事件”的 select() 探测。同样,如果 select() 发现某句柄捕捉到“可写事件”,则程序应及时做 send() 操作,并准备好下一次的“可读事件”探测准备。下图描述的是上述模型中的一个执行周期。图6 一个执行周期 这种模型的特征在于每一个执行周期都会探测一次或一组事件,一个特定的事件会触发某个特定的响应。我们可以将这种模型归类为“事件驱动模型”。 相比其他模型,使用 select() 的事件驱动模型只用单线程(进程)执行,占用资源少,不消耗太多 CPU,同时能够为多客户端提供服务。如果试图建立一个简单的事件驱动的服务器程序,这个模型有一定的参考价值。 但这个模型依旧有着很多问题。 首先,select() 接口并不是实现“事件驱动”的最好选择。因为当需要探测的句柄值较大时,select() 接口本身需要消耗大量时间去轮询各个句柄。很多操作系统提供了更为高效的接口,如 linux 提供了 epoll,BSD 提供了 kqueue,Solaris 提供了 /dev/poll …。如果需要实现更高效的服务器程序,类似 epoll 这样的接口更被推荐。遗憾的是不同的操作系统特供的 epoll 接口有很大差异,所以使用类似于 epoll 的接口实现具有较好跨平台能力的服务器会比较困难。 其次,该模型将事件探测和事件响应夹杂在一起,一旦事件响应的执行体庞大,则对整个模型是灾难性的。如下例,庞大的执行体 1 的将直接导致响应事件 2 的执行体迟迟得不到执行,并在很大程度上降低了事件探测的及时性。图7 庞大的执行体对使用select()的事件驱动模型的影响 幸运的是,有很多高效的事件驱动库可以屏蔽上述的困难,常见的事件驱动库有 libevent 库,还有作为 libevent 替代者的 libev 库。这些库会根据操作系统的特点选择最合适的事件探测接口,并且加入了信号 (signal) 等技术以支持异步响应,这使得这些库成为构建事件驱动模型的不二选择。下章将介绍如何使用 libev 库替换 select 或 epoll 接口,实现高效稳定的服务器模型。使用事件驱动库libev的服务器模型 Libev 是一种高性能事件循环 / 事件驱动库。作为 libevent 的替代作品,其第一个版本发布与 2007 年 11 月。Libev 的设计者声称 libev 拥有更快的速度,更小的体积,更多功能等优势,这些优势在很多测评中得到了证明。正因为其良好的性能,很多系统开始使用 libev 库。本章将介绍如何使用 Libev 实现提供问答服务的服务器。 (事实上,现存的事件循环 / 事件驱动库有很多,作者也无意推荐读者一定使用 libev 库,而只是为了说明事件驱动模型给网络服务器编程带来的便利和好处。大部分的事件驱动库都有着与 libev 库相类似的接口,只要明白大致的原理,即可灵活挑选合适的库。) 与前章的模型类似,libev 同样需要循环探测事件是否产生。Libev 的循环体用 ev_loop 结构来表达,并用 ev_loop( ) 来启动。 void ev_loop( ev_loop loop, int flags ) Libev 支持八种事件类型,其中包括 IO 事件。一个 IO 事件用 ev_io 来表征,并用 ev_io_init() 函数来初始化: void ev_io_init(ev_io io, callback, int fd, int events) 初始化内容包括回调函数 callback,被探测的句柄 fd 和需要探测的事件,EV_READ 表“可读事件”,EV_WRITE 表“可写事件”。 现在,用户需要做的仅仅是在合适的时候,将某些 ev_io 从 ev_loop 加入或剔除。一旦加入,下个循环即会检查 ev_io 所指定的事件有否发生;如果该事件被探测到,则 ev_loop 会自动执行 ev_io 的回调函数 callback();如果 ev_io 被注销,则不再检测对应事件。 无论某 ev_loop 启动与否,都可以对其添加或删除一个或多个 ev_io,添加删除的接口是 ev_io_start() 和 ev_io_stop()。 void ev_io_start( ev_loop loop, ev_io io ) void ev_io_stop( EV_A_ ) 由此,我们可以容易得出如下的“一问一答”的服务器模型。由于没有考虑服务器端主动终止连接机制,所以各个连接可以维持任意时间,客户端可以自由选择退出时机。图8 使用libev库的服务器模型 上述模型可以接受任意多个连接,且为各个连接提供完全独立的问答服务。借助 libev 提供的事件循环 / 事件驱动接口,上述模型有机会具备其他模型不能提供的高效率、低资源占用、稳定性好和编写简单等特点。 由于传统的 web 服务器,ftp 服务器及其他网络应用程序都具有“一问一答”的通讯逻辑,所以上述使用 libev 库的“一问一答”模型对构建类似的服务器程序具有参考价值;另外,对于需要实现远程监视或远程遥控的应用程序,上述模型同样提供了一个可行的实现方案。 总结 本文围绕如何构建一个提供“一问一答”的服务器程序,先后讨论了用阻塞型的 socket 接口实现的模型,使用多线程的模型,使用 select() 接口的基于事件驱动的服务器模型,直到使用 libev 事件驱动库的服务器模型。文章对各种模型的优缺点都做了比较,从比较中得出结论,即使用“事件驱动模型”可以的实现更为高效稳定的服务器程序。文中描述的多种模型可以为读者的网络编程提供参考价值。
0条评论