什么是邮件转发?*
FO2e7p^Q o
<q*3L5 设置好一个email服务器以后,该服务器将具有一个或若干个域名,这时email服务器将监听25号端口,等待远程的发送邮件的请求。网络上其他的mail服务器或者请求发送邮件的MUA(Mail User Agent,如outlook express、foxmail等等)会连接email服务器的25号端口,请求发送邮件,SMTP会话过程一般是从远程标识自己的身份开始,过程如下:
/}? 7Eni HELO remote.system.domainname
!__0Vk[s 250 qmailserver.domain
[%P#ieD4 MAIL FROM:
user@somewherer.net CZ5\Et6r 250 OK
#V!a<w4_ RCPT TO:
user1@elsewhere.net KrE'M 邮件的接收者
user1@elsewhere.net中的域名并不一定是本地域名,这时候本地系统可能有两种回答,接受它:
ntW@Fm:bw> 250 OK
n"(!v7YNp 或者拒绝接受它:
P=94 553 sorry,.that domain isnot in my domain list of allowed recphosts
s\-,RQ1 第一种情况下,本地email服务器是允许relay的,它接收并同意传递一个目的地址不属于本地域名的邮件;而第二种情况则不接收非本地邮件。
(GSP3KKo*G email一般都有一个配置文件,其决定了是否接受一个邮件。只有当一个RCPT TO命令中的接收者地址的域名存在于该文件中时,才接受该邮件,否则就拒绝该邮件。若该文件不存在,则所有的邮件将被接受。当一个邮件服务器不管邮件接收者和邮件接收者是谁,而是对所有邮件进行转发(relay),则该邮件服务器就被称为开放转发(open relay)的。当email服务器没有设置转发限制时,其是开放转发的。
Cu[-<>my (>v'0RA \/NF??k,jk 什么是最安全的加密技术?*
M5^Y
W#e 1-_r\sb 你上面给定的所有算法不是都和加密技术有关的,下面我对每一个分别进行简要的介绍:
&3Zq1o 数据加密标准(DES)是一个古老的对称密钥加密算法,目前已经不再使用。它不是一个很安全的算法。
js_`L#t 三重DES(Triple-DES)仍然是很安全的,但是也只是在别无他法的情况下的一个较好的选择。显然高级
9@
tp# 加密标准(AES)是一个更好的加密算法,NIST用AES代替Triple-DES作为他们的标准(下面有更详细的讨论)。其他较好的算法包括另外两个AES的变种算法Twofish和Serpent-也称为CAST-128,它是效率和安全的完美结合。这几个算法不仅比DES更安全,而且也比DES的速度更快。为什么要使用一些又慢又不安全的算法呢
V%s
g+D2 SHA1是一个哈希函数,而不是一个加密函数。作为一个哈希函数,SHA1还是相当优秀的,但是还需要几年的发展才能用作加密算法。如果你正在设计一个新系统,那么谨记你可能会在若干年后用SHA1代替目前的算法。我再重复一遍:只是可能。
8+F5n! RSA是一个公开密钥加密算法。RSA的密钥长度一般为2048-4096位。如果你现在的系统使用的是1024位的公开密钥,也没有必要担心,但是你可以加长密钥长度来达到更好的加密效果。
WTvUz.Et 高级加密标准(AES)是一个用来代替数据加密标准(DES)的算法。目前使用的一般为128,196和256位密钥,这三种密钥都是相当安全的。而且美国政府也是这样认为的。他们批准将128位密钥的AES算法用于一般数据加密,196位和256位密钥的AES算法用于秘密数据和绝密数据的加密。
ot^p xun DESX是DES的一个改进版本。DESX的原理是利用一个随机的二进制数与加密前的数据以及解密后的数据异或。虽然也有人批评这种算法,但是与DES相比DESX确实更安全,不过DESX在许多情况下并不适用。我曾经处理过一个硬件支持DES的系统,由于有些环节不能容忍三重DES的慢速,我们在这些地方使用了DESX来代替DES。然而,这是一个非常特殊的情况。如果你需要使用DESX,理由显而易见(可能和我不得不使用DESX的原因类似)。但我建议你使用AES或者上面我提到的一些算法。
@5%&wC RC4是一种常用于SSL连接的数据流加密算法。它已经出现很多年了,而且有很多已知和可能的缺陷,因此在一些新的工程中不要使用它。如果你目前正在使用它而且可以轻易的卸载它,那么情况也不是很坏。不过,我怀疑如果你现在正在使用它,你不可能轻易的卸载它。如果不能将它从系统中轻易的卸载,那么你还是考虑今后怎样升级它,但是不要感到很惊慌。我不会拒绝在一个使用RC4算法来加密SSL连接的网站购买东西,但是如果我现在要新建一个系统,那么我会考虑使用其他的算法,例如:AES。
"7B}hZ^)W 我认为你谈到下面两个算法MD5-RSA和SHA1-DSA的时候,你知道他们是用于数字签名的。但是不要使用MD5,因为它有很多缺陷。很多年前大家就知道MD5中存在漏洞,不过直到今年夏天才破解出来。如果你想了解关于MD5的详细信息,那你可以看看我以前写的一篇文章。你可以将SHA1和RSA或DSA配合在一起使用。目前DSA的密钥位数高达1024位,这个密钥位数已经足够长了,因此不需要担心安全问题。然而,如果NIST实现了更长的密钥位数当然更好。
?5C'9 V X.509证书是一个数据结构,常用于规定比特和字节的顺序,它本身不是一个密码系统。它通常包含一个RSA密钥,也可能包含一个DSA密钥。但是X.509证书内部以及证书本身并不是加密技术。
]\78(_o.zz rJ!cma EbC!tR 什么叫做泛解析*
>@YefNX6 tEhg',2t( 比如说
www.aaa.com 指向10.10.1.1
qLN\%}69/ ftp.aaa.com指向10.10.2.2
A]z*#+Sl 如果这时候客户访问的是aaa.com或者error.aaa.com (这里error代表一个根本不存在的域名或者说是A记录)
&|hK79D 这个时候,如果dns服务器不支持泛解析的话,那么就无法访问aaa公司的网站,提示错误。
I%[e6qX@ 如果支持泛解析的话,如果你访问的域名在dns服务器中没有A记录,比如fadsfdsafsdaf.aaa.com,它一样会跳转到
www.aaa.com,出现公司的网站,而不用担心一些人输错网址后到不了公司的网站而损失了潜在的客户。
"`vRHeCKN 泛域名解析域名域名解析的区别
]b4WfIu 泛域名解析是:*.域名解析到同一IP。
*M.xVUPr 域名解析是:子域名.域名解析到同一IP。
4%(Ji 注意:只有客户的空间是独立IP的时候泛域名才有意义。而域名解析则没有此要求。
Cx7-I0! {7NGfzwp;6 wcGK*sWG- 什么是WSH*
S#/%#k103 pO`KtagL WSH是“Windows Scripting Host”的缩略形式,其通用的中文译名为“Windows 脚本宿主”。对于这个较为抽象的名词,我们可以先作这样一个笼统的理解:它是内嵌于 Windows 操作系统中的脚本语言工作环境。
P49\A^5S! <L&EH@T Windows Scripting Host 这个概念最早出现于 Windows 98 操作系统。大家一定还记得 MS-Dos 下的批处理命令,它曾有效地简化了我们的工作、带给我们方便,这一点就有点类似于如今大行其道的脚本语言。但就算我们把批处理命令看成是一种脚本语言,那它也是 98 版之前的 Windows 操作系统所唯一支持的“脚本语言”。而此后随着各种真正的脚本语言不断出现,批处理命令显然就有点力不从心了。面临这一危机,微软在研发 Windows 98 时,为了实现多类脚本文件在 Windows 界面或 Dos 命令提示符下的直接运行,就在系统内植入了一个基于 32 位 Windows 平台、并独立于语言的脚本运行环境,并将其命名为“Windows Scripting Host”。WSH 架构于 ActiveX 之上,通过充当 ActiveX 的脚本引擎控制器,WSH 为 Windows 用户充分利用威力强大的脚本指令语言扫清了障碍。
*DL7p8 ScPVjqG2{ 再具体一点描述:你自己编写了一个脚本文件,如后缀为 .vbs 或 .js 的文件,然后在 Windows 下双击并执行它,这时,系统就会自动调用一个适当的程序来对它进行解释并执行,而这个程序,就是 Windows Scripting Host,程序执行文件名为 Wscript.exe (若是在命令行下,则为 Cscript.exe)。
v,KKn\X AJPvwu}D WSH 诞生后,在 Windows 系列产品中很快得到了推广。除 Windows 98 外,微软在 Internet Information Server 4.0、Windows Me、Windows 2000 Server,以及 Windows 2000 Professional 等产品中都嵌入了 WSH。现在,早期的 Windows 95 也可单独安装相应版本的 WSH。
~6 6xO9s m#7(<# oUv26t~ Windows中域和组是什么关系?有什么区别?*
u!_l/'\ By EvilOctal[EST]
#z `W ,^C ,erw(7}'. 相对包含关系,在每一个域中,管理员又可以把里面的用户划分为不同的组。
;5[KZ8j6Y 工作组是一群计算机的集合,它仅仅是一个逻辑的集合,各自计算机还是各自管理的,你要访问其中的计算机,还是要到被访问计算机上来实现用户验证的。而域不同,域是一个有安全边界的计算机集合,在同一个域中的计算机彼此之间已经建立了信任关系,在域内访问其他机器,不再需要被访问机器的许可了。为什么是这样的呢?因为在加入域的时候,管理员为每个计算机在域中(可和用户不在同一域中)建立了一个计算机帐户,这个帐户和用户帐户一样,也有密码保护的。可是大家要问了,我没有输入过什么密码啊,是的,你确实没有输入,计算机帐户的密码不叫密码,在域中称为登录票据,它是由2000的DC(域控制器)上的KDC服务来颁发和维护的。为了保证系统的安全,KDC服务每30天会自动更新一次所有的票据,并把上次使用的票据记录下来。周而复始。也就是说服务器始终保存着2个票据,其有效时间是60天,60天后,上次使用的票据就会被系统丢弃。如果你的GHOST备份里带有的票据是60天的,那么该计算机将不能被KDC服务验证,从而系统将禁止在这个计算机上的任何访问请求(包括登录),解决的方法呢,简单的方法使将计算机脱离域并重新加入,KDC服务会重新设置这一票据。或者使用2000资源包里的NETDOM命令强制重新设置安全票据。因此在有域的环境下,请尽量不要在计算机加入域后使用GHOST备份系统分区,如果作了,请在恢复时确认备份是在60天内作的,如果超出,就最好联系你的系统管理员,你可以需要管理员重新设置计算机安全票据,否则你将不能登录域环境。
:KLXrr 4U}qrN~= ym%UuC3^w 什么是RSS*
Ni,nQ;9 4QL>LK RSS(即RDF Site Summary)是一种描述互联网内容的格式。目前RSS应用的最广泛的还是在Blog也就是网志中。
8t-GsjHb ',+yD9 @ 我们经常会在一些Blog上看到这样的图标,或者是诸如“syndicate this site (XML)”之类的文字,这些图标和文字所对应的超级链接通常也就是该Blog的RSS输出文件的URL。一般情况下这些RSS文件是以xml或者使rdf为后缀的,但是也有一些网站采用动态地址来定位RSS文件。
BrV{X&>[i +&EXTZ@o Movable Type构建的Blog,其RSS文件一般是index.rdf或者是index.xml, 假如一个使用MT构建的Blog其地址为
http://www.yoursite.com 那么这个Blog的RSS文件地址默认的就是
http://www.yoursite.com/index.xml 或者
http://www.yoursite.com/index.rdf 。
m~=~DMj gAqK)@8- 在国内大多数Blog用户都使用Blog托管网站提供的免费Blog服务,例如:blogdriver,blogbus等。这些托管网站提供的RSS文件输出地址一般都是动态地址,用户需要在Blog页面上寻找图标来找到RSS文件的地址,对于blogdriver的用户来讲,你们的RSS文件链接就在目录栏的最下方,RSS1.0, RSS2.0, ATOM等字样处。目前本网站支持RSS1.0和2.0格式。使用其他Blog工具或者服务商的用户可以去阅读相应的帮助文件或者是服务网站的帮助页面,应该可以找到相应的说明。
?e7]U*jEU a)qan shtml是什么?*
6
63o T{YZ`[ SSI有什么用
J$dwy$n 之所以要扯到ssi,是因爲shtml--server-parsed HTML 的首字母缩略词。包含有嵌入式_blank>服务器方包含命令的 HTML 文本。在被传送给浏览器之前,_blank>服务器会对 SHTML 文档进行完全地读取、分析以及修改。
D Ez,u^ shtml和asp 有一些相似,以shtml命名的文件里,使用了ssi的一些指令,就像asp中的指令,你可以在SHTML文件中写入SSI指令,当客户端访问这些shtml文件时,
25^?|9o 7 _blank>服务器端会把这些SHTML文件进行读取和解释,把SHTML文件中包含的SSI指令解释出来比如:你可以在SHTML文件中用SSI指令引用其他的html文件(#include ),_blank>服务器传送给客户端的文件,是已经解释的SHTML不会有SSI指令。它实现了HTML所没有的功能,就是可以实现了_blank>动态
<wH+\ 的SHTML,可以说是HTML的一种进化吧。像新浪的_blank>新闻系统就是这样的,_blank>新闻内容是固定的但它上面的广告和菜单等就是用#include引用进来的。
p9(y b >| R'dF} 目前,主要有以下几种用用途:
\/A.j|by,> 1、显示_blank>服务器端环境变量<#echo>
4=zs& 2、将文本内容直接插入到文档中<#include>
._mep\#.: 3、显示WEB文档相关信息<#flastmod #fsize> (如文件制作日期/大小等)
U.%Kt,qB 4、直接执行_blank>服务器上的各种程序<#exec>(如CGI或其他可执行程序)
qNp1<QO0 5、设置SSI信息显示格式<#config>(如文件制作日期/大小显示方式)
xP;r3u
s 高级SSI<XSSI>可设置变量使用if条件语句。
O7K.\ K2 使用SSI
]MbPivM SSI是为WEB_blank>服务器提供的一套命令,这些命令只要直接嵌入到HTML文档的注释内容之中即可。如:
)Fw/Cu <!--#include file="info.htm"-->
_X6'uJ 就是一条SSI指令,其作用是将"info.htm"的内容拷贝到当前的页面中,当访问者来浏览时,会看到其它HTML文档一样显示info.htm其中的内容。
&p0e)o~Ux 其它的SSI指令使用形式基本同刚才的举例差不多,可见SSI使用只是插入一点_blank>代码而已,使用形式非常简单。
K=g</@L6R 当然,如果WEB_blank>服务器不支持SSI,它就会只不过将它当作注释信息,直接跳过其中的内容;浏览器也会忽略这些信息。
t}EMX9SQ qe~x?FO_> 如何在我的WEB_blank>服务器上配置SSI功能?
je4l3Hl 在一些WEB_blank>服务器上(如IIS 4.0/SAMBAR 4.2),包含 #include 指令的文件必须使用已被映射到 SSI 解释程序的扩展名;否则,Web _blank>服务器将不会处理该SSI指令;默认情况下,扩展名 .stm、.shtm 和 .shtml 被映射到解释程序(Ssinc.dll)。
bDI%}k9# Apache则是根据你的设置情况而定,修改srm.conf如:
"q@m6fs AddType text/x-server-parsed-html .shtml 将只对.shtml扩展名的文件解析SSI指令
c0!.ei AddType text/x-server-parsed-html .html将对所有HTML文档解析SSI指令
.L'w/"O Netscape WEB_blank>服务器直接使用Administration Server(管理_blank>服务器)可打开SSI功能。
0YeTS!*Aj Website使用Server Admin程序中的Mapping标签,扩展名添加内容类型为:wwwserver/html-ssi
-N *L1Zj Cern_blank>服务器不支持SSI,可用SSI诈骗法,到
http://sw.cse.bris.ac.uk/WebTools/fakessi.html 上下载一个PERL脚本,即可使你的CERN_blank>服务器使用一些SSI指令。(不支持exec指令。)
EY}:aur em$pU*`P SSI指令基本格式
#YUaM<O SSI指令基本格式:
1<@SMcj> 程序_blank>代码:
mkl{Tp* gv#\}/->4 <!-– 指令名称="指令参数">
Y+gY" <!-– 指令名称="指令参数">
3a/n/_D 如
Y.tx$% 程序_blank>代码:
4w4B\Na>l VJh8`PVX <!--#include file="info.htm"-->
SC{m@ <!--#include file="info.htm"-->
6%D9;-N) 说明:
d_RgKdR )k 1.<!-- -->是HTML语法中表示注释,当WEB_blank>服务器不支持SSI时,会忽略这些信息。
KWTV!Wxb=K 2.#include 为SSI指令之一。
IgT`on3Y 3.file 为include的参数, info.htm为参数值,在本指令中指将要包含的文档名。
<=uYfi 3, 8%@|/ 注意:
WzMYRKZ En5oi 1.<!--与#号间无空格,只有SSI指令与参数间存在空格。
}x8!{Y#cF 2.上面的标点="",一个也不能少。
"L~(%Nx3 3.SSI指令是大小写敏感的,因此参数必须是小写才会起作用。
!_S>ER V5|ANt SSI指令使用详解
[U\?+@E* sdu?#O+c1 #echo 示范
}`"`VLh 作用:
W&z jb>0b0 将环境变量插入到页面中。
kc,"w\ ai 语法:
?b7\m":' 程序_blank>代码:
7>JYwU{ `i7r] <!--#echo var="变量名称"-->
IThd\#= <!--#echo var="变量名称"-->
.
,7bGY 1$ p!.~hw9 n|`3d~9$& J~YT~D2L
%H{p&ms xO$P
C, 本文档名称:程序_blank>代码:
R1jl <= pYO =pL^Q <!--#echo var="DOCUMENT_blank>_NAME"-->
\& JZ
>h <!--#echo var="DOCUMENT_blank>_NAME"-->
qnm_#!&uHT 现在时间:程序_blank>代码:
(8 nv&| h}b:-a <!--#echo var="DATE_blank>_LOCAL"-->
xNz(LZ.c <!--#echo var="DATE_blank>_LOCAL"-->
#-hO\
QdC 你的IP地址是程序_blank>代码:
v=`yfCX-qX x2"iZzQlD <!--#echo var="REMOTE_blank>_ADDR"-->
8:cbr/F< <!--#echo var="REMOTE_blank>_ADDR"-->
H=dIZ ?^|`A}q# #include 示范
4aayMS!# 作用:
Hl*vS 将文本文件的内容直接插入到文档页面中。
^xo<$zn 语法:
.nV2n@SR 程序_blank>代码:
>J"IN I 5/H,UL <!--#include file="文件名称"-->
,'#TdLe <!--#include virtual="文件名称"-->
|dRVSVN <!--#include file="文件名称"-->
3"fDFR <!--#include virtual="文件名称"-->
A_9WSXR file 文件名是一个相对路径,该路径相对于使用 #include 指令的文档所在的目录。被包含文件可以在同一级目录或其子目录中,但不能在上一级目录中。如表示当前目录下的的nav_blank>_head.htm文档,则为file="nav_blank>_head.htm"。
qTO6I5u virtual 文件名是 Web 站点上的虚拟目录的完整路径。如表示相对于_blank>服务器文档根目录下hoyi目录下的nav_blank>_head.htm文件;则为file="/hoyi/nav_blank>_head.htm"
Z\0Rw># 参数:
3;nOm =I file 指定包含文件相对于本文档的位置
@sXFu[!U virtual 指定相对于_blank>服务器文档根目录的位置
_1"
ecaA 注意:
XTol|a= 1、文件名称必须带有扩展名。
UK`A:N2[ 2、被包含的文件可以具有任何文件扩展名,我觉得直接使用htm扩展名最方便,微软公司推荐使用 .inc 扩展名(这就看你的爱好了)。
*MF9_V)8V 示例:
J0G@]H 程序_blank>代码:
"> uN={Iy z^Q'GBoBA <!--#include file="nav_blank>_head.htm"-->将头文件插入到当前页面
[K{{P|(q <!--#include file="nav_blank>_foot.htm"-->将尾文件插入到当前页面
$-4](br| <!--#include file="nav_blank>_head.htm"-->将头文件插入到当前页面
De $AJl <!--#include file="nav_blank>_foot.htm"-->将尾文件插入到当前页面
"W<Y1$Y=Y 'uPAG;)m #flastmod 和#fsize 示范
9>}&dQ8 作用: #flastmod 文件最近更新日期
'3.\+^3 #fsize 文件的长度
b
F=MQ 语法:
s.3"2waZ=T 程序_blank>代码:
]5Cr$%H= _\!]MV <!--#flastmod file="文件名称"-->
\j8vf0c5b <!--#fsize file="文件名称"-->
]TV_p[L0B <!--#flastmod file="文件名称"-->
tm1= <!--#fsize file="文件名称"-->
pP<8zTLn 参数:
z2=bbm: file 指定包含文件相对于本文档的位置 如 info.txt 表示当前目录下的的info.txt文档
V>6klA}o virtual 指定相对于_blank>服务器文档根目录的位置 如 /hoyi/info.txt 表示
$ {yct 注意:
4vhf!!1 文件名称必须带有扩展名。
MlO OB 示例:
)XI[hVUA 程序_blank>代码:
X1o",,N^M 3bEcKA_z( <!--#flastmod file="news.htm"-->
y]9R#\P/ <!--#flastmod file="news.htm"-->
=j7Du[?Vu 将当前目录下news.htm文件的最近更新日期插插入到当前页面
dab]>% M 程序_blank>代码:
]>3Y~KH( w,{h9f <!--#fsize file="news.htm"-->
6jE.X <!--#fsize file="news.htm"-->
^'UM@dd?! 将当前目录下news.htm的文件大小入到当前页面
N['DqS = 43=v2P0=Tj #exec 示范
|k a _Zy 作用:
l{By]S 将某一外部程序的输出插入到页面中。可插入CGI程序或者是常规应用程序的输入,这取决于使用的参数是cmd还是cgi。
+ NlnK6T/ 语法:
8P I%Z6 程序_blank>代码:
A l[ZU q'D Ts9Bj <!--#exec cmd="文件名称"-->
w[~G^x& <!--#exec cgi="文件名称"-->
:X>Wd+lY:_ <!--#exec cmd="文件名称"-->
5K vp% <!--#exec cgi="文件名称"-->
~Xi@#s~ 参数:
@@d_F<Ym[ cmd 常规应用程序
#UGSn:D<i cgi CGI脚本程序
1NYR8W]2 示例:
mV0,T*}e 程序_blank>代码:
2>z YJqG| h nydH-;cz <!--#exec cmd="cat /etc/passwd"-->将会显示_blank>密码文件
*ug~LK5Y. <!--#exec cmd="dir /b"-->将会显示当前目录下文件列表
v^"\e&XL <!--#exec cgi="/cgi-bin/gb.cgi"-->将会执行CGI程序gb.cgi。
I~,.@{4 <!--#exec cgi="/cgi-bin/access_blank>_log.cgi"-->将会执行CGI程序access_blank>_log.cgi。
*-VRkS-G <!--#exec cmd="cat /etc/passwd"-->将会显示_blank>密码文件
y
oW~ <!--#exec cmd="dir /b"-->将会显示当前目录下文件列表
)JMqC+J3*t <!--#exec cgi="/cgi-bin/gb.cgi"-->将会执行CGI程序gb.cgi。
k4+vI1Cs <!--#exec cgi="/cgi-bin/access_blank>_log.cgi"-->将会执行CGI程序access_blank>_log.cgi。
0U42QEG2 注意:
@yp0WB 从上面的示例可以看出,这个指令相当方便,但是也存在安全问题。
$8^Hkxy 禁止方法:
m8n) sw,, .Apache,将access.conf中的"Options Includes ExecCGI"这行_blank>代码删除;
}[0nTd .在IIS中,要禁用 #exec 命令,可修改 SSIExecDisable 元_blank>数据库;
^ h=QpH *85N_+Wv! +!lDAkW0 (/y8KG3 .Fb#j+Lq :a wt7lqv 4v[y^P #config
ZTmy} @l 作用: 指定返回给客户端浏览器的错误信息、日期和文件大小的格式。
s'HsLe0| 语法:
@9/I^Zk 程序_blank>代码:
d/_D|ivZ= ki1(b]rf <!--#config errmsg="自定义错误信息"-->
}*fBHzNN <!--#config sizefmt="显示单位"-->
'9\cIni0 <!--#config timefmt="显示格式"-->
v9(5HY <!--#config errmsg="自定义错误信息"-->
\Vc[/Qp7Bb <!--#config sizefmt="显示单位"-->
rr#nBhh8 <!--#config timefmt="显示格式"-->
9r%fBiSk 参数:
"i&)+dr- errmsg 自定义SSI执行错误信息,可以为任何你喜欢的方式。
B{Q}^Mcxy sizefmt 文件大小显示方式,默认为字节方式("bytes")可以改为千字节方式("abbrev")
i/:L^SQAq timefmt 时间显示方式,最灵活的配置属性。
PMjNc_)) 示例: 显示一个不存在文件的大小
G,C`+1$* 程序_blank>代码:
*6I$N>1 WD5J2EePT <!--#config errmsg="_blank>服务器执行错误,请联系管理员
yiho@126.com,谢谢!"-->
(MGgr <!--#fsize file="不存在的文件.htm"-->
J[lC$X[ <!--#config errmsg="_blank>服务器执行错误,请联系管理员
yiho@126.com,谢谢!"-->
Hq.rG-,p <!--#fsize file="不存在的文件.htm"-->
@*%3+9`yq 以千字节方式显示文件大小
?
AfThJc 程序_blank>代码:
a4:GGzt N+&uR!:.C <!--#config sizefmt="abbrev"-->
n;Bb/Z!~ <!--#fsizefile="news.htm"-->
Q68~D.V%r <!--#config sizefmt="abbrev"-->
L0w6K0J4 <!--#fsizefile="news.htm"-->
1UP
{j`-K| 以特定的时间格式显示时间
FJ_JaIby 程序_blank>代码:
B=A!hXNa w/@ZPBRo] <!--#config timefmt="%Y年/%m月%d日 星期%W 北京时间%H:%M:%s,%Y年已过去了%j天 今天是%Y年的第%U个星期"-->
wFMH\a <!--#echo var="DATE_blank>_LOCAL"--> 显示今天是星期几,几月,时区
ERPg TZT <!--#config timefmt="今天%A, %B ,_blank>服务器时区是 %z,是"-->
#]h
X."b2 <!--#echo var="DATE_blank>_LOCAL"-->
F
~A$7 <!--#config timefmt="%Y年/%m月%d日 星期%W 北京时间%H:%M:%s,%Y年已过去了%j天 今天是%Y年的第%U个星期"-->
Jg#0g
eU <!--#echo var="DATE_blank>_LOCAL"--> 显示今天是星期几,几月,时区
TV{GHB!p" <!--#config timefmt="今天%A, %B ,_blank>服务器时区是 %z,是"-->
BTAbDyH5 <!--#echo var="DATE_blank>_LOCAL"-->
99yWUC, 3IxC@QR XSSI
Pe`mZCd^ XSSI(Extended SSI)是一组高级SSI指令,内置于Apache 1.2或更高版本的mod-include模块之中。
s;A7:_z#7 其中可利用的的指令有:
a1pp=3Pd?~ #printenv
fcq8aW/z_ #set
HK)m^!= #if
461g7R%r #printenv
8063LWV 作用: 显示当前存在于WEB_blank>服务器环境中的所有环境变量。
SkuR~! 语法:程序_blank>代码:
JrcbJt b1Vr>:sK47 <!--#printenv-->
dN5{W0_ <!--#printenv-->
Fk=SkSky 参数:无
;nSF\X(;{ 示例:
7z?;z<VJ 程序_blank>代码:
|d0ZB_ci B*tYp <!--#printenv-->
*}2L4] <!--#printenv-->
UZ<K'H,q
;JxL>K( #set
"_/ih1z] 作用:可给变量赋值,以用于后面的if语句。
HH*y$ 语法:程序_blank>代码:
fd[N]I3 )tG. 9"< <!--#set var="变量名"value="变量值"-->
Q`F1t <!--#set var="变量名"value="变量值"-->
k;\gYb%L 参数:无
\2@J^O1, 示例: 程序_blank>代码:
.wNXvnWr $w(RJ/ <!--#set var="color"value="红色"-->
?R]`M_^&u! <!--#set var="color"value="红色"-->
((ebSu2-?$ A}ZZQ #if
g8O6
b 作用: 创建可以改变数据的页面,这些数据根据使用if语句时计算的要求予以显示。
z~Q=OPCnY 语法: 程序_blank>代码:
aL1%BGlmZ< G*IP?c>= <!--#if expr="$变量名=\"变量值A\""-->
i q`}c
|c 显示内容
1.14tS-}[4 <!--#elif expr="$变量名=\"变量值B\""-->
w_{tS\ 显示内容
Qvp"gut)%X <!--#else-->
s4bV0k 显示内容
~,/@]6S&Y <!--#endif"-->
?tYZ/ <!--#if expr="$变量名=\"变量值A\""-->
.D@J\<,+l 显示内容
q-! H7o <!--#elif expr="$变量名=\"变量值B\""-->
>'4A[$$4mM 显示内容
Ki><~!L <!--#else-->
r
w!jmvHE& 显示内容
ZWkRoJXNi <!--#endif"-->
ko9}?qs 示例:
"{~5QO 程序_blank>代码:
CH6 m ?xR7Ii3 <!--#if expr="$SERVER_blank>_NAME=\"hoyi.zb169.net\""-->
^m z9sV 欢迎光临好易CGI工厂在淄博热线的分站
http://hoyi.zb169.net。
M
v6 ^(' <!--#elif expr="$SERVER_blank>_NAME=\"linux" target=_blank>linux.cqi.com.cn\"" -->
l.@1]4. 欢迎光临好易CGI工厂在太阳城的分站
http://linux" target=_blank>linux.cqi.com.cn/~hoyi。
%o8o~B|{.U <!--#else-->
K/W=r 欢迎光临好易CGI工厂!
uHU@j(&c <!--#endif"-->
s| p I` <!--#if expr="$SERVER_blank>_NAME=\"hoyi.zb169.net\""-->
sZrVANyqb 欢迎光临好易CGI工厂在淄博热线的分站
http://hoyi.zb169.net。
gGMfy]]R <!--#elif expr="$SERVER_blank>_NAME=\"linux" target=_blank>linux.cqi.com.cn\"" -->
6+$2rS$1V 欢迎光临好易CGI工厂在太阳城的分站
http://linux" target=_blank>linux.cqi.com.cn/~hoyi。
-;9
}P <!--#else-->
J+/}m}bx 欢迎光临好易CGI工厂!
Y(Oh7VwY*P <!--#endif"-->
c'2/ C5 注意: 用于前面指令中的反斜杠,是用来代换内部的引号,以便它们不会被解释为结束表达式。不可省略。
ujV{AF`JfB N,TV?Q5l7 R!dC20IMvH IP地址如何分类?*
ZA="Dac 8e?/LA%MU IP地址是TCP/IP网络中用来唯一标识每台主机或设备的地址,IP地址由32位(共四个八位组)的二进制组成,IP地址分为两部分,左边网络编号部分用来标识主机所在的网络;右边部分用来标识主机本身。连接到同一网络的主机必须拥有相同的网络编号。
'dwW~4|B 通过IP地址的引导位(最高位)来区分不同类别的IP地址:
%jHm9{|X #I=EYl=Vvi 注:n为网络编号位,h为主机编号位
dJR[9T_OF sqKx?r72 A类地址:0nnnnnnn.hhhhhhhh.hhhhhhhh.hhhhhhhh
wqo:gW_ A类地址具有7位网络编号,因此可定义125个A类网络{27-2(网络编号不能是全0或全1)-1(127为环回地址)}每个网络可以拥有的主机数为16777214{224-2(主机位不能是全0或全1)}
2|;|C8C 十进制表示范围:1.0.0.1-126.255.255.254
ZPZh6^cc os5$( B类地址:10nnnnnn.nnnnnnnn.hhhhhhhh.hhhhhhhh
f=^xU
P B类地址具有14位网络编号,因此可定义16382个B类网络{214-2}
NifQsy)*% 每个网络可以拥有的主机数为65534{216-2}
<IR#W$[ 十进制表示范围:128.0.0.1-191.255.255.254
e(7#>O%1 u+V*U5v C类地址:110nnnnn.nnnnnnnn.nnnnnnnn.hhhhhhhh
*X.1b! C类地址具有21位网络编号,因此可定义2097152个C类地址{221-2}
2u$-(JfoS 每个网络可以拥有的主机数为254{28-2}
,)`_?^\$f 十进制表示范围:192.0.0.1-223.255.255.254
-$8ew+ vh\i ^ D类地址:1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
Ic(qA{SM D类地址用于组播,前面4位1110引导,后面28位为组播地址ID。
`O6#-<> 十进制表示范围:224.0.0.0-239.255.255.255
F;Q,cg M s!(R E类地址:总是以1111四位引导
J];Sj E类地址用于研究用
G|,&V0* 十进制表示范围:240-
-K/+}4i3N [|:{qQyD zyS8LZ-y9 IP地址由InterNIC(因特网信息中心)统一分配,以保证IP地址的唯一性,但有一类IP地址是不用申请可直接用于企业内部网的,这就是Private Address,Private Address不会被INTERNET上的任何路由器转发,欲接入INTERNET必须要通过NAT/PAT转换,以公有IP的形式接入。
uZ?P{E,K 这些私为地址为:
.\caRb[ 10.0.0.0-10.255.255.255(一个A类地址)
]nsjYsT 172.16.0.0-172.31.255.255(16个B类地址)
D_lRYLA+ 192.168.0.0-192.168.255.255(256个C类地址)
dWd%>9}
?TA7i b_ jf3Zy:*K n=!T(Hk 什么是虚拟目录?*
4K^cj2X 4o#]hB';ni 每个 Internet 服务可以从多个目录中发布。通过以通用命名约定 (UNC) 名、用户名及用于访问权限的密码指定目录,可将每个目录定位在本地驱动器或网络上。虚拟服务器可拥有一个宿主目录和任意数量的其它发布目录。其它发布目录称为虚拟目录。
B_d\eD 指定客户 URL 地址,服务将整个发布目录集提交给客户作为一个目录树。宿主目录是"虚拟"目录树的根。虚拟目录的实际子目录对于客户也是可用的。只有
http://www.服务支持虚拟服务器;而 FTP 和 gopher 服务则只能有一个宿主目录。
$5pCfW8> yv-R<c!' 注意 虚拟目录不出现在目录列表中(也称为
http://www.服务的"目录浏览")。要访问虚拟目录,用户必须知道虚拟目录的别名,并在浏览器中键入 URL,对于
http://www.服务,还可在 HTML 页面中创建链接。对于 gopher 服务,可在标志文件中创建明确的链接,以便用户可访问虚拟目录。对于 FTP 服务,可使用目录注释列出虚拟目录。
r(r(&NU 7 z 8C{&i5kj\E 如果虚拟目录是在"Internet 服务管理器"中定义的,则别名与虚拟目录相关联。别名是客户用于访问虚拟目录中信息的子目录名。如果管理员没有指定虚拟目录的别名,"Internet 服务管理器"将自动生嘲?名。
UPH#~D! .,u>WIUxj _%Z.Re 例如,假设管理员为
http://www.服务定义了两个目录,如下所示:
5az%yS KSs1EmB rf0Z5. C:\Wwwroot <home directory>
<)ZQRE@ D:\Webdata Alias = data
|5vcT,A <ww D*t D=ej%]@iw Mqr]e#"o F?6kkLS/ yx8G9SO? PMP{|yEx" 1"y!wsM% 如果 C:\Wwwroot 含有子目录 C:\Wwwroot\Scripts\ 而 D:\Webdata 含有子目录 D:\Webdata\Images\,则 Web 客户可请求下列 URL:
"=a3"/u d&^b=d FDu P8m0]T.&x http://inetsrvr.microsoft.com/schedule.htm e=9/3?El http://inetsrvr.microsoft.com/scripts/query1.htm i\CA6I 7RT{RE wm@j(h4 http://inetsrvr.microsoft.com/data/stocks.htm Onx6Fy]L 3#t9pI4 $$ND]qM$M http://inetsrvr.microsoft.com/data/images/graph1.htm #ksDU $^Xxn.B9 ~) ;4O8~. 对于另一个实例,如果您想提供三个不同的产品目录,可将每个目录存储在服务器
http://www.company.com 上独立的硬盘驱动器中。虚拟目录可用于提出三个独立的驱动器作为三个子目录。
e]1=&:eX#d Owf!dMA;nF W|2^yO,dX 对于浏览器,虚拟目录显示为"根"宿主目录的子目录。必须为浏览器提供它将用于定义该目录的名称(别名)。
VVQ~;{L Fizrsr 6% ;"&?Okz 注意 要浏览虚拟目录,必须指定虚拟目录的 URL。可以单击包含 URL 的超文本链接或在浏览器中键入 URL 来完成。
%<kfW&_>w {jD?obs |it*w\+M >Cr"q* 创建虚拟目录
+c_AAMe 可以为您的服务创建几乎是无限数量的虚拟目录,尽管创建过多的目录可能影响性能。
<~mqb=qA$ @_`r*Tb)dM "[ LUv5 创建虚拟目录
g/C 7wc 1. 在"Internet 服务管理器"中,双击想添加的虚拟目录的服务器以显示其属性页。
<lB2Nv-, 2. 单击"目录"选项卡。
%uo8z~+ j#f/M3 OmuE l> 3. 单击"添加"。
:Pq&l. c^= q(V $2Wk#F2c= 4. 在"目录"框单击"浏览"按钮以选定目录。
=\]gL%N-| w5z]=dN mRx `G(u:v 5. 单击"虚拟目录",在框中键入虚拟目录的名称。
4&NB xe TzC(YWt ,P<I<QYu 6. 设置"访问"权限。
_ %mm !po,Z& Mh`^-*c? 7. 单击 "确定"。
7ZI{A*^vB u8 k^\Do I0Do% 8. 单击"应用",然后单击"确定"。
p+P@I7V n`=S&oKH ^U~Er'mT
E{6ku=2F 注意 虚拟目录不在目录列表中显示(也称为
http://www.服务的"目录浏览")。要访问虚拟目录,用户必须知道虚拟目录的别名并在浏览中键入 URL。对于
http://www.服务,也可以在 HTML 页面中创建链接。对于 gopher 服务,可以在标志文件中创建明确的链接,以便用户可访问虚拟目录。
k?h{6Qd Mzg3i* NATi)A"TZ ^:?z7m 指定含虚拟服务器的目录
q2
7Ac;y 如果已经给服务器分配了多个 IP 地址,则在创建目录时必须指定哪个IP地址可访问此目录。如果不指定 IP 地址,则此目录对于所有虚拟服务器都是可见的。
W4 q9pHQ 5V<6_o 9y\nO)\Tv 要点 设置过程中创建的默认目录不指定 IP 地址。当增加虚拟服务器时,需要为默认的目录指定 IP 地址。
w8D8\`i!" _LF'0s* pXNhU88 什么是1G/2G/2.5G/3G?*
V.3#O^S ybJa: 信息来源:
http://www.net130.com }|h-=T ' 1G(first generation)表示第一代移动通讯技术。如现在以淘汰的模拟移动网。
fp||<B 2G(second generation)表示第二代移动通讯技术。代表为GSM。以数字语音传输技术为核心。
Yy
4Was# 2.5G是基于2G与3G之间的过渡类型。代表为GPRS。比2G在速度、带宽上有所提高。可使现有GSM网络轻易地实现与高速数据分组的简便接入。
"a(R>PV% 3G(third generation)表示第三代移动通讯技术。面向高速、宽带数据传输。国际电信联盟(ITU)称其为IMT-2000(International Mobile Telecom-munication)。最高可提供2Mbp/s的数据传输速率。主流技术为CDMA技术代表有WCDMA(欧,日)、CDMA2000(美)和TD-SCDMA(中)。
07^.Z[(pCt 什么是GSM?
M(8xwo-W 全球移动通讯系统(Global system for Mobile communications)的英文缩写。2G的主流技术,数据速率为9.6kb/s。
4`~OxL 什么是GPRS?
,dba:D=l 通用分组无线业务(General Packet Radio Service)的英文缩写。是一种基于GSM系统的无线分组交换技术。是2.5G的主流技术。理论最高数据速率为171.2kb/s。
`*CoVx~fk ' q9Ejig ]Q^8
9? Cookie是什么?*
blz#M # &h[)nD “Cookie是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户的电脑上保存信息并且随后再取回它。信息的片断以‘名/值’对(name-value pairs)的形式储存。”
G%gdI3h1Z
如果您使用IE浏览器访问Web,您会看到所有保存在您的硬盘上的Cookie。它们最常存放的地方是:c:\windows\cookies(在Win2000/XP/2003中则是C:\Documents and Settings\您的用户名\Cookies)。每一个文件都是一个由“名/值”对组成的文本文件,另外还有一个文件保存有所有对应的Web站点的信息。
;\"Nekd| 在这个文件夹里的每个Cookie文件都是一个简单而又普通的文本文件。透过文件名,您可以看到是哪个Web站点在您的机器上放置了Cookie(当然站点信息在文件里也有保存)。您也能双击打开每一个Cookie文件。
~(m6dPm$}m XXwIp-' sUF5Yq:9 VII`qbxT 什么叫做sql注入?*
P9\y~W qjfv9sU 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.
^ &KH|qRrO y3*IF2G N
cHCcc 什么是注册表?*
$_
$%L0)5 #euOq 注册表(Registry)是微软公司从Windows95系统开始(至目前最新Win2000系统依然使用的是它),引入用于代替原先Win32系统里.ini文件,管理配置系统运行参数的一个全新的核心数据库。在这个数据库里整合集成了全部系统和应用程序的初始化信息;其中包含了硬件设备的说明、相互关联的应用程序与文档文件、窗口显示方式、网络连接参数、甚至有关系到计算机安全的网络享设置 。它与老的win32系统里的ini文件相比,具有方便管理,安全性较高、适于网络操作等特点。
j5Yli6r?3- 注册表的特点有:
q&ed4{H< 1.注册表允许对硬件、系统参数、应用程序和设备驱动程序进行跟踪配置,这使得修改某些设置后不用重新启动成为可能。
EHe-wC 2.注册表中登录的硬件部分数据可以支持高版本Windows的即插即用特性。当Windows检测到机器上的新设备时,就把有关数据保存到注册表中,另外,还可以避免新设备与原有设备之间的资源冲突。
ve#[LBOC8 3.管理人员和用户通过注册表可以在网络上检查系统的配置和设置,使得远程管理得以实现。
dd=5`Bo9Yh ]Gl_L7u` 用户如果需要使用注册表编辑器,可以在“运行”对话框内输入Regedt32或Regedit即可打开注册表编辑器,或者在“命令提示符”中执行Regedt32.exe也可以进入注册表编辑器
^R\5'9K! e /XOmv 什么是RFC 如何得到?*
Kc9)Lzu+ HH!SqkwT IKp(KlA RFC是Request for Comments Document的缩写。RFC实际上就是Internet有关服务的一些标准。你可以从以下站点得到:
6w<p1qhW nis.nsf.net
UL7%6v{'* nisc.jvnc.net
~R|fdD/% ftp.isi.edu
AF{o=@ wuarchive.wustl.edu
,^xsdqpe src.doc.ic.ac.uk
P\c0Q;){h" ftp.ncren.net
(I`<; ftp.sesqui.net
hy"p8j7_ ftp.nic.it
x2i`$iNhmP ftp.imag.fr
Fo"'[` 你也可以发信给
nis-info@nis.nsf.net,标题行空着,内容为:
RkdAzv!Y7 send rfc<nnnn>.txt
/7*qa G 这里的nnnn就是RFC的编号
DF#WQ8?$] 9DXu*} RFC的官方站点是
http://www.rfc-editor.org/ ]:^kw$ d@|j>Z '9wD+'c=A s|!b: Ms` D/{ Spw@ 什么是 RPC ?*
_ )^n[_E Qzk/oHs 远程过程调用 (RPC) 是一种协议,程序可使用这种协议向网络中的另一台计算机上的程序请求服务。由于使用 RPC 的程序不必了解支持通信的网络协议的情况,因此 RPC 提高了程序的互操作性。在 RPC 中,发出请求的程序是客户程序,而提供服务的程序是服务器。
a7NX~9g 什么是域名?
K3UG6S\B Q!%CU8!`& Internet是一个信息的海洋,但这些信息存放在什么地方呢?,实际上,这些信息是存放在世界各地称为“站点”的计算机上,各个站点由拥有该站点的单位维护,上面的信息即是由维护该站点的单位发布,这些信息也称为“网页”。
I(WND/& $PbN=@ 为了区别各个站点,必须为每个站点分配一个唯一的地址,这个地址即称为“IP地址”,IP地址也称为URL(Unique Resource Location,中文意义为“统一资源定位符”),IP地址由四个从0到255之间的数字组成,如202.116.0.54,但这些数字比较难记,所以有人发明了一种新方法来代替这种数字,即“域名”地址,域名由几个英文单词组成,如
www.jnu.edu.cn 具有一定的意义,其中cn代表中国(China),edu代表教育网(education),jnu代表暨南大学(JiNan University),www代表全球网(或称万维网,World Wide Wed),整个域名合起来就代表中国教育网上的暨南大学站点。
zGFW?|o< [TV"mA 域名地址和用数字表示的IP地址实际上是同一个东西,只是外表上不同而已,在访问一个站点的时候,您可以输入这个站点用数字表示的IP地址,也可以输入它的域名地址,这里就存在一个域名地址和对应的IP地址相转换的问题,这些信息实际上是存放在ISP中称为域名服务器(DNS)的计算机上,当您输入一个域名地址时,域名服务器就会搜索其对应的IP地址,然后访问到该地址所表示的站点。站点地址可以在有关计算机的杂志、报纸和书籍上找到,在Internet上有更多站点地址的信息。从现在开始您就可以搜集一些您感兴趣的站点域名地址了。
ldoN!J ~w%Z Bp Internet的域名系统是为方便解释机器的IP地址而设立的。域名系统采用层次结构,按地理域或机构域进行分层。书写中采用圆点将各个层次隔开,分成层次字段。在机器的地址表示中,从右到左依次为最高域名段、次高域名段等,最左的一个字段为主机名。例如,在bbs.jnu.edu.cn中,最高域名为cn,次高域名edu为,最后一个域为jnu,主机名为bbs。
,v1-y
?kB _jb"@TY J2#=`|t" 13{"sY:PT# {&(bKQ DMA是什么?*
]O&A:Us Ip0@Q}^ 当我们向计算机中加入了一块新的声卡或其它适配卡时,安装程序可能会提醒我们应该选择一个DMA通道。那DMA是什么呢?
'E8dkVlI DMA(Direct Memory Access) ,即直接存储器存取,是一种快速传送数据的机制。数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存。DMA技术的重要性在于,利用它进行数据传送时不需要CPU的参与。每台电脑主机板上都有DMA控制器,通常计算机对其编程,并用一个适配器上的ROM(如软盘驱动控制器上的ROM)来储存程序,这些程序控制DMA传送数据。一旦控制器初始化完成,数据开始传送,DMA就可以脱离CPU,独立完成数据传送。在DMA传送开始的短暂时间内,基本上有两个处理器为它工作,一个执行程序代码,一个传送数据。
eEe8T=mD 利用DMA传送数据的另一个好处是,数据直接在源地址和目的地址之间传送,不需要中间媒介。如果通过CPU把一个字节从适配卡传送至内存,需要两步操作。首先,CPU把这个字节从适配卡读到内部寄存器中,然后再从寄存器传送到内存的适当地址。DMA控制器将这些操作简化为一步,它操作总线上的控制信号,使写字节一次完成。这样大大提高了计算机运行速度和工作效率。
J=]w$e ?.P 计算机发展到今天,DMA已不再用于内存到内存的数据传送,因为CPU速度非常快,做这件事,比用DMA控制还要快,但要在适配卡和内存之间传送数据,仍然是非DMA莫属。要从适配卡到内存传送数据,DMA同时触发从适配卡读数据总线(即I/O读操作)和向内存写数据的总线。激活I/O读操作就是让适配卡把一个数据单位(通常是一个字节或一个字)放到PC数据总线上,因为此时内存写总线也被激活,数据就被同时从PC总线上拷贝到内存中。对于每一次写操作,DMA控制器都控制地址总线,通知应将数据写到哪段内存中去。
L{CHAVkV DMA控制数据从内存传送到适配卡的方法与上面类似。对每一个要传送的单位数据,DMA控制器激活读内存和I/O写操作的总线。内存地址被放到地址总线上,像从适配卡到内存传送数据一样,以数据总线为通道,数据从源地址直接传送到目的地址。
l 0b=;^6 DMA从DMA请求线(DREQ)上接收DMA请求,正像中断控制器从中断请求线(IRQ)上接收中断请求一样。一个典型的从适配卡到内存的数据传送是这样进行的,首先,对DMA控制器编程,写入数据要到达的内存地址和要传送的字节数。适配器可以开始传送数据时,它将激活DREQ线,与DMA控制器连通。DMA控制器在与CPU取得总线控制权后,输出内存地址,发送控制信号,使得一个字节或一个字从适配器读出并写入相应内存中,然后更新内存地址,指向下一个字节(或字)要写入的地址,重复上面的操作,直至数据传送完毕。对控制器进行不同编程,就可以实现单字节传送(即每传送一个字节都要求一个DREQ信号)或块数据传送(即全部数据传送只需要一个DREQ信号)。
/[#{#:lo2 如果你要往计算机中插一块适配卡,而且适配卡使用DMA,通常安装程序会让你选择一个DMA通道,设定DIP开关或跳线,来为相应适配器设置DMA通道。尽管从理论上讲,只要不是同时使用DREQ线,不同的适配卡可以共享这条线的,但是按常规,我们最好为每个适配卡单独安排一个DMA通道,这样就可以保证不会发生DMA冲突。附表是DMA的缺省分配情况。
L@R%*-a 通道 功能 通道 功能
XWy
iS\ O 空闲 4 用于级联DMA控制器
ow`c B 1 空闲 5 空闲
z06pX$Q.< 2 软盘 6 空闲
C1rCKKh 3 空闲 7 空闲
r@<; 从中可以看出,DMA通道2和4已被占用,在大多数微机上,通道1、3、5、6和7可由你任意分配。我们平时最好对自己的计算机上DMA通道的分配情况记录下来,以免我们向计算机增加新硬件时出现两个适配卡共用一个通道,导致冲突。