发新话题
打印

[TIPS]邪恶八进制信息安全团队扫盲之《“什么是”系列》资料

什么是BGP?

  BGP(Border GatewayProtocol)是一种在自治系统之间动态交换路由信息的路由协议。一个自治系统的经典定义是在一个管理机构控制之下的一组路由器,它使用IGP和普通度量值向其他自治系统转发报文。

  在BGP中使用自治系统这个术语是为了强调这样一个事实:一个自治系统的管理对于其他自治系统而言是提供一个统一的内部选路计划,它为那些通过它可以到达的网络提供了一个一致的描述。
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

什么是水平分割?

  水平分割是一种避免路由环的出现和加快路由汇聚的技术。由于路由器可能收到它自己发送的路由信息,而这种信息是无用的,水平分割技术不反向通告任何从终端收到的路由更新信息,而只通告那些不会由于计数到无穷而清除的路由。
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

什么是度量值?

  度量值代表距离。它们用来在寻找路由时确定最优路由。每一种路由算法在产生路由表时,会为每一条通过网络的路径产生一个数值(度量值),最小的值表示最优路径。度量值的计算可以只考虑路径的一个特性,但更复杂的度量值是综合了路径的多个特性产生的。一 些常用的度量值有:

  ◎跳步数:报文要通过的路由器输出端口的个数。
  ◎Ticks:数据链路的延时(大约1/18每秒)。
  ◎代价:可以是一个任意的值,是根据带宽,费用或其他网络管理者定义的计算方法得到的。
  ◎带宽:数据链路的容量。
  ◎时延:报文从源端传到目的地的时间长短。
  ◎负载:网络资源或链路已被使用的部分的大小。
  ◎可靠性:网络链路的错误比特的比率。
  ◎最大传输单元(MTU):在一条路径上所有链接可接受的最大消息长度(单位为字节)。
  IGRP使用什么类型的路由度量值?这个度量值由什么组成?
  IGRP使用多个路由度量值。它包括如下部分:
  ◎带宽:源到目的之间最小的带宽值。
  ◎时延:路径中积累的接口延时。
  ◎可靠性:源到目的之间最差的可能可靠性,基于链路保持的状态。
  ◎负载:源到目的之间的链路在最坏情况下的负载,用比特每秒表示。
  ◎MTU:路径中最小的M T U值。
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

什么叫脚本

脚本是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。
雪域神ギ狼

TOP

引用:
这里是引用第[75 楼]EvilOctal2005-10-25 03:19发表的:
什么是木马

特洛伊木马(以下简称木马),英文叫做“Trojan house”,其名称取自希腊神话的特洛伊木马记。

它是一种基于远程控制的黑客工具,具有隐蔽性和非授权性的特点。
.......
接上面:

木马和病毒都是一种人为的程序,都属于电脑病毒,为什么木马要单独提出来说内?大家都知道以前的电脑病毒的作用,其实完全就是为了搞破坏,破坏电脑里的资料数据,除了破坏之外其它无非就是有些病毒制造者为了达到某些目的而进行的威慑和敲诈勒索的作用,或为了炫耀自己的技术. "木马"不一样,木马的作用是赤裸裸的偷偷监视别人和盗窃别人密码,数据等,如盗窃管理员密码-子网密码搞破坏,或者好玩,偷窃上网密码用于它用,游戏帐号,股票帐号,甚至网上银行帐户等.达到偷窥别人隐私和得到经济利益的目的.所以木马的作用比早期的电脑病毒更加有用.更能够直接达到使用者的目的!导致许多别有用心的程序开发者大量的编写这类带有偷窃和监视别人电脑的侵入性程序,这就是目前网上大量木马泛滥成灾的原因.鉴于木马的这些巨大危害性和它与早期病毒的作用性质不一样,所以木马虽然属于病毒中的一类,但是要单独的从病毒类型中间剥离出来.独立的称之为"木马"程序.

一般来说一种杀毒软件程序,它的木马专杀程序能够查杀某某木马的话,那么它自己的普通杀毒程序也当然能够杀掉这种木马,因为在木马泛滥的今天,为木马单独设计一个专门的木马查杀工具,那是能提高该杀毒软件的产品档次的,对其声誉也大大的有益,实际上一般的普通杀毒软件里都包含了对木马的查杀功能.如果现在大家说某某杀毒软件没有木马专杀的程序,那这家杀毒软件厂商自己也好象有点过意不去,即使它的普通杀毒软件里当然的有杀除木马的功能.

还有一点就是,把查杀木马程序单独剥离出来,可以提高查杀效率,现在很多杀毒软件里的木马专杀程序只对木马进行查杀,不去检查普通病毒库里的病毒代码,也就是说当用户运行木马专杀程序的时候,程序只调用木马代码库里的数据,而不调用病毒代码库里的数据,大大提高木马查杀速度.我们知道查杀普通病毒的速度是比较慢的,因为现在有太多太多的病毒.每个文件要经过几万条木马代码的检验,然后再加上已知的差不多有近10万个病毒代码的检验,那速度岂不是很慢了.省去普通病毒代码检验,是不是就提高了效率,提高了速度内? 也就是说现在好多杀毒软件自带的木马专杀程序只查杀木马而一般不去查杀病毒,但是它自身的普通病毒查杀程序既查杀病毒又查杀木马!

TOP

信息来源:baidu
什么是DLL 木马

相信经常玩木马的朋友们都会知道一些木马的特性,也会有自己最喜爱的木马,不过,很多朋友依然不知道近年兴起的“DLL木马”为何物。什么是“DLL木马”呢?它与一般的木马有什么不同?

一、从DLL技术说起

要了解DLL木马,就必须知道这个“DLL”是什么意思,所以,让我们追溯到几年前,DOS系统大行其道的日子里。在那时候,写程序是一件繁琐的事情,因为每个程序的代码都是独立的,有时候为了实现一个功能,就要为此写很多代码,后来随着编程技术发展,程序员们把很多常用的代码集合(通用代码)放进一个独立的文件里,并把这个文件称为“库”(Library),在写程序的时候,把这个库文件加入编译器,就能使用这个库包含的所有功能而不必自己再去写一大堆代码,这个技术被称为“静态链接”(Static Link)。静态链接技术让劳累的程序员松了口气,一切似乎都很美好。可是事实证明,美好的事物不会存在太久,因为静态链接就像一个粗鲁的推销员,不管你想不想要宣传单,他都全部塞到你的手上来。写一个程序只想用到一个库文件包含的某个图形效果,就因为这个,你不得不把这个库文件携带的所有的图形效果都加入程序,留着它们当花瓶摆设,这倒没什么重要,可是这些花瓶却把道路都阻塞了——静态链接技术让最终的程序成了大块头,因为编译器把整个库文件也算进去了。

时代在发展,静态链接技术由于天生的弊端,不能满足程序员的愿望,人们开始寻找一种更好的方法来解决代码重复的难题。后来,Windows系统出现了,时代的分水岭终于出现。Windows系统使用一种新的链接技术,这种被称为“动态链接”(Dynamic Link)的新技术同样也是使用库文件,微软称它们为“动态链接库”——Dynamic Link Library,DLL的名字就是这样来的。动态链接本身和静态链接没什么区别,也是把通用代码写进一些独立文件里,但是在编译方面,微软绕了个圈子,并没有采取把库文件加进程序的方法,而是把库文件做成已经编译好的程序文件,给它们开个交换数据的接口,程序员写程序的时候,一旦要使用某个库文件的一个功能函数,系统就把这个库文件调入内存,连接上这个程序占有的任务进程,然后执行程序要用的功能函数,并把结果返回给程序显示出来,在我们看来,就像是程序自己带有的功能一样。完成需要的功能后,这个DLL停止运行,整个调用过程结束。微软让这些库文件能被多个程序调用,实现了比较完美的共享,程序员无论要写什么程序,只要在代码里加入对相关DLL的调用声明就能使用它的全部功能。最重要的是,DLL绝对不会让你多拿一个花瓶,你要什么它就给你什么,你不要的东西它才不会给你。这样,写出来的程序就不能再携带一大堆垃圾了——绝对不会让你把吃剩的东西带回家,否则罚款,这是自助餐。

DLL技术的诞生,使编写程序变成一件简单的事情,Windows为我们提供了几千个函数接口,足以满足大多数程序员的需要。而且,Windows系统自身就是由几千个DLL文件组成,这些DLL相互扶持,组成了强大的Windows系统。如果Windows使用静态链接技术,它的体积会有多大?我不敢想。

二、应用程序接口API

上面我们对DLL技术做了个大概分析,在里面我提到了“接口”,这又是什么呢?因为DLL不能像静态库文件那样塞进程序里,所以,如何让程序知道实现功能的代码和文件成了问题,微软就为DLL技术做了标准规范,让一个DLL文件像奶酪一样开了许多小洞,每个洞口都注明里面存放的功能的名字,程序只要根据标准规范找到相关洞口就可以取得它要的美味了,这个洞口就是“应用程序接口”(Application Programming Interface),每个DLL带的接口都不相同,尽最大可能的减少了代码的重复。用Steven的一句话:API就是一个工具箱,你根据需要取出螺丝刀、扳手,用完后再把它们放回原处。在Windows里,最基本的3个DLL文件是kernel32.dll、user32.dll、gdi32.dll。它们共同构成了基本的系统框架。

三、DLL与木马

DLL是编译好的代码,与一般程序没什么大差别,只是它不能独立运行,需要程序调用。那么,DLL与木马能扯上什么关系呢?如果你学过编程并且写过DLL,就会发现,其实DLL的代码和其他程序几乎没什么两样,仅仅是接口和启动模式不同,只要改动一下代码入口,DLL就变成一个独立的程序了。当然,DLL文件是没有程序逻辑的,这里并不是说DLL=EXE,不过,依然可以把DLL看做缺少了main入口的EXE,DLL带的各个功能函数可以看作一个程序的几个函数模块。DLL木马就是把一个实现了木马功能的代码,加上一些特殊代码写成DLL文件,导出相关的API,在别人看来,这只是一个普通的DLL,但是这个DLL却携带了完整的木马功能,这就是DLL木马的概念。也许有人会问,既然同样的代码就可以实现木马功能,那么直接做程序就可以,为什么还要多此一举写成DLL呢?这是为了隐藏,因为DLL运行时是直接挂在调用它的程序的进程里的,并不会另外产生进程,所以相对于传统EXE木马来说,它很难被查到。

四、DLL的运行

虽然DLL不能自己运行,可是Windows在加载DLL的时候,需要一个入口函数,就如同EXE的main一样,否则系统无法引用DLL。所以根据编写规范,Windows必须查找并执行DLL里的一个函数DllMain作为加载DLL的依据,这个函数不作为API导出,而是内部函数。DllMain函数使DLL得以保留在内存里,有的DLL里面没有DllMain函数,可是依然能使用,这是因为Windows在找不到DllMain的时候,会从其它运行库中找一个不做任何操作的缺省DllMain函数启动这个DLL使它能被载入,并不是说DLL可以放弃DllMain函数。

五、DLL木马技术分析

到了这里,您也许会想,既然DLL木马有那么多好处,以后写木马都采用DLL方式不就好了吗?话虽然是这么说没错,但是DLL木马并不是一些人想象的那么容易写的。要写一个能用的DLL木马,你需要了解更多知识。

1.木马的主体

千万别把木马模块写得真的像个API库一样,这不是开发WINAPI。DLL木马可以导出几个辅助函数,但是必须有一个过程负责主要执行代码,否则这个DLL只能是一堆零碎API函数,别提工作了。
如果涉及一些通用代码,可以在DLL里写一些内部函数,供自己的代码使用,而不是把所有代码都开放成接口,这样它自己本身都难调用了,更不可能发挥作用。
DLL木马的标准执行入口为DllMain,所以必须在DllMain里写好DLL木马运行的代码,或者指向DLL木马的执行模块。

2.动态嵌入技术

Windows中,每个进程都有自己的私有内存空间,别的进程是不允许对这个私人领地进行操作的,但是,实际上我们仍然可以利用种种方法进入并操作进程的私有内存,这就是动态嵌入,它是将自己的代码嵌入正在运行的进程中的技术。动态嵌入有很多种,最常见的是钩子、API以及远程线程技术,现在的大多数DLL木马都采用远程线程技术把自己挂在一个正常系统进程中。其实动态嵌入并不少见,罗技的MouseWare驱动就挂着每一个系统进程-_-

远程线程技术就是通过在另一个进程中创建远程线程(RemoteThread)的方法进入那个进程的内存地址空间。在DLL木马的范畴里,这个技术也叫做“注入”,当载体在那个被注入的进程里创建了远程线程并命令它加载DLL时,木马就挂上去执行了,没有新进程产生,要想让木马停止惟有让挂接这个木马DLL的进程退出运行。但是,很多时候我们只能束手无策——它和Explorer.exe挂在一起了,你确定要关闭Windows吗?

3.木马的启动

有人也许会迫不及待的说,直接把这个DLL加入系统启动项目不就可以了。答案是NO,前面说过,DLL不能独立运行,所以无法在启动项目里直接启动它。要想让木马跑起来,就需要一个EXE使用动态嵌入技术让DLL搭上其他正常进程的车,让被嵌入的进程调用这个DLL的DllMain函数,激发木马运行,最后启动木马的EXE结束运行,木马启动完毕。

启动DLL木马的EXE是个重要角色,它被称为Loader,如果没有Loader,DLL木马就是破烂一堆,因此,一个算得上成熟的DLL木马会想办法保护它的Loader不会那么容易被毁灭。记得狼狈为奸的故事吗?DLL木马就是爬在狼Loader上的狈。

Loader可以是多种多样的,Windows的rundll32.exe也被一些DLL木马用来做了Loader,这种木马一般不带动态嵌入技术,它直接挂着rundll32进程运行,用rundll32的方法(rundll32.exe [DLL名],[函数] [参数])像调用API一样去引用这个DLL的启动函数激发木马模块开始执行,即使你杀了rundll32,木马本体还是在的,一个最常见的例子就是3721中文实名,虽然它不是木马。

注册表的AppInit_DLLs键也被一些木马用来启动自己,如求职信病毒。利用注册表启动,就是让系统执行DllMain来达到启动木马的目的。因为它是kernel调入的,对这个DLL的稳定性有很大要求,稍有错误就会导致系统崩溃,所以很少看到这种木马。

有一些更复杂点的DLL木马通过svchost.exe启动,这种DLL木马必须写成NT-Service,入口函数是ServiceMain,一般很少见,但是这种木马的隐蔽性也不错,而且Loader有保障。

4.其它

到这里大家也应该对DLL木马有个了解了,是不是很想写一个?别急,不知道大家想过没有,既然DLL木马这么好,为什么到现在能找到的DLL木马寥寥无几?现在让我来泼冷水,最重要的原因只有一个:由于DLL木马挂着系统进程运行,如果它本身写得不好,例如没有防止运行错误的代码或者没有严格规范用户的输入,DLL就会出错崩溃。别紧张,一般的EXE也是这样完蛋的,但是DLL崩溃会导致它挂着的程序跟着遭殃,别忘记它挂接的是系统进程哦,结局就是……惨不忍睹。所以写一个能公布的DLL木马,在排错检查方面做的工作要比一般的EXE木马多,写得多了自己都烦躁……

六、DLL木马的发现和查杀

经常看看启动项有没有多出莫名其妙的项目,这是Loader的所在,只要杀了狼,狈就不能再狂了。而DLL木马本体比较难发现,需要你有一定编程知识和分析能力,在Loader里查找DLL名称,或者从进程里看多挂接了什么陌生的DLL,可是对新手来说……总之就是比较难啊比较难,所以,最简单的方法:杀毒软件和防火墙(不是万能药,切忌长期服用)。


--------------------------------------------------------------------------------

1、什么是木马?木马病毒源自古希腊特洛伊战争中著名的“木马计”而得名,顾名思义就是一种伪装潜伏的网络病毒,他是潜伏在你的城里(电脑里),为入侵者开方便之门。但现在木马的作用已经不只如此,常见我们的盗号很多都是木马搞的鬼。
木马传染方式:通过电子邮件附件发出,捆绑在其他的程序中。
2、木马和我们用的插件有直接关系吗?这个其实很难说,有些有,其实木马完全可以做个LINK程序和我们的插件连接,这样就和他能辨认出来的插件连上了,这个和插件没有什么特别的关联,有插件不等于有木马,有木马的话你换插件也没有特别意义,因为木马完全可以不依赖插件,直接和WOW程序或者Launcher.exe程序连接上,监视你的键盘输入,然后用邮件输出。所以很简单的判断木马就是插件引进来的是很片面的说法。
注:以前不是说有些大的整合插件的网站被攻击吗,那时就有人把他自己绑上木马的插件代替了以前的插件下载,结果搞的很大件事。
3、普通杀毒软件能杀木马吗?答案肯定,但是效果不明显,至少现在国内的杀毒软件能检测到的木马不多,而且木马的变化大,潜伏性也大,给常规杀毒软件带来了很大的难度,所以最好有个专门的杀木马软件,我用的是木马克星,很不错,算是很强的一种木马杀除软件了。
4、木马的入侵方法:很多,根本是防不胜防的,最大的2种就是网上传播和软件传播,比如有时网页的一个小广告,你不小心点了,它偷偷给你下载个木马。用了些很奇怪的软件,都有可能,不过木马有些具有很强的专门攻击性,比如有的专门偷QQ,传奇等。但是道理都很简单,就是把木马程序和游戏(QQ)启动程序LINK上,盗取键盘的输入,然后发出去就是。
最近大家老有被盗的,当然,也有可能不是木马的。就是服务器日志破解,这个完全就是9C的问题了,因为一个服务器日志按道理来说是不能出售的,但是在中国,这个现象很普遍的。有点HTML知识的人有着日志,能破译出明码的帐号密码,这个就不关我们了,只能期望9C别搞这个事情。

TOP

什么是蠕虫?

蠕虫(Worm)是通过分布式网络来扩散传播特定的信息或错误,进而造成网络服务遭到拒绝并发生死锁。

  1982年,Shock和Hupp根据The Shockwave Rider一书中的一种概念提出了一种“蠕虫”(Worm)程序的思想。

  这种“蠕虫”程序常驻于一台或多台机器中,并有自动重新定位(autorelocation)的能力。如果它检测到网络中的某台机器未被占用,它就把自身的一个拷贝(一个程序段)发送给那台机器。每个程序段都能把自身的拷贝重新定位于另一台机器中,并且能识别它占用的哪台机器。

  “蠕虫”程序不一定是有害的。论证了“蠕虫”程序可用作为Ethernet网络设备的一种诊断工具,它能快速有效地检测网络。

  “蠕虫”由两部分组成:一个主程序和一个引导程序。 主程序一旦在机器上建立就会去收集与当前机器联网的其它机器的信息。它能通过读取公共配置文件并运行显示当前网上联机状态信息的系统实用程序而做到这一点。随后,它尝试利用前面所描述的那些缺陷去在这些远程机器上建立其引导程序。

  正是这个一般称作引导程序或“钓鱼”程序的小小程序,把“蠕虫”带入了它感染的每一台机器。

TOP

什么是脚本小子?

脚本小子是指那一些没有黑客的技术,思维与技巧,用别人公布的模式和发布的工具去破坏胡搞的人。
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

什么是禁忌搜索?

禁忌搜索(Tabu Search 又作TS)一种现代启发式算法。其先创立一个初始化的方案 ;基于此,算法“移动” 到一相邻的方案 。经过许多连续的移动过程,提高方案的品质。

TOP

什么是算法?

算法是指完成一个任务所需要的具体步骤和方法。也就是说给定初始状态或输入数据,经过计算机程序的有限次运算,能够得出所要求或期望的终止状态或输出数据。

算法常常含有重复的步骤和一些比较或逻辑判断。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

算法的历史
“算法”的中文名称出自周髀算经;而英文名称 Algorithm 来自于9世纪波斯数学家比阿勒·霍瓦里松的名字al-Khwarizmi,因为比阿勒·霍瓦里松在数学上提出了算法这个概念。“算法”原为"algorism",意思是阿拉伯数字的运算法则,在18世纪演变为"algorithm"。 第一次编写算法是Ada Byron于1842年为巴贝奇分析机编写求解解伯努利方程的程序,因此Ada Byron被大多数人认为是世界上第一位程序员。因为查尔斯·巴贝奇(Charles Babbage)未能完成他的巴贝奇分析机,这个算法未能在巴贝奇分析机上执行。 因为"well-defined procedure"缺少数学上精确的定义,19世纪和20世纪早期的数学家、逻辑学家在定义算法上出现了困难。20世纪的英国数学家图灵提出了著名的图灵论题,并提出一种假想的计算机的抽象模型,这个模型被称为图灵机。图灵机的出现解决了算法定义的难题,图灵的思想对算法的发展起到了重要的作用。

算法的特征
输入:一个算法必须有零个或多个输入量。
输出:一个算法应有一个或多个输出量,输出量是算法计算的结果。
确定性:算法的描述必须无歧义,以保证算法的执行结果是确定的。
有穷性:算法必须在有限步骤内实现。注:此处“有限”不同于数学概念的“有限”,天文数字般的有限对于实际问题并无意义。
有效性:又称可行性。能够实现,算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。

形式化算法
算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机确切的步骤来执行一个指定的任务,如计算职工的薪水或打印学生的成绩单。 一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。


算法的时间复杂度
算法的时间复杂度是指算法需要消耗的时间资源。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做


因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度(Asymptotic Time Complexity)。


算法的空间复杂度
算法的空间复杂度是指算法需要消耗的空间资源。其计算和表示方法与时间复杂度类似,一般都用复杂度的渐近性来表示。同时间复杂度相比,空间复杂度的分析要简单得多。


非确定性多项式时间(NP)


算法的实现
算法不单单可以用计算机程序来实现,也可以在人工神经网络、电路或者机械设备上实现。


例子一
这是算法的一个简单的例子。

我们有一串随机数列。我们的目的是找到这个数列中最大的数。如果将数列中的每一个数字看成是一颗豆子的大小,可以将下面的算法形象地称为“捡豆子”:

首先将第一颗豆子放入口袋中。
从第二颗豆子开始检查,直到最后一颗豆子。如果正在检查的豆子比口袋中的还大,则将它捡起放入口袋中,同时丢掉原先口袋中的豆子。
最后口袋中的豆子就是所有的豆子中最大的一颗。
下面是一个形式算法,用近似于编程语言的伪代码表示

给定:一个数列“list",以及数列的长度"length(list)"
largest = list[1]
for counter = 2 to length(list):
  if list[counter] > largest:
   largest = list[counter]
print largest

符号说明:

= 用于表示赋值。即:右边的值被赋予给左边的变量。
List[counter]用于表示数列中的第counter项。例如:如果counter的值是5,那么List[counter]表示数列中的第5项。
<= 用于表示“小于或等于”。

例子二
求两个自然数的最大公约数 设两个变量 M 和 N

如果 M < N,则交换 M 和 N
M 被 N 除,得到余数 R
判断 R=0,正确则 N 即为“最大公约数”,否则下一步
将 N 赋值给 M,将 R 赋值给 N,重做第一步。
用“BASIC 代码”表示--

If M < N Then Swap M,N
Do While R <> 0
   R = M Mod N
   M = N
   N = R
Loop
Print N

算法设计和分析的基本方法
分治法
动态规划
贪心法(亦作饕餮法)

算法的分类
基本算法
枚举
搜索
深度优先搜索
广度优先搜索
启发式搜索
遗传算法
数据结构的算法
数论与代数算法
计算几何的算法
凸包算法
图论的算法
哈夫曼编码
树的遍历
最短路径算法
最小生成树算法
最小树形图
网络流算法
匹配算法
动态规划
其他
数值分析
加密算法
排序算法
检索算法
随机化算法
并行算法

TOP

什么是虚拟内存?
Add by evilcwa

  不知大家发现没有,在Windows 2000(XP)目录下有一个名为pagefile.sys的系统文件(Windows 98下为Win386.swp),它的大小经常自己发生变动,小的时候可能只有几十兆,大的时候则有数百兆,这种毫无规律的变化实在让很多人摸不着头脑。其实,pagefile.sys是Windows下的一个虚拟内存,它的作用与物理内存基本相似,但它是作为物理内存的“后备力量”而存在的,也就是说,只有在物理内存已经不够使用的时候,它才会发挥作用。

  虚拟内存的产生

  我们都知道,虽然在运行速度上硬盘不如内存,但在容量上内存是无法与硬盘相提并论的。当运行一个程序需要大量数据、占用大量内存时,内存就会被“塞满”,并将那些暂时不用的数据放到硬盘中,而这些数据所占的空间就是虚拟内存。现在我们也明白为什么pagefile.sys的大小会经常变化了。

  虚拟内存的优化

  虚拟内存的大小是由Windows来控制的,但这种默认的Windows设置并不是最佳的方案,因此我们要对其进行一些调整。这样才能发挥出系统的最佳性能。

  1、改变页面文件的位置

  其目的主要是为了保持虚拟内存的连续性。因为硬盘读取数据是靠磁头在磁性物质上读取,页面文件放在磁盘上的不同区域,磁头就要跳来跳去,自然不利于提高效率。而且系统盘文件众多,虚拟内存肯定不连续,因此要将其放到其他盘上。改变页面文件位置的方法是:用鼠标右键点击“我的电脑”,选择“属性→高级→性能设置→高级→更改虚拟内存”,在驱动器栏里选择想要改变到的位置即可。值得注意的是,当移动好页面文件后,要将原来的文件删除(系统不会自动删除)。

  2、改变页面文件的大小

  改变了页面文件的位置后,我们还可以对它的大小进行一些调整。调整时我们需要注意,不要将最大、最小页面文件设为等值。因为通常内存不会真正“塞满”,它会在内存储量到达一定程度时,自动将一部分暂时不用的数据放到硬盘中。最小页面文件越大,所占比例就低,执行的速度也就越慢。最大页面文件是极限值,有时打开很多程序,内存和最小页面文件都已“塞满”,就会自动溢出到最大页面文件。所以将两者设为等值是不合理的。一般情况下,最小页面文件设得小些,这样能在内存中尽可能存储更多数据,效率就越高。最大页面文件设得大些,以免出现“满员”的情况。

  3、禁用页面文件

  当拥有了512MB以上的内存时,页面文件的作用将不再明显,因此我们可以将其禁用。方法是:依次进入注册表编辑器“HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Ma-nager\MemoryManagement”下,在“DisablePa-ging Executive”(禁用页面文件)选项中将其值设为“1”即可。

  4、清空页面文件

  在同一位置上有一个“ClearPageFileAtShutdown(关机时清除页面文件)”,将该值设为“1”。这里所说的“清除”页面文件并非是指从硬盘上完全删除pagefile.sys文件,而是对其进行“清洗”和整理,从而为下次启动Windows XP时更好地利用虚拟内存做好准备。
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

什么是CG?
 CG”原为Computer Graphics的英文缩写。随着以计算机为主要工具进行视觉设计和生产的一系列相关产业的形成,国际上习惯将利用计算机技术进行视觉设计和生产的领域通称为CG。它既包括技术也包括艺术,几乎囊括了当今电脑时代中所有的视觉艺术创作活动,如平面印刷品的设计、网页设计、三维动画、影视特效、多媒体技术、以计算机辅助设计为主的建筑设计及工业造型设计等。
 在日本,cg通常指的是数码化的作品,内容是纯艺术创作到广告设计,可以是二维三维、静止或动画。广义的还包括DIP和CAD,现在CG的概念正 在扩大,由CG和虚拟真实技术制作的媒体文化,都可以归于CG范畴,它们已经形成一个可观的经济产业,所以提到CG时一般可以分成四个主要领域:
一、CG艺术与设计
 包括二维、三维的,静止画、动画(movie),从自由创作、服装设计、工业设计、电视广告(CM)到网页设计,可谓包罗万象。
二.游戏(Game)软件
 电子游戏开始于美国,日本的软件使之风靡世界。1993年任天堂公司推出了8比特的专用游戏机,到1996年达到了64比特。但硬件的性能再好,没有有趣的软件也是徒然。游戏公司凭借日本动画,漫画的文化积累,充分运用CG,一举形成了世界注目的游戏产业。在不到20年的时间里,发展到数十兆日圆的规模。任天堂(Nintendo),Sega,索尼(Sony)等国际知名的企业成了电子游戏的代名词
三、动画(Animation)
 从手冢治虫的‘铁臂阿童木’起,日本的动画就广为世界所熟悉,在电脑普及之前,靠手工绘制的动画已经成了日本的朝阳产业。但在人工费等成本不断上涨中,如果没有导入电脑就很难想象动画产业今天的规模。动画大师宫崎骏的新作品一再创造了票房的新记录。日本虽有东映那样的制作‘影院动画’的大公司,但大部分的作品还是出自小公司,小公司在很多制作方面又要委托零细的加工专业和个人制作者。整个产业的从业员约有3.4千人,每星期在日本的电视上放映的动画连续剧有30多本,加上映象产品,定制作品等,他们的产量每个月差不多达到200本,尽管有部分在海外加工,但日本动画业在简陋的条件下(相对与其他制造业生产而言)达到的质量与产量是惊人的。没有CG,动画的大量生产是难以想象的。
四、漫画(Comic)
 在导入CG前,漫画在日本已经是一个成熟的文化产业,是深受男女老少喜爱的大众文化。有幼儿漫画、少男漫画、小女漫画、青年漫画、女性漫画、成人漫画等等,有覆盖各个年龄层次的内容与风格。随着读者的年龄增大,老年漫画也开始出现。虽然漫画家们主要还是采用手绘,然后用扫描仪进行数码化,便贴纸等很多技法采用了photoshop之类的软件。年轻一代越来越习惯于用数码输入板和illustrator painer一类的软件直接创作,或者用数码相机的素材加工成漫画

TOP

hr是什么意思?
如果站于企业管理、企业运作的角度,那么hr是人力资源的通用简称,但如果有其他上下文存在,则不确定,例如说hr还代表防火设备等等(不相信的请留意一些大厦的消防铨),另,如希望了解人力资源相关知识,建议到这里走走!
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

什么是RSS

RSS(即RDF Site Summary)是一种描述互联网内容的格式。目前RSS应用的最广泛的还是在Blog也就是网志中。

我们经常会在一些Blog上看到这样的图标,或者是诸如“syndicate this site (XML)”之类的文字,这些图标和文字所对应的超级链接通常也就是该Blog的RSS输出文件的URL。一般情况下这些RSS文件是以xml或者使rdf为后缀的,但是也有一些网站采用动态地址来定位RSS文件。

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

在国内大多数Blog用户都使用Blog托管网站提供的免费Blog服务,例如:blogdriver,blogbus等。这些托管网站提供的RSS文件输出地址一般都是动态地址,用户需要在Blog页面上寻找图标来找到RSS文件的地址,对于blogdriver的用户来讲,你们的RSS文件链接就在目录栏的最下方,RSS1.0, RSS2.0, ATOM等字样处。目前本网站支持RSS1.0和2.0格式。使用其他Blog工具或者服务商的用户可以去阅读相应的帮助文件或者是服务网站的帮助页面,应该可以找到相应的说明。
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

什么是x86?  ---from wikipedia

x86或80x86是英代尔Intel首先开发制造的一种微处理器体系结构的泛称。

该系列较早期的处理器名称是以数字来表示,并以“86”作为结尾,包括Intel 8086、80186、80286、80386以及80486,因此其架构被称为“x86”。由于数字并不能作为注册商标,因此Intel及其竞争者均在新一代处理器使用可注册的名称,如Pentium。现时Intel把x86-32称为IA-32,全名为Intel Architecture, 32-bit。不过由于x86包括16位的处理器,这样的命名也出现麻烦。

目录
1 历史
2 设计
2.1 真实模式
2.2 16位元保护模式
2.3 32位元保护模式
2.4 MMX和之后
2.5 3DNow!
2.6 SSE
2.7 SSE2
2.8 SSE3
2.9 64位元
2.10 虚拟

历史
x86架构于1978年推出的Intel 8086中央处理器中首度出现,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。8086在三年后为IBM PC所选用,之后x86便成为了个人电脑的标准平台,成为了历来最成功的CPU架构。

其他公司也有制造x86架构的处理器,计有Cyrix(现为VIA所收购)、NEC集团、IBM、IDT以及Transmeta。Intel以外最成功的制造商为AMD,其Athlon系列处理器的市场仅次于Pentium。

8086是16位元处理器;直到1985年32位元的80386的开发,这个架构都维持是16位元。接著一系列的处理器表示了32位元架构的细微改进,推出了数种的扩充,直到2003年AMD对于这个架构发展了64位元的扩充,并命名为AMD64(有时也被称作x86-64,x64或EM64T),推出了Opteron处理器家族,开创了x86的64位时代。

值得注意的是Intel早在1990年代就与惠普合作提出了一种用在安腾系列处理器中的独立的64位架构,这种架构被称为IA-64。IA-64是一种崭新的系统,和x86架构完全没有相似性;不应该把它与AMD64或x86-64弄混。

设计
x86架构是重要地可变指令长度的CISC(复杂指令集电脑,Complex Instruction Set Computer)。字组(word, 4字节)长度的内存存取允许不对齐内存位址,字组是以低位字节在前的顺序储存在内存中。向前兼容性一直都是在x86架构的发展背后一股驱动力量(设计的需要决定了这项因素而常常导致批评,尤其是来自对手处理器的拥护者和理论界,他们对于一个被广泛认为是是落后设计的架构的持续成功感到不解)。但在较新的微架构中,x86处理器会把x86指令转换为更像RISC的微指令再予执行,从而获得可与RISC比拟的超标量性能,而仍然保持向前兼容。

在这篇简短的文章中出现的指令和暂存器助忆符号的名称,都在Intel文件种有所指定以及使用在 Intel组译器中(和兼容的,比如微软的MASM、Borland的TASM、CAD-UL的as386 等等)。一个以Intel语法指定的指令"mov al, 30h"与AT&T语法的"movb $0x30, %al"相当,都是会被转译微两个位元的机器码"B0 30"(十六进制)。你可以发现在这段程序中的"mov"或 "al",都是原来的Intel助忆符号。如果我们想要的话,我们可以写一个组译器由程序码&#39;move immediate byte hexadecimally encoded 30 into low half of the first register&#39;(移动立即值位元十六进制编码30到第一个暂存器的低半部位),来产生相同的机器码。然而,传统上汇编器一直使用Intel的助忆符号。

x86组合语言会在x86 组合语言文章中有更详细的讨论。
真实模式
Intel 8086和8088有14个16位元暂存器。其中四个(AX, BX, CX, DX)是通用目的(尽管每个暂存器有额外的目的;举个例子:CX可以被用来当作loop(循环)指令的计数器。每个暂存器可以被当成两个分开的字节存取(因此BX的高位元可以被当成BH以及低位元BL)。除了这些暂存器, 还有四个区段暂存器(CS、DS、SS、ES)。他们用来产生内存的寻址。还有两个指标暂存器(SP是指向堆叠的底部, BP可以用来指向堆叠或内存的其它地方)。两个指标暂存器(SI和DI)可以用来指向阵列的内部。最后,有旗标暂存器(包含状态旗标比如进制、溢位、结果为零,等等)。以及IP是用来指向目前执行指令个位址。

在真实模式下,内存的存取是被区段开来。为了得到最后20位元的内存位址,要将区段的位址往左移动4位元,并且加上偏移的位址。因此,真实模式下总共可以寻址的空间是220字节, 或者是1MB,于1979年是相当让人印象深刻的象征。在真实模式下有两种寻址模式:near和far。在 far模式,区段跟偏移都需要被指定;在near模式,只需要偏移模式被指定,而内存区段是由适当的区段暂存器获得。以资料而言是使用DS暂存器,程序码是CS暂存器,堆叠是SS暂存器。举个例子,如果DS是A000h且SI是5677h,DS:SI会指向计忆体的绝对位址DS × 16 + SI = A5677h

在这种架构下,两对不同的区段/篇移可以指向一个相同的绝对位址。因此如果DS是A111h且SI是4567h,DS:SI会指向跟上一段相同的A5677h。除了duplicity之外,这种架构无法同时一次拥有4个以上的区段。此外,CS、DS和SS是为了程序正确功能而必须的,因此仅仅只有ES可以被用来指向其它的地方。这种模式原本是为了与Intel 8085兼容,导致程序设计师永无止尽的痛苦。

除了以上所说的,8086也拥有8-bit的64K(另一种说法是16-bit的32K)输出输入(en:I/O)空间,以及一个由硬件支援的64K(一个区段)内存堆叠。只有words(2字节)可以被推入到堆叠中。堆叠是由内存的上端往下成长,他的底端是由SS:SP指向。有256个中断(interrupts),可以由硬件或是软件同时组成。中断是可以串连在一起,使用堆叠来储存返回被中断的程序位址。

16位元保护模式
Intel 80286可以在不改变任何东西下支援8086的真实模式16位元软件,然而它也支援额外的工作模式称为保护模式,可以将可寻址的实体内存扩充到16MB,可寻址的虚拟内存最大到 1GB。这是使用节区暂存器来储存在节区表格中的索引值。处理器中有两个这样的表格,分别为GDT和LDT,每一个可以储存最多8192个节区的描述子,每一个节区可以给予最大到64KB的内存存取。节区表格提供一个24位元的基底位址(base address),可以用此基底位址增加想要的偏移量来创造出一个绝对位址。此外,每一个节区可以被赋予四种权限等级中的一种(称为 "rings")。

尽管这个推出的功能是一项进步,但是他们并没有被广泛地使用,因为保护模式的操作系统无法执行现有的真实模式软件。这样的能力只有在随后80386处理器的虚拟86模式中出现。

在同时,操作系统比如OS/2尝试使用类似乒乓的方法,让处理器在保护和真实模式间切换。这样都会让电脑变慢且不安全,像是在真实模式下的程序可以轻易地使电脑当机。OS/2也定义了限制性的程序设计规则允许"Family API"或"bound"程序可以在真实模式或保护模式下执行。然而这是给原本为保护模式下设计的程序有关,反之则不然。保护模式程序并不支援节区选择子和实体内存之间的关系。有时候会错误地相信在16位元保护模式下执行真实模式的程序,导致IBM必须选择使用Intel保留给BIOS的中断呼叫。事实上这类的程序使用任意的选择子数值和使用在上面提到的“节区运算”的方式有关。

这个问题也在Windows 3.x上出现。这个推出版本想要在16位元保护模式下执行程序,而先前的版本只能在真实模式下执行。理论上,如果Windows 1.x或2.x程序是写得“适当”且避免使用节区运算的方式,它就有可能在真实和保护模式两者下执行。Windows程序一般来说都会避免节区运算,这是因为Windows实作出软件的虚拟内存方式,及当程序不执行时候,搬移内存中的程序码和资料,所以操作绝对位址的方式是很危险的;当程序不执行时,被认为要保持内存区块的“handles”,这样的handles已经非常相当于保护模式的选择子。在保护模式下的Windows 3.0执行一个旧的程序,会触发一个警告对话盒,建议在真实模式下执行Windows(推测还是仍然可以使用扩充内存,可能是在80386机器用EMM386模拟,因此它并不被局限于640KB)或是从厂商那更新到新的版本。好的行为之程序可能可以使用特别的工具来避免这样的对话盒。不可能有些GUI程序在16位元保护模式下执行,且其它GUI程序在真实模式执行,可能是因为这会需要两个分开的环境且会依于前面所提到的处理器在两个模式间的乒乓效应。从Windows 3.1版开始,真实模式就消失了。

32位元保护模式
Intel 80386推出后,也许是到目前为止x86架构的最大跃进。除了需要值得注意的Intel 80386SX是32位元架构但仅只有24位元寻址(和16位元资料总线)。除此之外其他架构都是32位元 - 所有的暂存器、指令集、输出输入空间和内存寻址。为了能够在后者所说的功能工作,要使用32位元扩充的保护模式。然而不像286、386所有的区段可以使用32位元的偏移量,即使内存空间有使用区段,但也允许应用程序存取超过4GB空间而不需要区段的分隔。此外,32位元保护模式提供分页的支援,是一种让虚拟内存得以实现的机制。

没有新的通用暂存器被加入。所有16位元的暂存器除了区段暂存器外都扩充为32位元。Intel在暂存器的助记符号上加入“E”来表示(因此扩充的AX变成EAX,SI变成ESI,依此类推)。因为有更多的暂存器数量、指令、和运算单元,因此机器码的格式也被扩充。为了提供与先前的架构兼容,包含执行码的区段可以被标示为16或是32位元的指令集。此外,特殊的前置符号也可以用来在16位元的区段包含32位元的指令码,反之亦然。

分页跟区段的内存存取是为了支援现在多工操作系统所必须要的。Linux、386BSD、Windows NT和Windows 95都是一开始为386所发展,因为它是第一颗提供可靠地程序分离内存空间的支援(每个程序拥有自己的寻址空间)以及可以在必要的情况下打断他们程序的执行(使用ring,一种x86保护模式下权力分级的名称)。这种386的基本架构变成未来所有x86系列发展的基础。

Intel 80386数学辅助运算处理器也在整合到这个CPU之后的x86系列中,也就是Intel 80486。新的FPU可以帮助浮点数运算,对于科学计算和图形设计是非常重要。
MMX和之后
1996年Intel的MMX(AMD认为这是矩阵数学扩充Matrix Math Extensions的缩写,但大多数时候都被当成Multi-Media Extension,而Intel从来没有官方宣布过词源)技术出现。尽管这项新的科技得到广泛宣传,但它的精髓是非常简单的:MMX定义了八个64位元SIMD暂存器,与Intel Pentium处理器的FPU堆叠有相重叠。不幸的是,这些指令无法非常简单地对应到由原来C编译器所产生的指令码中。MMX也只局限于整数的运算。这项技术的缺点导致MMX在它早期的存在有轻微的影响。现今,MMX通常是用在某些2D影片应用程序中。
3DNow!
1997年AMD推出3DNow!,是对于MMX的SIMD的浮点指令增强(针对相同的 MMX 暂存器)。尽管这些也没有解决编译器的难题,但这项技术的推出符合了PC上的3D休闲娱乐应用程序之崛起。3D游戏开发者和3D绘图硬件制造商在AMD的AMD K6和Athlon系列处理器上,使用3DNow!来帮助增加他们的效能。

SSE
在1999年Intel推出SSE指令集,增加了八个新的128-bit暂存器(不跟其他的暂存器重叠使用)。这些指令类似于AMD的3DNow!,主要是增加浮点数运算的SIMD指令。
SSE2
2001年Intel推出SSE2指令集,增加了:1)完整地补充了整数指令(与MMX相似)到原来的SSE暂存器,和2)64位元的SIMD浮点运算指令到原来的SSE暂存器。第一个的增加导致MMX几乎是过时可以舍弃的),第二个则允许这些指令可以让传统的编译器现实地产生。

SSE3
于2004年随著Pentium 4处理器的改版Prescott推出。SSE3增加特定的内存和thread-handling指令来提升Intel超执行绪的效能,在科学计算方面也有增强。
64位元
到2002年,由于32位元特性的长度,x86的架构开始到达某些设计的极限。这个导致要处理大量的资讯储存大于4GB会有困难,像是在数据库或是影片编辑上可以发现。

Intel原本已经决定在64位元的世代完全地舍弃x86兼容性,推出新的架构称为IA-64技术作为他的Itanium处理器产品线的基础。IA-64与x86的软件天生不兼容;它使用各种模拟形式来执行x86的软件,不过,以模拟方式来运行的效率十分低下,并且会影响其他程序的运行。

AMD主动把32位元x86,或称为IA-32扩充为64位元。它与一个称为AMD64的架构出现(在重新命名前也称为x86-64),且以这个技术为基础的第一个产品是Opteron和Athlon 64处理器家族。由于AMD64处理器产品线的成功,Intel采取AMD64指令集且增加某些新的扩充到他们自己的产品,命名为EM64T架构(显然地他们不想承认这些指令集是来自它的主要对手)。

这是由非Intel的制造商所发起和设计的第一次重大的x86架构升级。也许更重要的,它也是第一次Intel实际上从外部来源接受这项本质的技术。

虚拟
虚拟x86是很困难的,因为它的架构并无达到Popek and Goldberg virtualization requirements。然而,有好几个商业的虚拟x86产品,比如VMware和微软的Virtual PC。Intel和AMD两者都有公开宣布未来的x86处理器将会有新的增强来容易达到更有效率的虚拟。Intel针对这项虚拟特性的代号称为"Vanderpool"和"Silvervale";AMD则使用"Pacifica"这个代号。

TOP

什么是PHP?

PHP 是一种流行的开放源代码的编程语言,主要用于开发服务器端应用程序及动态网页。PHP原始的缩写是“Personal HomePage”,现在官方正式定为“PHP: Hypertext Preprocessor”的递归缩写。

PHP程序是开放源代码最多的一种脚本语言,著名的PHP程序有Mambo、phpBB和MediaWiki等。PHP可以用于替代微软的ASP/VBScript/JScript体系、Sun微系统公司的JSP/Java体系,以及CGI/Perl等。它是一种嵌入HTML页面中的脚本语言。

PHP在Web服务器上运行。当PHP脚本被客户端请求时,被请求的程序开始执行,并把执行的结果返回给客户端的网页浏览器。发送给客户端浏览器的内容是普通的HTML文本,不包含PHP代码。这是与嵌入HTML的客户端脚本(例如JScript/VBScript等)的最主要的区别。

在有了PHP-GTK扩展的支持后,现在的PHP已经可以被用来编写窗口程序了,PHP4版本以后, PHP也可以用来编写后台SHELL脚本程序,甚至有用PHP程序编写WEB服务器。

PHP的特性
虽然PHP可以作为单独的CGI进程运行,但是目前的主流是将PHP作为Web服务器的模块来使用。一般的CGI方式运行时,每处理一个请求就要启动一个CGI进程,当请求繁忙时,这将给服务器带来繁重的负担。作为Web服务器的模块运行就可以很好地降低服务器的负担,提高处理效率。但CGI的安全性更好,由于CGI在单独的进程中运行,即使崩溃,也不会影响Web服务器,但作为模块,如果PHP崩溃,那么Web服务器也会崩溃。

PHP不是线程安全的,所以PHP的官方手册不推荐使用Apache 2.0的多线程模式。

PHP可以在Unix、Linux、Windows等多种操作系统上运行。支持的Web服务器包括常见的Apache、IIS、Netscape/iPlanet等。

PHP支持目前流行的大多数数据库应用程序,例如Infomix、InterBase、mSQL、MySQL、Oracle、PostgreSQL、Sybase、ODBC、SQLServer等。

因为以Linux, Apache, MySQL, PHP/Perl或Python作为低廉, 可靠, 可升级, 安全网站平台的普遍, MySQL的David Axmark 和 Monty Widenius 把这平台取名为“LAMP” 。

TOP

什么是VPN?

虚拟私人网络,又称为虚拟专用网络或英文简称VPN,是一种常用于连接中、大型企业或团体与团体间的私人网络的通讯方法。虚拟私人网络的讯息透过公用的网络架构(例如:互联网)来传送内联网的网络讯息。

Virtual Private Network (VPN) 虚拟私人网络利用已加密的通道协议(Tunneling Protocol)来达到保密、传送端认证、讯息准确性等私人讯息安全效果。若使用得法,这种技术可以用不安全的网络(例如:因特网)来传送可靠、安全的讯息。需要注意的是,加密讯息与否是可以控制的。没有加密的虚拟私人网络讯息依然有被窃取的危险。

以日常生活的例子来比喻,虚拟私人网络就像:甲公司某部门的某甲想寄信去乙公司某部门的某乙。某甲已知某乙的地址及部门,但公司与公司之间的信不能注明部门名称。于是,某甲请自己的秘书把指定某乙所收部门的信(某甲可以选择是否以密码与某乙通讯)放在寄去某乙公司地址的大信封中。当乙公司的秘书收到从甲公司寄到乙公司的信件后,该秘书便会把放在该大信封内的指定部门信件以公司内部邮件方式寄给某乙。同样地,某乙会以同样的方式回信给某甲。

在以上例子中,某甲及某乙是身处不同公司(内联网络)的计算机(或相关机器),透过一般邮寄方式(公用网络)寄信给对方,再由对方的秘书(例如:支援虚拟私人网络的路由器或防火墙)以公司内部信件(内部网络)的方式寄至对方本人。请注意,在虚拟私人网络中,因应网络架构,秘书及收信人可以是同一人。许多现在的操作系统,例如Windows及Linux等因应所用传输协议,已有能力不用透过其它网络设备便能达到虚拟私人网络连接。

常用的虚拟私人网络协定有:

IPSec
PPTP
SSL
L2F
L2TP

TOP