发新话题
打印

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

什么是双通道内存

  双通道内存技术其实是一种内存控制和管理技术,它依赖于芯片组的内存控制器发生作用,在理论上能够使两条同等规格内存所提供的带宽增长一倍。它并不是什么新技术,早就被应用于服务器和工作站系统中了,只是为了解决台式机日益窘鹊哪诖娲砥烤蔽侍馑抛叩搅颂ㄊ交靼寮际醯那疤āT诩改昵埃⑻囟驹瞥隽酥С炙ǖ滥诖娲浼际醯膇820芯片组,它与RDRAM内存构成了一对黄金搭档,所发挥出来的卓绝性能使其一时成为市场的最大亮点,但生产成本过高的缺陷却造成了叫好不叫座的情况,最后被市场所淘汰。由于英特尔已经放弃了对RDRAM的支持,所以目前主流芯片组的双通道内存技术均是指双通道DDR内存技术,主流双通道内存平台英特尔方面是英特尔 865/875系列,而AMD方面则是NVIDIA Nforce2系列。

  双通道内存技术是解决CPU总线带宽与内存带宽的矛盾的低价、高性能的方案。现在CPU的FSB(前端总线频率)越来越高,英特尔 Pentium 4比AMD Athlon XP对内存带宽具有高得多的需求。英特尔 Pentium 4处理器与北桥芯片的数据传输采用QDR(Quad Data Rate,四次数据传输)技术,其FSB是外频的4倍。英特尔 Pentium 4的FSB分别是400/533/800MHz,总线带宽分别是3.2GB/sec,4.2GB/sec和6.4GB/sec,而DDR 266/DDR 333/DDR 400所能提供的内存带宽分别是2.1GB/sec,2.7GB/sec和3.2GB/sec。在单通道内存模式下,DDR内存无法提供CPU所需要的数据带宽从而成为系统的性能瓶颈。而在双通道内存模式下,双通道DDR 266/DDR 333/DDR 400所能提供的内存带宽分别是4.2GB/sec,5.4GB/sec和6.4GB/sec,在这里可以看到,双通道DDR 400内存刚好可以满足800MHz FSB Pentium 4处理器的带宽需求。而对AMD Athlon XP平台而言,其处理器与北桥芯片的数据传输技术采用DDR(Double Data Rate,双倍数据传输)技术,FSB是外频的2倍,其对内存带宽的需求远远低于英特尔 Pentium 4平台,其FSB分别为266/333/400MHz,总线带宽分别是2.1GB/sec,2.7GB/sec和3.2GB/sec,使用单通道的DDR 266/DDR 333/DDR 400就能满足其带宽需求,所以在AMD K7平台上使用双通道DDR内存技术,可说是收效不多,性能提高并不如英特尔平台那样明显,对性能影响最明显的还是采用集成显示芯片的整合型主板。

  NVIDIA推出的nForce芯片组是第一个把DDR内存接口扩展为128-bit的芯片组,随后英特尔在它的E7500服务器主板芯片组上也使用了这种双通道DDR内存技术,SiS和VIA也纷纷响应,积极研发这项可使DDR内存带宽成倍增长的技术。但是,由于种种原因,要实现这种双通道DDR(128 bit的并行内存接口)传输对于众多芯片组厂商来说绝非易事。DDR SDRAM内存和RDRAM内存完全不同,后者有着高延时的特性并且为串行传输方式,这些特性决定了设计一款支持双通道RDRAM内存芯片组的难度和成本都不算太高。但DDR SDRAM内存却有着自身局限性,它本身是低延时特性的,采用的是并行传输模式,还有最重要的一点:当DDR SDRAM工作频率高于400MHz时,其信号波形往往会出现失真问题,这些都为设计一款支持双通道DDR内存系统的芯片组带来不小的难度,芯片组的制造成本也会相应地提高,这些因素都制约着这项内存控制技术的发展。

  普通的单通道内存系统具有一个64位的内存控制器,而双通道内存系统则有2个64位的内存控制器,在双通道模式下具有128bit的内存位宽,从而在理论上把内存带宽提高一倍。虽然双64位内存体系所提供的带宽等同于一个128位内存体系所提供的带宽,但是二者所达到效果却是不同的。双通道体系包含了两个独立的、具备互补性的智能内存控制器,理论上来说,两个内存控制器都能够在彼此间零延迟的情况下同时运作。比如说两个内存控制器,一个为A、另一个为B。当控制器B准备进行下一次存取内存的时候,控制器A就在读/写主内存,反之亦然。两个内存控制器的这种互补“天性”可以让等待时间缩减50%。双通道DDR的两个内存控制器在功能上是完全一样的,并且两个控制器的时序参数都是可以单独编程设定的。这样的灵活性可以让用户使用二条不同构造、容量、速度的DIMM内存条,此时双通道DDR简单地调整到最低的内存标准来实现128bit带宽,允许不同密度/等待时间特性的DIMM内存条可以可靠地共同运作。

  支持双通道DDR内存技术的台式机芯片组,英特尔平台方面有英特尔的865P/865G/865GV/865PE/875P以及之后的915/925系列;VIA的PT880,ATI的Radeon 9100 IGP系列,SIS的SIIS 655,SIS 655FX和SIS 655TX;AMD平台方面则有VIA的KT880,NVIDIA的nForce2 Ultra 400,nForce2 IGP,nForce2 SPP及其以后的芯片。

TOP

什么是PHP

  PHP 是一种用来制作动态网页的服务器端脚本语言。你通过PHP和HTML创建页面。当访问者打开网页时,服务器端便会处理PHP指令,然后把其处理的结果送到访问者的浏览器上面,就好象ASP或者ColdFusion一样。然而,PHP跟ASP或ColdFusion不一样的地方在于,它是跨平台的开放源代码。PHP可以在WindowsNT以及很多不同的UNIX版本中执行,它也可以被编译为一个Apache模块,或者是一个GGI二进制文件。
  ---------------------------
PHP区别其他像客户端Javascript的地方是它的代码在服务器端执行.PHP能做什么?
  最低水平,PHP可以做任何其他CGI程序所能做的事,例如收集表格数据,生成动态页面内容,或者收发cookies.可能最强大,最有意义的特性是PHP支持大范围的数据库.书写一个支持数据库的Web 页面是难以置信的简单.
  下面是当前支持的数据库: (1999年)
  Adabas D InterBase Solid
  dBase mSQL Sybase
  Empress MySQL Velocis
  FilePro Oracle Unix dbm
  Informix PostgreSQL
  PHP通过协议也支持与其他服务的"交谈",像IMAP, SNMP, NNTP, POP3, 甚至是 HTTP. 你也可以打开晦涩的 网络接口和其他协议交互.
PHP的简要历史
  1994年秋季, Rasmus Lerdorf 开始构思 PHP. 早期的非发行版本被用在他的主页上,以追踪谁在看他的在线简历. 1995年年初第一版本出台,当时PHP只被认为是个人主页开发工具.它由一个非常单纯的只能理解很少数特殊宏的分析引擎和 一些用在主页后端通用的工具组成.如留言簿,计数器和其他一些东西.这个分析器在1995年年中被重写并被命名为 PHP/FI 第二版. FI来自 Rasmus 写的另外一个包, 用于解释 html 形式的数据.他结合了个人主页工具脚本和形式解析器,并加 上mSQL支持.这样就产生 PHP/FI 了. PHP/FI以令人惊奇的步调成长,人们开始把自己的代码贡献给它.
  很难给出它的硬统计表,但可以估计在1996年末,整个世界至少有15,000个网站在用PHP/FI.到1997年年中,这个 数字已经超过50,000了. 而在此时PHP的发展也发生了变化.由Rasmus自己偏爱的和几个人开发的项目变成一个更有组织的团 体成就.Zeev Suraski和Andi Gutmans重写了解析器.这个新的解析器成为PHP版本3的基础.许多有用的代码从PHP/FI 继承到PHP3,并且很多是完全重写的.
  1999年不管是PHP/FI或PHP3与很多商业产品捆绑在一块,例如C2级强度的Web服务器和红帽子Linux. 根据NetCraft提供的数据推断,保守估计全世界应用PHP的网站已超过150,000个.由此看来,它比在因特网上运行Netscape 的旗舰企业服务器的站点还多.

TOP

什么是路由器

   要解释路由器的概念,首先得知道什么是路由。所谓“路由”,是指把数据从一个地方传送到另一个地方的行为和动作,而路由器,正是执行这种行为动作的机器,它的英文名称为Router,是一种连接多个网络或网段的网络设备,它能将不同网络或网段之间的数据信息进行“翻译”,以使它们能够相互“读懂”对方的数据,从而构成一个更大的网络。

   简单的讲,路由器主要有以下几种功能:
   第一,网络互连,路由器支持各种局域网和广域网接口,主要用于互连局域网和广域网,实现不同网络互相通信;
   第二,数据处理,提供包括分组过滤、分组转发、优先级、复用、加密、压缩和防火墙等功能;
   第三,网络管理,路由器提供包括配置管理、性能管理、容错管理和流量控制等功能。
   为了完成“路由”的工作,在路由器中保存着各种传输路径的相关数据--路由表(Routing Table),供路由选择时使用。路由表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路由表可以是由系统管理员固定设置好的,也可以由系统动态修改,可以由路由器自动调整,也可以由主机控制。在路由器中涉及到两个有关地址的名字概念,那就是:静态路由表和动态路由表。由系统管理员事先设置好固定的路由表称之为静态(static)路由表,一般是在系统安装时就根据网络的配置情况预先设定的,它不会随未来网络结构的改变而改变。动态(Dynamic)路由表是路由器根据网络系统的运行情况而自动调整的路由表。路由器根据路由选择协议(Routing Protocol)提供的功能,自动学习和记忆网络运行情况,在需要时自动计算数据传输的最佳路径。
   为了简单地说明路由器的工作原理,现在我们假设有这样一个简单的网络。如图所示,A、B、C、D四个网络通过路由器连接在一起。

现在我们来看一下在如图所示网络环境下路由器又是如何发挥其路由、数据转发作用的。现假设网络A中一个用户A1要向C网络中的C3用户发送一个请求信号时,信号传递的步骤如下:
   第1步:用户A1将目的用户C3的地址C3,连同数据信息以数据帧的形式通过集线器或交换机以广播的形式发送给同一网络中的所有节点,当路由器A5端口侦听到这个地址后,分析得知所发目的节点不是本网段的,需要路由转发,就把数据帧接收下来。
   第2步:路由器A5端口接收到用户A1的数据帧后,先从报头中取出目的用户C3的IP地址,并根据路由表计算出发往用户C3的最佳路径。因为从分析得知到C3的网络ID号与路由器的C5网络ID号相同,所以由路由器的A5端口直接发向路由器的C5端口应是信号传递的最佳途经。
   第3步:路由器的C5端口再次取出目的用户C3的IP地址,找出C3的IP地址中的主机ID号,如果在网络中有交换机则可先发给交换机,由交换机根据MAC地址表找出具体的网络节点位置;如果没有交换机设备则根据其IP地址中的主机ID直接把数据帧发送给用户C3,这样一个完整的数据通信转发过程也完成了。
   从上面可以看出,不管网络有多么复杂,路由器其实所作的工作就是这么几步,所以整个路由器的工作原理基本都差不多。当然在实际的网络中还远比上图所示的要复杂许多,实际的步骤也不会像上述那么简单,但总的过程是这样的。

TOP

PCI总线


 90年代,随着图形处理技术和多媒体技术的广泛应用,在以Windows为代表的图形用户接口(GUI)进入PC机之后,要求有高速的图形描绘能力和I/O处理能力。这不仅要求图形适配卡要改善其性能,也对总线的速度提出了挑战。实际上当时外设的速度已有了很大的提高,如硬磁盘与控制器之间的数据传输率已达10MB/s以上,图形控制器和显示器之间的数据传输率也达到69MB/s。通常认为I/O总线的速度应为外设速度的3-5倍。因此原有的ISA、EISA已远远不能适应要求,而成为整个系统的主要瓶颈。因此对总线提出了更高的性能要求,从而促使了总线技术进一步发展。  

 1991年下半年,Intel公司首先提出了PCI的概念,并联合IBM、Compaq、AST、HP、DEC等100多家公司成立了PCI集团,其英文全称为:Peripheral Component Interconnect Special Interest Group(外围部件互连专业组),简称PCISIG。PCI是一种先进的局部总线,已成为局部总线的新标准。PCI总线插槽如图所示。




二、PCI局部总线的主要性能和特点  

 PCI总线是一种不依附于某个具体处理器的局部总线。从结构上看,PCI是在CPU和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。管理器提供了信号缓冲,使之能支持10种外设,并能在高时钟频率下保持高性能。PCI总线也支持总线主控技术,允许智能设备在需要时取得总线控制权,以加速数据传送。

1.PCI总线的主要性能
·支持10台外设
·总线时钟频率33.3MHz/66MHz
·最大数据传输速率133MB/s
·时钟同步方式
·与CPU及时钟频率无关
·总线宽度 32位(5V)/64位(3.3V)
·能自动识别外设
·特别适合与Intel的CPU协同工作


2.其它特点
·具有与处理器和存储器子系统完全并行操作的能力
·具有隐含的中央仲裁系统
·采用多路复用方式(地址线和数据线)减少了引脚数
·支持64位寻址 ·完全的多总线主控能力
·提供地址和数据的奇偶校验
·可以转换5V和3.3V的信号环境

三、PCI总线信号定义
必要引脚控设备49条
目标设备47条
可选引脚51条(主要用于64位扩展、中 断请求、高速缓存支持等)
总引脚数120条(包含电源、地、保留 引脚等)

TOP

什么是AGP总线

  AGP(Accelerated Graphics Port,图形加速端口),是Intel公司推出的新一代图形显示卡专用总线,它将显示卡同主板芯片组直接相连,进行点对点传输,大幅提高了电脑对3D图形的显示能力,也将原先占用的大量PCI带宽资源留给了其它PCI插卡。在AGP插槽上的AGP显示卡,其视频信号的传送速率可以从PCI总线的133MB/s提高到533MB/s。AGP的工作频率为66.6MHz,是现行PCI总线的一倍,最高可以提高到133MHz或更高,传送速率则会达到1GB/s以上。
  AGP的实现依赖两个方面,一是支持AGP的芯片组/主板,二是AGP显示卡,目前市场上已能见到这两种产品。

TOP

什么是FLAC
损音频压缩格式FLAC——FREE LOSSLESS AUDIO CODEC
 

FLAC代表 Free Lossless Audio Codec - 免费的无损音频压缩 。
简而言之,FLAC与MP3相仿,但是是无损压缩的,也就是说音频以FLAC方式压缩不会丢失任何信息。这种压缩与Zip的方式类似,但是FLAC将给你更大的压缩比率,因为FLAC是专门针对音频的特点设计的压缩方式,并且你可以使用播放器播放FLAC压缩的文件,就象通常播放你的MP3文件一样(现在已经有许多汽车播放器和家用音响设备支持FLAC,在FLAC的网站上你可以找到这些设备厂家的连接)。

FLAC是免费的并且支持大多数的操作系统 ,包括Windows, "unix" (Linux, *BSD, Solaris, OS X, IRIX), BeOS, OS/2, 和Amiga。并且FLAC提供了在开发工具autotools, MSVC, Watcom C, 和Project Builder上的build系统。

FLAC项目包括以下几个方面:
数据流的格式
以库的形式提供的参考编码器和解码器
flac, 一个以命令行方式工作的可以编解码FLAC文件的程序(译注:有些象Lame吧?)
metaflac, 以命令行方式工作的FLAC文件的metadata编辑器
不同音频播放器的输入插件

我们所说的“FLAC是免费的”不仅仅意味着你可以不花钱而得到它。更重要的是FLAC的文件格式是对公众完全开放的,你可以以任何目的使用它(FLAC 项目只保留维护 FLAC 格式规格和确认兼容特性的权利),FLAC的文件格式和编码/解码的实现方式都不受任何已知专利的限制。还有,所有的源代码都在开放源代码的授权方式下可以得到。
FLAC是世界上第一个完全开放和免费的无损音频压缩格式 。

FLAC的特性:

无损失压缩: 被编码的音频(PCM)数据没有任何信息损失,解码输出的音频与编码器的输入的每一个字节都是一样的。每个数据帧都有一个当前帧的 16-bit CRC 校验码,用于监测数据传输错误。对整段音频数据,在文件头中还保存有一个针对原始未压缩音频数据的MD5标记,用于在解码和测试时对数据进行校验。

快速: FLAC更看重解码的速度。解码只需要整数运算,并且相对于大多数编码方式而言,对计算速度要求很低。在很普通的硬件上就可以轻松实现实时解码。

硬件支持: 由于FLAC提供了免费的解码范例,而且解码的复杂程度低,所以FLAC是目前唯一获得硬件支持的无损压缩编码。

可以流化: FLAC的每个数据帧都包含了解码所需的全部信息。解码当前帧无需参照它前面或后面的数据帧。FLAC使用了同步代码和CRC(类似于MPEG等编码格式),这样解码器在数据流中跳跃定位时可以有最小的时间延迟。

可以定位: FLAC支持快速采样精确定位。这不仅对于播放有益,更使得FLAC文件便于编辑。

富于弹性的metadata: 可以定义和实现新类型的metadata数据块,而不会影响旧的数据流和解码器的使用。目前已有的metadata类型包括tag,cue表,和定位表。已经注册的应用程序可以定义自己专用的metadata类型(译注:这一点与MIDI标准相似)。

非常适合于存档应用: FLAC是一个开放的编码格式,并且没有任何数据的损失,你可以将它转换为你需要的任何其他格式。除了每个数据帧的CRC和MD5标记对数据完整性的保障,flac(译注:FLAC项目提供的命令行方式编码工具)还提供了一个verify(校验)选项,当使用该选项进行编码的时候,编码的同时就会立即对已编码数据进行解码并与原始输入数据进行比较,一旦发现不同就会退出并且报警提示。(译者:怎么样,这样压缩出来的东西还有什么不放心的?)

便于对CD进行备份: FLAC有一个“cue表”metadata数据块用于保存CD的内容列表和所有音轨的索引点。你可以将一张CD保存到一个单一文件,并导入CD的cue表格,这样一个FLAC文件就可以完整地记录整张CD的全部信息。当你的原来的CD损坏的时候,你就可以用这个文件恢复出与原来一模一样的CD副本。

抗损伤: 由于FLAC的帧结构,使得一旦发生数据流的损坏,损失会被限制在受损伤的数据帧之内。一般只是会丢失很短的一个片段。而很多其他无损音频压缩格式在遇到损伤的时候,一个损伤就会造成后面所有数据的丢失。

FLAC不具有的特性:

数据缩水。FLAC是专门并且仅仅为无损压缩而设计的,您可以选用许多其他优秀的有损压缩方式如Vorbis, MPC, 和MP3(LAME提供了一个优秀的开放源代码的实现)。

SDMI(例如cetera)兼容。FLAC不准备支持任何复制保护方法,实际上这些手段最终都是在浪费数据。(从另一个角度看,由于所有这些手段最终都被证明是无效的,所以也可以说FLAC把这些无用数据压缩到了零!)当然我们不能阻止某些人利用专用的metablock进行复制保护,但是他们的保护只会在他们自己解码产品上有效,其他解码器会跳过这些专门的metablock的。

TOP

什么是64位技术   
  
   
   这里的64位技术是相对于32位而言的,这个位数指的是CPU GPRs(General-Purpose Registers,通用寄存器)的数据宽度为64位,64位指令集就是运行64位数据的指令,也就是说处理器一次可以运行64bit数据。64bit处理器并非现在才有的,在高端的RISC(Reduced Instruction Set Computing,精简指令集计算机)很早就有64bit处理器了,比如SUN公司的UltraSparc Ⅲ、IBM公司的POWER5、HP公司的Alpha等。

   64bit计算主要有两大优点:可以进行更大范围的整数运算;可以支持更大的内存。不能因为数字上的变化,而简单的认为64bit处理器的性能是32bit处理器性能的两倍。实际上在32bit应用下,32bit处理器的性能甚至会更强,即使是64bit处理器,目前情况下也是在32bit应用下性能更强。所以要认清64bit处理器的优势,但不可迷信64bit。

   目前主流CPU使用的64位技术主要有AMD公司的AMD64位技术、Intel公司的EM64T技术、和Intel公司的IA-64技术。其中IA-64是Intel独立开发,不兼容现在的传统的32位计算机,仅用于Itanium(安腾)以及后续产品Itanium 2,一般用户不会涉及到,因此这里仅对AMD64位技术和Intel的EM64T技术做一下简单介绍。

AMD64位技术
   AMD64的位技术是在原始32位X86指令集的基础上加入了X86-64扩展64位X86指令集,使这款芯片在硬件上兼容原来的32位X86软件,并同时支持X86-64的扩展64位计算,使得这款芯片成为真正的64位X86芯片。这是一个真正的64位的标准,X86-64具有64位的寻址能力。

   X86-64新增的几组CPU寄存器将提供更快的执行效率。寄存器是CPU内部用来创建和储存CPU运算结果和其它运算结果的地方。标准的32-bit x86架构包括8个通用寄存器(GPR),AMD在X86-64中又增加了8组(R8-R9),将寄存器的数目提高到了16组。X86-64寄存器默认位64-bit。还增加了8组128-bit XMM寄存器(也叫SSE寄存器,XMM8-XMM15),将能给单指令多数据流技术(SIMD)运算提供更多的空间,这些128位的寄存器将提供在矢量和标量计算模式下进行128位双精度处理,为3D建模、矢量分析和虚拟现实的实现提供了硬件基础。通过提供了更多的寄存器,按照X86-64标准生产的CPU可以更有效的处理数据,可以在一个时钟周期中传输更多的信息。

EM64T技术
   Intel官方是给EM64T这样定义的:EM64T全称Extended Memory 64 Technology,即扩展64bit内存技术。EM64T是Intel IA-32架构的扩展,即IA-32e(Intel Architectur-32 extension)。IA-32处理器通过附加EM64T技术,便可在兼容IA-32软件的情况下,允许软件利用更多的内存地址空间,并且允许软件进行32 bit线性地址写入。EM64T特别强调的是对32 bit和64 bit的兼容性。Intel为新核心增加了8个64 bit GPRs(R8-R15),并且把原有GRPs全部扩展为64 bit,如前文所述这样可以提高整数运算能力。增加8个128bit SSE寄存器(XMM8-XMM15),是为了增强多媒体性能,包括对SSE、SSE2和SSE3的支持。

   Intel为支持EM64T技术的处理器设计了两大模式:传统IA-32模式(legacy IA-32 mode)和IA-32e扩展模式(IA-32e mode)。在支持EM64T技术的处理器内有一个称之为扩展功能激活寄存器(extended feature enable register,IA32_EFER)的部件,其中的Bit10控制着EM64T是否激活。Bit10被称作IA-32e模式有效(IA-32e mode active)或长模式有效(long mode active,LMA)。当LMA=0时,处理器便作为一颗标准的32 bit(IA32)处理器运行在传统IA-32模式;当LMA=1时,EM64T便被激活,处理器会运行在IA-32e扩展模式下。

   目前AMD方面支持64位技术的CPU有Athlon 64系列、Athlon FX系列和Opteron系列。Intel方面支持64位技术的CPU有使用Nocona核心的Xeon系列、使用Prescott 2M核心的Pentium 4 6系列和使用Prescott 2M核心的P4 EE系列。

TOP

什么是双核处理器

  什么是双核处理器呢?双核处理器背后的概念蕴涵着什么意义呢?简而言之,双核处理器即是基于单个半导体的一个处理器上拥有两个一样功能的处理器核心。换句话说,将两个物理处理器核心整合入一个核中。企业IT管理者们也一直坚持寻求增进性能而不用提高实际硬件覆盖区的方法。多核处理器解决方案针对这些需求,提供更强的性能而不需要增大能量或实际空间。

  双核心处理器技术的引入是提高处理器性能的有效方法。因为处理器实际性能是处理器在每个时钟周期内所能处理器指令数的总量,因此增加一个内核,处理器每个时钟周期内可执行的单元数将增加一倍。在这里我们必须强调一点的是,如果你想让系统达到最大性能,你必须充分利用两个内核中的所有可执行单元:即让所有执行单元都有活可干!

  为什么IBM、HP等厂商的双核产品无法实现普及呢,因为它们相当昂贵的,从来没得到广泛应用。比如拥有128MB L3缓存的双核心IBM Power4处理器的尺寸为115x115mm,生产成本相当高。因此,我们不能将IBM Power4和HP PA8800之类双核心处理器称为AMD即将发布的双核心处理器的前辈。

  目前,x86双核处理器的应用环境已经颇为成熟,大多数操作系统已经支持并行处理,目前大多数新或即将发布的应用软件都对并行技术提供了支持,因此双核处理器一旦上市,系统性能的提升将能得到迅速的提升。因此,目前整个软件市场其实已经为多核心处理器架构提供了充分的准备。

  多核处理器的创新意义

  x86多核处理器标志着计算技术的一次重大飞跃。这一重要进步发生之际,正是企业和消费者面对飞速增长的数字资料和互联网的全球化趋势,开始要求处理器提供更多便利和优势之时。多核处理器,较之当前的单核处理器,能带来更多的性能和生产力优势,因而最终将成为一种广泛普及的计算模式。多核处理器还将在推动PC安全性和虚拟技术方面起到关键作用,虚拟技术的发展能够提供更好的保护、更高的资源使用率和更可观的商业计算市场价值。普通消费者也将比以往拥有更多的途径获得更高性能,从而提高他们家用PC和数字媒体计算系统的使用。

  在单一处理器上安置两个或更多强大的计算核心的创举开拓了一个全新的充满可能性的世界。多核心处理器可以为战胜今天的处理器设计挑战提供一种立竿见影、经济有效的技术――降低随着单核心处理器的频率(即“时钟速度”)的不断上升而增高的热量和功耗。多核心处理器有助于为将来更加先进的软件提供卓越的性能。现有的操作系统(例如MS Windows、Linux和Solaris)都能够受益于多核心处理器。在将来市场需求进一步提升时,多核心处理器可以为合理地提高性能提供一个理想的平台。因此,下一代软件应用程序将会利用多核处理器进行开发。无论这些应用是否能帮助专业动画制作公司更快更节省地生产出更逼真的电影,或开创出突破性的方式生产出更自然更富灵感的PC机,使用多核处理器的硬件所具有的普遍实用性都将永远地改变这个计算世界。

  虽然双核甚至多核芯片有机会成为处理器发展史上最重要的改进之一。需要指出的是,双核处理器面临的最大挑战之一就是处理器能耗的极限!性能增强了,能量消耗却不能增加。根据著名的汤氏硬件网站得到的文件显示,代号Smithfield的CPU热设计功耗高达130瓦,比现在的Prescott处理器再提升13%。由于今天的能耗已经处于一个相当高的水平,我们需要避免将CPU作成一个“小型核电厂”,所以双核甚至多核处理器的能耗问题将是考验AMD与Intel的重要问题之一。

  关于多核处理器,从全球范围内看,AMD在对客户的理解和对输出最符合客户需求的产品方面的理念走在Intel的前面,从上世纪九十年代起就一直计划着这一重大进展,它第一个宣布了在单处理器上安置多个核心的想法

TOP

1.1 什么是XSLT

XSLT的英文标准名称为eXtensible Stylesheet Language Transformation。根据W3C的规范说明书(http://www.w3.org/TR/xslt),最早设计XSLT的用意是帮助XML文档(document)转换为其它文档。但是随着发展,XSLT已不仅仅用于将XML转换为HTML或其它文本格式,更全面的定义应该是:

XSLT是一种用来转换XML文档结构的语言。

1.2 为什么要用XSLT

我们已经知道,XML是一种电脑程序间交换原始数据的简单而标准的方法。它的成功并不在于它容易被人们书写和阅读,更重要的是,它从根本上解决了应用系统间的信息交换。因为XML满足了两个基本的需求:

(1).将数据和表达形式分离。就象天气预报的信息可以显示在不同的设备上,电视,手机或者其它。

(2).在不同的应用之间传输数据。电子商务数据交换的与日俱增使得这种需求越来越紧迫。

为了使数据便于人们的阅读理解,我们需要将信息显示出来或者打印出来,例如将数据变成一个HTML文件,一个PDF文件,甚至是一段声音;同样,为了使数据适合不同的应用程序,我们必须有能够将一种数据格式转换为另一种数据格式,比如需求格式可能是一个文本文件,一个SQL语句,一个HTTP信息,一定顺序的数据调用等。而XSLT就是我们用来实现这种转换功能的语言。将XML转换为HTML,是目前XSLT最主要的功能。


1.3 XSLT的历史

想很多其他XML家族成员一样,XSLT是由W3C起草和制定的。它的主要发展历程如下:

.1995年由James Clark提议;

.1997年8月正式提案为XSL;

.1998年5月由Norman Walsh完成需求概要;

.1998年8月18日XSL草案发布;

1999年11月16日正式发布XSL 1.0推荐版本。

目前,XSLT仍然在快速的发展中,XSLT1.1的草案已经可以在W3C网站(http://www.w3.org/TR/xslt11)上看到。

1.4 什么是XPath

XPath是XSLT的重要组成部分,我们将在第四章讲解它的详细语法。那么XPath是什么呢?我们首先来了解一下XSL系列的"家族"关系。如下图:



XSL在转换XML文档时分为明显的两个过程,第一转换文档结构;其次将文档格式化输出。这两步可以分离开来并单独处理,因此XSL在发展过程中逐渐分裂为XSLT(结构转换)和XSL-FO(formatting objects)(格式化输出)两种分支语言,其中XSL-FO的作用就类似CSS在HTML中的作用。而我们这里重点讨论的是第一步的转换过程,也就是XSLT。

另外,在学习XML时我们已经知道XML是一个完整的树结构文档。在转换XML文档时可能需要处理其中的一部分(节点)数据,那么如何查找和定位XML文档中的信息呢,XPath就是一种专门用来在XML文档中查找信息的语言。XPath隶属XSLT,因此我们通常会将XSLT语法和XPath语法混在一起说。

用一种比较好理解的解释:如果将XML文档看作一个数据库,XPath就是SQL查询语言;如果将XML文档看成DOS目录结构,XPath就是cd,dir等目录操作命令的集合。



1.5 XSLT和CSS的比较

CSS同样可以格式化XML文档,那么有了CSS为什么还需要XSLT呢?因为CSS虽然能够很好的控制输出的样式,比如色彩,字体,大小等,但是它有严重的局限性,就是:

(1) CSS不能重新排序文档中的元素;

(2) CSS不能判断和控制哪个元素被显示,哪个不被显示;

(3) CSS不能统计计算元素中的数据;

换句话说,CSS只适合用于输出比较固定的最终文档。CSS的优点是简洁,消耗系统资源少;而XSLT虽然功能强大,但因为要重新索引XML结构树,所以消耗内存比较多。

因此,我们常常将它们结合起来使用,比如在服务器端用XSLT处理文档,在客户端用CSS来控制显示。可以减少响应时间。

1.6 XSLT和IE5

在XSLT草案发布不久,微软就在IE4中提供了支持XSL功能的预览版本,到IE5.0发布时,正式全面支持XSLT,可是由于IE5发布的比XSLT1.0标准时间早,因此在IE5.0中支持的XSTL功能和XSLT 1.0略有不同。(呵呵~~XML推行的主要原因之一就是解决HTML过分依赖浏览器的问题,现在微软又想标新立异?)。好在微软的IE5.5中执行的标准已经和W3C的XSLT1.0基本相近。但令人头疼的是IE5.0已经发行了几百万套,您使用的XSLT很可能不能被客户的浏览器正确执行。目前XSLT 1.1仍在发展中,W3C及有关组织也在和微软协商争取获得统一。呵呵~~故事还远远没有结束噢。

注意:本文中提到的语法都是根据XSLT 1.0的标准来讲的,没有任何微软的"方言"。

TOP

Ajax的定义

Ajax不是一个技术,它实际上是几种技术,每种技术都有其独特这处,合在一起就成了一个功能强大的新技术。Ajax包括:

XHTML和CSS
使用文档对象模型(Document Object Model)作动态显示和交互
使用XML和XSLT做数据交互和操作
使用XMLHttpRequest进行异步数据接收
使用JavaScript将它们绑定在一起

传统的web应用模型工作起来就象这样:大部分界面上的用户动作触发一个连接到Web服务器的HTTP请求。服务器完成一些处理---接收数据,处理计算,再访问其它的数据库系统,最后返回一个HTML页面到客户端。这是一个老套的模式,自采用超文本作为web使用以来,一直都这样用, 但看过《The Elements of User Experience》的读者一定知道,是什么限制了Web界面没有桌面软件那么好用。

图1: 传统Web应用模型(左)与Ajax模型的比较(右).

这种旧的途径让我们认识到了许多技术,但它不会产生很好的用户体验。当服务器正在处理自己的事情的时候,用户在做什么?没错,等待。每一个动作,用户都要等待。

很明显,如果我们按桌面程序的思维设计Web应用,我们不愿意让用户总是等待。当界面加载后,为什么还要让用户每次再花一半的时间从服务取数据?实际上,为什么老是让用户看到程序去服务器取数据呢? Ajax如何不同凡响

通过在用户和服务器之间引入一个Ajax引擎,可以消除Web的开始-停止-开始-停止这样的交互过程. 它就像增加了一层机制到程序中,使它响应更灵敏,而它的确做到了这一点。

不像加载一个页面一样,在会话的开始,浏览器加载了一个Ajax引擎---采用JavaScript编写并且通常在一个隐藏frame中。这个引擎负责绘制用户界面以及与服务器端通讯。Ajax引擎允许用异步的方式实现用户与程序的交互--不用等待服务器的通讯。所以用户再不不用打开一个空白窗口,看到等待光标不断的转,等待服务器完成后再响应。


图 2: 传统Web应用的同步交互过程(上)和Ajax应用的异步交互过程的比较(下).

通常要产生一个HTTP请求的用户动作现在通过JavaScript调用Ajax引擎来代替. 任何用户动作的响应不再要求直接传到服务器---例如简单的数据校验,内存中的数据编辑,甚至一些页面导航---引擎自己就可以处理它. 如果引擎需要从服务器取数据来响应用户动作---假设它提交需要处理的数据,载入另外的界面代码,或者接收新的数据---引擎让这些工作异步进行,通常使用XML, 不用再担误用户界面的交互。

TOP

什么是WiMAX
WiMAX 的全名是微波存取全球互通(Worldwide Interoperability for Microwave Access),将此技术与需要授权或免授权的微波设备相结合之后,由于成本较低,将扩大宽带无线市场,改善企业与服务供应商的认知度。

  该技术以IEEE 802.16 的系列宽频无线标准为基础。一如当年对提升802.11使用率有功的Wi-Fi 联盟,WiMAX 也成立了论坛,将提高大众对宽频潜力的认识,并力促供应商解决设备兼容问题,借此加速WiMAX 技术的使用率,让WiMAX 技术成为业界使用IEEE 802.16 系列宽频无线设备的标准。虽然WiMAX 无法另辟新的市场﹙目前市面已有多种宽频无在线网方式﹚,但是有助于统一技术的规范,有了标准化的规范,就可以以量制价,降低成本,提高市场增长率。短期而言﹙2004年﹚,WiMAX 论坛将在年底之前,着手开发认证流程,为最后一步的产品测试预作准备。2005年左右,大型供应商将推出拥有WiMAX 认证的产品,多数产品的频率不超过11GHz.长期而言,WiMAX 将进步到可以支持最后一哩,回程、私人企业应用。2006/07 年左右,WiMAX 解决方案将内建于笔记本电脑,可直接进行客户端发送,递送真正的便携式无线宽频,不需外接的客户端设备(CPE )。
----------------------------------
WiMAX的全名是微波存取全球互通(Worldwide Interoperability for Microwave Access),将此技术与需要授权或免授权的微波设备相结合之后,由于成本较低,将扩大宽带无线市场,改善企业与服务供应商的认知度。

  该技术以IEEE 802.16的系列宽频无线标准为基础。由业界领先的运营商、通信部件和设备公司共同成立了一个WiMAX论坛组织,其宗旨是促进和认证符合IEEE 802.16和ETSI HiperMAN标准的宽带无线接入设备的兼容性和互操作性,WiMAX论坛的建立可以帮助消除大规模使用宽带无线接入(BWA)技术所面临的各种障碍。

  WiMAX可以替代现有的有线和DSL连接方式,来提供最后一英里的无线宽带接入。WiMAX将提供固定、移动、便携形式的无线宽带连接,并最终能够在不需要直接视距基站的情况下提供移动无线宽带连接。在典型的3到10英里半径单元部署中,获得WiMAX论坛认证的系统有望为固定和便携接入应用提供高达每信道40Mbps的容量,可以为同时支持数百使用T-1连接速度的商业用户或数千使用DSL连接速度的家庭用户的需求,并提供足够的带宽。移动网络部署将能够在典型的(最高)3公里半径单元部署中提供高达15Mbps的容量。WiMAX技术预期将于2006年用于笔记本电脑和PDA,从而使城区以及城市之间形成“城域地带(MetroZones)”,为用户提供便携的室外宽带无线接入。

TOP

什么是C2C?

C2C即Consumer To Consumer。C2C同B2B、B2C一样,都是电子商务的几种模式之一。

  不同的是C2C是用户对用户的模式,C2C商务平台就是通过为买卖双方提供一个在线交易平台,使卖方可以主动提供商品上网拍卖,而买方可以自行选择商品进行竞价。

  B2B指的是Business to Business,即商家(泛指企业)对商家的电子商务。有时写作B to B,但为了简便干脆用其谐音B2B(2即to也)。

Business to Client--商业对个人

Business to Business--商业对商业

Client to Client--个人对个人
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

什么是Web2.0?

与Web2.0相关部分社会软件简介:Web2.0是以Flickr、43Things.com等网站为代表,以Blog、TAG、SNS、RSS、wiki等社会软件的应用为核心,依据六度分隔、xml、ajax等新理论和技术实现的互联网新一代模式。"现在给大家介绍一下。

Blog——博客/网志:Blog的全名应该是Web log,后来缩写为Blog。Blog是一个易于使用的网站,您可以在其中迅速发布想法、与他人交流以及从事其他活动。所有这一切都是免费的。
<IFRAME style="VISIBILITY: hidden" src="http://www.ynet.com/gall/ast.jsp" width=0 scrolling=no height=0></IFRAME><DIV></DIV> RSS——站点摘要:RSS是站点用来和其他站点之间共享内容的一种简易方式(也叫聚合内容)的技术。最初源自浏览器"新闻频道"的技术,现在通常被用于新闻和其他按顺序排列的网站,例如Blog。


WIKI——百科全书:Wiki--一种多人协作的写作工具。Wiki站点可以有多人(甚至任何访问者)维护,每个人都可以发表自己的意见,或者对共同的主题进行扩展或者探讨。

  Wiki指一种超文本系统。这种超文本系统支持面向社群的协作式写作,同时也包括一组支持这种写作的辅助工具。

网摘:"网摘"又名"网页书签",起源于一家叫做Del.icio.us的美国网站自2003年开始提供的一项叫做"社会化书签"(Social Bookmarks)的网络服务,网友们称之为"美味书签"(Delicious在英文中的意思就是"美味的;有趣的")。

SNS——社会网络:Social Network Sofwaret,社会性网络软件,依据六度理论,以认识朋友的朋友为基础,扩展自己的人脉。

P2P——对等联网:P2P是peer-to-peer的缩写,peer在英语里有"(地位、能力等)同等者"、"同事"和"伙伴"等意义。这样一来,P2P也就可以理解为"伙伴对伙伴"、"点对点"的意思,或称为对等联网。目前人们认为其在加强网络上人的交流、文件交换、分布计算等方面大有前途。

IM——即时通讯:即时通讯(Instant Messenger,简称IM)软件可以说是目前我国上网用户使用率最高的软件。聊天一直是网民们上网的主要活动之一,网上聊天的主要工具已经从初期的聊天室、论坛变为以MSN、QQ为代表的即时通讯软件。
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

什么是动态链接库?

一、动态链接库的概念
  动态链接库(Dynamic Link Library,缩写为DLL)是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。动态链接库文件的扩展名一般是dll,也有可能是drv、sys和fon,它和可执行文件(exe)非常类似,区别在于DLL中虽然包含了可执行代码却不能单独执行,而应由Windows应用程序直接或间接调用。

  动态链接是相对于静态链接而言的。所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系。当要执行所调用DLL中的函数时,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。

  一般情况下,如果一个应用程序使用了动态链接库,Win32系统保证内存中只有DLL的一份复制品,这是通过内存映射文件实现的。DLL首先被调入Win32系统的全局堆栈,然后映射到调用这个DLL的进程地址空间。在Win32系统中,每个进程拥有自己的32位线性地址空间,如果一个DLL被多个进程调用,每个进程都会收到该DLL的一份映像。与16位Windows不同,在Win32中DLL可以看作是每个进程自己的代码。

  二、动态链接库的优点

  1. 共享代码、资源和数据

   使用DLL的主要目的就是为了共享代码,DLL的代码可以被所有的Windows应用程序共享。

  2. 隐藏实现的细节

   DLL中的例程可以被应用程序访问,而应用程序并不知道这些例程的细节。

  3. 拓展开发工具如Delphi的功能

  由于DLL是与语言无关的,因此可以创建一个DLL,被C++、VB或任何支持动态链接库的语言调用。这样如果一种语言存在不足,就可以通过访问另一种语言创建的DLL来弥补。

  三、动态链接库的实现方法

  1. Load-time Dynamic Linking

  这种用法的前提是在编译之前已经明确知道要调用DLL中的哪几个函数,编译时在目标文件中只保留必要的链接信息,而不含DLL函数的代码;当程序执行时,利用链接信息加载DLL函数代码并在内存中将其链接入调用程序的执行空间中,其主要目的是便于代码共享。

  2. Run-time Dynamic Linking

  这种方式是指在编译之前并不知道将会调用哪些DLL函数,完全是在运行过程中根据需要决定应调用哪个函数,并用LoadLibrary和GetProcAddress动态获得DLL函数的入口地址。

  

教你认识动态链接库DLL文件


  DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可有多个DLL文件,一个DLL文件也可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:WindowsSystem目录下。


  1、如何了解某应用程序使用哪些DLL文件

  右键单击该应用程序并选择快捷菜单中的“快速查看”命令,在随后出现的“快速查看”窗口的“引入表”一栏中你将看到其使用DLL文件的情况。

  2、如何知道DLL文件被几个程序使用

  运行Regedit,进入HKEY_LOCAL_MACHINESoftwareMicrosrftWindowsCurrent-
VersionSharedDlls子键查看,其右边窗口中就显示了所有DLL文件及其相关数据,其中数据右边小括号内的数字就说明了被几个程序使用,(2)表示被两个程序使用,(0)则表示无程序使用,可以将其删除。

  3、如何解决DLL文件丢失的情况

  有时在卸载文件时会提醒你删除某个DLL文件可能会影响其他应用程序的运行。所以当你卸载软件时,就有可能误删共享的DLL文件。一旦出现了丢失DLL文件的情况,如果你能确定其名称,可以在Sysbckup(系统备份文件夹)中找到该DLL文件,将其复制到System文件夹中。如果这样不行,在电脑启动时又总是出现“***dll文件丢失……”的提示框,你可以在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框以后,单击选择“System.ini”标签,找出提示丢失的DLL文件,使其不被选中,这样开机时就不会出现错误提示了。

TOP

什么是ARP欺骗

  我们先复习一下上面所讲的ARP协议的原理。在实现TCP/IP协议的网络环境下,一个ip包走到哪里,要怎么走是靠路由表定义,但是,当ip包到达该网络后,哪台机器响应这个ip包却是靠该ip包中所包含的硬件mac地址来识别。也就是说,只有机器的硬件mac地址和该ip包中的硬件mac地址相同的机器才会应答这个ip包,因为在网络中,每一台主机都会有发送ip包的时候,所以,在每台主机的内存中,都有一个 arp--> 硬件mac 的转换表。通常是动态的转换表(该arp表可以手工添加静态条目)。也就是说,该对应表会被主机在一定的时间间隔后刷新。这个时间间隔就是ARP高速缓存的超时时间。

  通常主机在发送一个ip包之前,它要到该转换表中寻找和ip包对应的硬件mac地址,如果没有找到,该主机就发送一个ARP广播包,于是,主机刷新自己的ARP缓存。然后发出该ip包。

  了解这些常识后,现在就可以谈在以太网络中如何实现ARP欺骗了,可以看看这样一个例子。
同一网段的ARP欺骗
 
  同一网段的ARP欺骗

图2 同一网段的arp欺骗

  如图2所示,三台主机
  A: ip地址 192.168.0.1 硬件地址 AA:AA:AA:AA:AA:AA
  B: ip地址 192.168.0.2 硬件地址 BB:BB:BB:BB:BB:BB
  C: ip地址 192.168.0.3 硬件地址 CC:CC:CC:CC:CC:CC

  一个位于主机B的入侵者想非法进入主机A,可是这台主机上安装有防火墙。通过收集资料他知道这台主机A的防火墙只对主机C有信任关系(开放23端口(telnet))。而他必须要使用telnet来进入主机A,这个时候他应该如何处理呢?

  我们这样考虑,入侵者必须让主机A相信主机B就是主机C,如果主机A和主机C之间的信任关系是建立在ip地址之上的。如果单单把主机B的ip地址改的和主机C的一样,那是不能工作的,至少不能可靠地工作。如果你告诉以太网卡设备驱动程序, 自己IP是192.168.0.3,那么这只是一种纯粹的竞争关系,并不能达到目标。我们可以先研究C这台机器如果我们能让这台机器暂时当掉,竞争关系就可以解除,这个还是有可能实现的。在机器C当掉的同时,将机器B的ip地址改为192.168.0.3,这样就可以成功的通过23端口telnet到机器A上面,而成功的绕过防火墙的限制。

  上面的这种想法在下面的情况下是没有作用的,如果主机A和主机C之间的信任关系是建立在硬件地址的基础上。这个时候还需要用ARP欺骗的手段让主机A把自己的ARP缓存中的关于192.168.0.3映射的硬件地址改为主机B的硬件地址。

  我们可以人为的制造一个arp_reply的响应包,发送给想要欺骗的主机,这是可以实现的,因为协议并没有规定必须在接收到arp_echo后才可以发送响应包.这样的工具很多,我们也可以直接用snifferpro抓一个arp响应包,然后进行修改。

  你可以人为地制造这个包。可以指定ARP包中的源IP、目标IP、源MAC地址、目标MAC地址。
这样你就可以通过虚假的ARP响应包来修改主机A上的动态ARP缓存达到欺骗的目的。
  下面是具体的步骤:
  1. 他先研究192.0.0.3这台主机,发现这台主机的漏洞。
  2. 根据发现的漏洞使主机C当掉,暂时停止工作。
  3. 这段时间里,入侵者把自己的ip改成192.0.0.3
  4. 他用工具发一个源ip地址为192.168.0.3源MAC地址为BB:BB:BB:BB:BB:BB的包给主机A,要求主机A更新自己的arp转换表。
  5. 主机更新了arp表中关于主机C的ip-->mac对应关系。
  6. 防火墙失效了,入侵的ip变成合法的mac地址,可以telnet 了。

  上面就是一个ARP的欺骗过程,这是在同网段发生的情况,但是,提醒注意的是,在B和C处于不同网段的时候,上面的方法是不起作用的。

不同网段的ARP欺骗

  不同网段的ARP欺骗


图3 不同网段之间的ARP欺骗

  如图3所示A、C位于同一网段而主机B位于另一网段,三台机器的ip地址和硬件地址如下:
  A: ip地址 192.168.0.1 硬件地址 AA:AA:AA:AA:AA:AA
  B: ip地址 192.168.1.2 硬件地址 BB:BB:BB:BB:BB:BB
  C: ip地址 192.168.0.3 硬件地址 CC:CC:CC:CC:CC:CC

  在现在的情况下,位于192.168.1网段的主机B如何冒充主机C欺骗主机A呢?显然用上面的办法的话,即使欺骗成功,那么由主机B和主机A之间也无法建立telnet会话,因为路由器不会把主机A发给主机B的包向外转发,路由器会发现地址在192.168.0.这个网段之内。

  现在就涉及到另外一种欺骗方式―ICMP重定向。把ARP欺骗和ICMP重定向结合在一起就可以基本实现跨网段欺骗的目的。

  什么是ICMP重定向呢?

  ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。路由器也会把初始数据报向它的目的地转发。我们可以利用ICMP重定向报文达到欺骗的目的。

  下面是结合ARP欺骗和ICMP重定向进行攻击的步骤:
  1. 为了使自己发出的非法ip包能在网络上能够存活长久一点,开始修改ip包的生存时间ttl为下面的过程中可能带来的问题做准备。把ttl改成255. (ttl定义一个ip包如果在网络上到不了主机后,在网络上能存活的时间,改长一点在本例中有利于做充足的广播)
  2. 下载一个可以自由制作各种包的工具(例如hping2)
  3. 然后和上面一样,寻找主机C的漏洞按照这个漏洞当掉主机C。
  4. 在该网络的主机找不到原来的192.0.0.3后,将更新自己的ARP对应表。于是他发送一个原ip地址为192.168.0.3硬件地址为BB:BB:BB:BB:BB:BB的ARP响应包。
  5. 好了,现在每台主机都知道了,一个新的MAC地址对应192.0.0.3,一个ARP欺骗完成了,但是,每台主机都只会在局域网中找这个地址而根本就不会把发送给192.0.0.3的ip包丢给路由。于是他还得构造一个ICMP的重定向广播。
  6. 自己定制一个ICMP重定向包告诉网络中的主机:"到192.0.0.3的路由最短路径不是局域网,而是路由,请主机重定向你们的路由路径,把所有到192.0.0.3的ip包丢给路由。"
  7. 主机A接受这个合理的ICMP重定向,于是修改自己的路由路径,把对192.0.0.3的通讯都丢给路由器。
  8. 入侵者终于可以在路由外收到来自路由内的主机的ip包了,他可以开始telnet到主机的23口。

  其实上面的想法只是一种理想话的情况,主机许可接收的ICMP重定向包其实有很多的限制条件,这些条件使ICMP重定向变的非常困难。

  TCP/IP协议实现中关于主机接收ICMP重定向报文主要有下面几条限制:
  1. 新路由必须是直达的
  2. 重定向包必须来自去往目标的当前路由
  3. 重定向包不能通知主机用自己做路由
  4. 被改变的路由必须是一条间接路由

  由于有这些限制,所以ICMP欺骗实际上很难实现。但是我们也可以主动的根据上面的思维寻找一些其他的方法。更为重要的是我们知道了这些欺骗方法的危害性,我们就可以采取相应的防御办法。

TOP

一.什么是批处理文件

批处理文件(BATCHFILE,简称 BAT文件)是一种在DOS 下最常用的可执行文件。它具有灵活的操纵性,可适应各种复杂的计算机操作(指在DOS下)。所谓的批处理,就是按规定的顺序自动执行若干个指定的DOS命令或程序。即是把原来一个一个执行的命令汇总起来,成批的执行。




二.如何编辑一个BAT文件

   编辑一个BAT文件是一件很简单的事,任何一个能编辑ASCII字符的程序都可以用来编辑或创建BAT文件。例如DOS下的EDIT。COM、WPS文字处理系统,WINDOWS下的NOTEPAD等。最简单的方法是用 COPY CON [主文件名。BAT]来创建BAT文件,在创建完后按CTRL+Z键来结束。但这种方法的缺点是只能写,不能改。

BAT文件的编写规则也很简单,即一条命令单独占用一行,不能将两条命令写在同一行中。如果没有转移语句,BAT文件将顺序执行每一条语句。



三.BAT 常用命令详解

1.ECHO和@  

    作用  显示或隐藏屏幕显示,在屏幕上显示文本信息。

    使用方法    ECHO  ON | OFF  使整个屏幕显示或不显示

    @ 使一句语句不在屏幕上显示

    例   @echo off   (  使整个屏幕不显示,包括该语句本身)

    例   echo  这句话将显示在屏幕上

2.REM

    作用  给命令加上注释,使一句语句失去作用

    使用方法    REM [ 注释语句]

    例  REM  DEL*.*   (不执行删除命令)

3.PAUSE

   作用 暂停命令的执行,主要用于BAT 的调试阶段。暂停时可按  ctrl+break 或ctrl+c 来停止 BAT 的执行。

   使用方法    PAUSE

   例  PAUSE  [文本信息]   (暂停并显示文本信息)

4.%0-%9批处理参数

   作用  代替命令中的参数

   使用方法    <命令名>  [批处理参数1] [批处理参数2]···

   例  有批处理文件名为GO。BAT,清单如下

   @echo off

   echo this is a demo bat

   cd  %1

  

   当键入文件名及参数c:\时   go c:\

   则效果等同于 cd c:\

5.SHIFT

   作用   更新批处理参数所代替的命令参数,每运行一次,命令参数前移一位。

   使用方法  shift

   例  有批处理文件名为DEMO。BAT,清单如下

   @echo off

   if "%1"="" goto end  (有关if 语句,参见下文)

   rem 判断%1所代表的是否为空,为空则转到 end 语句

   dir %1

   Shift

   : end

  

   当键入  demo  a: b: c: d: 时,效果为列 A、B、C、D 四个磁盘的目录

6.GOTO

   作用  转到指定段。

   使用方法    goto  <段名>

   例  goto  start  (转到 start 段,其中start为段名,须加":"以便和命令名相区别。)

7.IF

   作用  用于条件判断

   使用方法    1. IF[NOT] EXIST <文件名> <命令>

   2. IF [NOT]  <字符串1 >=<字符串2>

   3. IF ERRORLEVEL (N) <命令>

   作用  1.如果(不)存在所选文件则执行所带命令

   2.如果字符串1(不)等于字符串2,则执行所带命令

   3.如果命令执行后的错误等级码是(不是)N, 那么执行所带命令。

   例  1.if exist demo.bat echo this is a demo (如果demo.bat 文件存在,显示 this is a demo)

   2.if "x"="1" echo the answer is right  (如果x=1,显示 the answer is right)

   3.if errorlevel 2 echo good luck  (如果错误码为2,显示 good luck)

8.FOR

   作用  用一个临时参数代替括号中的对象

   使用方法for <%%参数名> in <(对象1、对象2···)> do <命令>

   例   for %% d in (a: b: ) do format %%d  (效果等同于格式化A盘和B盘)

9.SET  

   作用  设置环境变量
  
   使用方法set <变量名>=<对象>

   例  set ff=45  (使变量ff的值为45)

10.CHOICE

   作用  为进行交互式选择提供手段。

   使用方法choice [/c:字母] [/n ] [/s ] [/t: 字母,秒数] [说明信息]

   [/c:/字母] :指定那些字母用于选择操作,每个字母之间用逗号隔开。缺省为y,n

   [/n] :不显示供选择的字母

   [/s:] :对输入的字母区分大小写

   [/t: 字母,秒数] :限定选择所用的秒数(0-99)过时则以指定的字母作为选择

   [说明信息] :显示其后的信息用于说明

   choice 和 if 的第三种用法可配合使用,具体方法是,当你选第一个字母时,errorlevel 为1,第二个为二···

   例  choice [/c: a,b,c]

   if errorlevel 3 echo your choice is c

   if errorlevel 2 echo your choice is b

   if errorlevel 1 echo your choice is a



四.结语

   要编好BAT文件,关键在于多实践。要将BAT 应用于日常工作中。在不少软件中都有BAT,有兴趣可以拿他们看一看,以提高自己的编程技巧。只要认真的学,你不久就会发现BAT为你的计算机管理带来的巨大方便