本文介绍的Java规则的说明分为5个级别,级别1是最基本也是最重要的级别,在今后将陆续写出其他的规则。遵守了这些规则可以提高程序的效率、使代码有更好的可读性等。

  (1) 避免使用NEW关键字来创建String对象

  把一个String常量copy到String 对象中通常是多余、浪费时间的。

Public class test{
 Public void method(){
  System.out.print (str);
 }
 private String str = new String ("1"); //这里新建对象是完全没有必要的
 private String str2=”2” //正确的应该如此
}

  (2) 避免使用不必要的嵌套

  过多的嵌套会使你的代码复杂化,减弱可读性。

Public class test {
 String add (){
  Int c=(a=a+b)+b; //过于复杂
  Return c
 }
}

  (3) 避免在同一行声明不同类型的多个变量

  这样可以使程序更加清晰,避免混乱

private int index, index1[];

  正确的应该如此:

private int index;
private int index1[];

  (4) 在每一行里写一条语句

  这条规则不包括for语句:比如:‘for (int i = 0; i < 10; i++) x–;’可以增加代码的可读性。

public class OSPL {
 int method (int a, int b) {
  int i = a + b; return i; // 可读性不强
 }

  正确的:

public class OSPLFixed {
 int method (int a, int b) {
  int i = a + b;
  return i;
 }
}

  (5)经常从finalize ()中调用super.finalize ()

  这里的finalize ()是java在进行垃圾收集的时候调用的,和finally不一样。如果你的父类没有定义finally()的话,你也应该调用。这里有两个原因:(1)在不改变代码的情况下能够将父类的finally方法加到你的类中。 (2)以后你会养成习惯调用父类的finally方法,即使父类没有定义finally方法的时候。

  正确的方法应该如此:

public class parentFinalize {
 protected void finalize () throws Throwable {
  super.finalize(); // FIXED
 }

  (6) 不要在finalize ()中注销listeners

  不要再finalize ()方法中中注销listeners,finalize ()只有再没有对象引用的时候调用,如果listeners从finalize()方法中去除了,被finalize的对象将不会在垃圾收集中去除。

public void finalize () throws Throwable {
 bButton.removeActionListener (act);
}

  (7) 不要显式的调用finalize ()方法

  虽然显式的调用这个方法可以使你确保你的调用,但是当这个方法收集了以后垃圾收集会再收集一次。

public class T7 {
 public void finalize() throws Throwable {
  close_resources ();
  super.finalize ();
 }
 public void close_resources() {}
}
class Test {
 void cleanup () throws Throwable {
  t71.finalize(); // 调用
  t71 = null;
 }
 private t71 = new T7 ();
}

  对于这样的调用我们应该自己创建一个释放的方法,做最初finalize ()所作的事情,当你每次想显式的调用finalize ()的时候实际上调用了释放方法。然后再使用一个判断字段来确保这个方法只执行一次,以后再调用就没关系了。

public class T7 {
 public synchronized void release () throws Throwable{
  if (!_released) {
   close_resources (); // do what the old ‘finalize ()‘
   did _released = true;
  }
 }
 public void finalize () throws Throwable {
  release ();
  super.finalize ();
 }
 public void close_resources() {}
 private boolean _released = false;
}
class TestFixed {
 void closeTest () throws Throwable {
  t71 .release (); // FIXED
  t71 = null;
 }
 private T7 t71 = new T7 ();
}

  (8)不要使用不推荐的API

  尽量使用JDK1.3推荐的API。在类和方法或者java组件里有很多方法是陈旧的或者是可以选择的。有一些方法SUN用了"deprecated“标记。最好不要使用例如:

private List t_list = new List ();
t_list.addItem (str);

  如果查一下javadoc的话,会发现建议用add()来代替addItem()。

  (9)为所有序列化的类创建一个‘serialVersionUID‘

  可以避免从你各种不同的类破坏序列的兼容性。如果你不特别制订一个UID的话,那么系统为自动产生一个UID(根据类的内容)。如果UID在你新版本的类中改变了,即使那个被序列化的类没改变,你也不能反序列化老的版本了。

public class DUID implements java.io.Serializable { public void method () {}}

  在里面加一个UID,当这个类的序列化形式改变的时候,你也改变这个UID就可以了。

public class DUIDFixed implements java.io.Serializable {
 public void method () {}
 private static final long serialVersionUID = 1;
}

  (10)对于private常量的定义

  比较好的做法是对于这样的常量,加上final标记,这样的常量从初始化到最后结束值都不会改变。

private int size = 5;

  改变后的做法是:

private final int size = 5;

  (11)避免把方法本地变量和参数定义成和类变量相同的名字

  这样容易引起混扰,建议把任何的变量字都定义成唯一的。这样看来,SCJP里的那些题目在现实中就用不到了:)

public void method (int j) { final int i = 5; // VIOLATION } private int j = 2;

  建议:

public void method (int j1) { final int i = 5; // VIOLATION } private int j = 2;

  近期,一些朋友总提出内存不能为“read”或者“written”的问题,鉴于产生这些问题的原因多样复杂,判断和处理这些问题比较麻烦,现在将网上找到的这篇较为全面的资料,加上自己收集到的部分例子奉上,供大家共享。

  问题

  运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。

  “0x????????”指令引用的“0x????????”内存。该内存不能为“read”。

  “0x????????”指令引用的“0x????????”内存,该内存不能为“written”。

  一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。

  故障分析

  硬件方面:

  一般来说,内存出现问题的可能性并不大,主要方面是:内存条坏了、内存质量有问题,还有就是2个不同牌子不同容量的内存混插,也比较容易出现不兼容的情况,同时还要注意散热问题,特别是超频后。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。

  假如是双内存,而且是不同品牌的内存条混插或者买了二手内存时,出现这个问题,这时,就要检查是不是内存出问题了或者和其它硬件不兼容。

  软件方面:

  先简单说说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在其一位置时,因为没有足够空间,就会发生溢出现象。举个例子:一个桶子只能将一斤的水,当放入两斤的水进入时,就会溢出来。而系统则是在屏幕上表现出来。这个问题,经常出现在windows2000和XP系统上,Windows 2000/XP对硬件的要求是很苛刻的,一旦遇到资源死锁、溢出或者类似Windows 98里的非法操作,系统为保持稳定,就会出现上述情况。另外也可能是硬件设备之间的兼容性不好造成的。

  几个典型故障例子及解决办法

  例一:打开IE浏览器或者没过几分钟就会出现"0x70dcf39f"指令引用的"0x00000000"内存。该内存不能为“read”。要终止程序,请单击“确定”的信息框,单击“确定”后,又出现“发生内部错误,您正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,IE浏览器也被关闭。

  解决方法:修复或升级IE浏览器,同时打上补丁。看过其中一个修复方法是,Win2000自升级,也就是Win2000升级到Win2000,其实这种方法也就是把系统还原到系统初始的状态下。比如你的IE升级到了6.0,自升级后,会被IE5.0代替。

  例二:在windows xp下双击光盘里面的“AutoRun.exe”文件,显示“0x77f745cc”指令引用的“0x00000078”内存。该内存不能为“written”,要终止程序,请单击“确定”,而在Windows 98里运行却正常。

  解决方法:这可能是系统的兼容性问题,WinXP的系统,右键“AutoRun.exe”文件,属性,兼容性,把“用兼容模式运行这个程序”项选择上,并选择“Windows 98/Me”。win2000如果打了SP的补丁后,只要开始,运行,输入:regsvr32 c:winntapppatchslayerui.dll。右键,属性,也会出现兼容性的选项。

  例三:RealOne Gold关闭时出现错误,以前一直使用正常,最近却在每次关闭时出现“0xffffffff”指令引用的“0xffffffff”内存。该内存不能为“read” 的提示。

  解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。

  例四:我的豪杰超级解霸自从上网后就不能播放了,每次都提示“Ox060692f6”(每次变化)指令引用的“Oxff000011”内存不能为“read”,终止程序请按确定。

  解决方法:试试重装豪杰超级解霸,如果重装后还会,到官方网站下载相应版本的补丁试试。还不行,只好换就用别的播放器试试了。

  例五:双击一个游戏的快捷方式,“Ox77f5cdO”指令引用“Oxffffffff”内存,该内存不能为“read” ,并且提示Client.dat程序错误。

  解决方法:重装显卡的最新驱动程序,然后下载并且安装DirectX9.0。

  例六:一个朋友发信息过来,我的电脑便出现了错误信息:“0*772b548f”指令引用的“0*00303033”内存,该内存不能为“written”,然后QQ自动下线,而再打开QQ,发现了他发过来的十几条的信息。

  解决方法:这是对方利用QQ的BUG,发送特殊的代码,做QQ出错,只要打上补丁或升级到最新版本,就没事了。

  例七:我的笔记本电脑用的XP系统,有时关闭网页时会弹出tbrowser.exe遇到问题需要关闭,然后有弹出0x03e7c738指令引用的0x03e7c738内存,该内存不能为read,请问是怎么回事?

  解决方法:先查杀一下病毒,另外如果你安装了浏览增强之类的软件,请卸掉。

  例八:从桌面或开始菜单中打开任何一个程序, 出现错误提示:"0x…….."指令引用的"0x00000000"内存,该内存不能为"read"。省略号代表可变值。而从运行中打开程序没问题。

  解决方法:运行regedit进入注册表, 在HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerShellExecuteHooks下,应该只有一个正常的键值"{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除(默认键值当然不要删除)。这一条很常见。

  例九:我三个月前配了台机子。系统比较不稳定,三个月内已经重装过多次系统,四五天前刚装过系统,可是经常随机地出现Explorer-应用程序错误,“0x4a01259d“指令引用的“0x00000000"内存。该内存不能为“read"。要终止程序,请单击“确定“。要调试程序,请单击“取消”。如果点确定,windows桌面就不见了。这种问题在之前的系统也出现过,不知道是不是硬件的问题?

  解决方法:内存的兼容性问题!遇到这类问题,用户可以自行打开机器把内存的位置调动一下,看问题是否可以解决,如果问题依旧,可与你的朋友调换内存使用。

  通过上面的几个例子,可以看到,出现故障的原因有好多种,下面列出已经提到和有可能发生的原因,方便查阅。

问题产生原因

解决方法

内存条坏了

更换内存条

双内存不兼容

使用同品牌的内存或只用一条内存

内存质量问题

更换内存条

散热问题

加强机箱内部的散热

内存和主板没插好或和其它硬件不兼容等

重插内存或换个插糟

硬盘有问题

更换硬盘

驱动问题

重装驱动。如果是新系统,要先安装主板驱动

软件损坏

重装软件

软件有BUG

打补丁或用最新的版本

软件和系统不兼容

给软件打上补丁或者试试系统的兼容模式

软件和软件之间有冲突

如果最近安装了什么新软件,卸载了试试

软件要使用到其它相关的软件有问题

重装相关软件。比如播放某一格式的文件时出错,可能是这个文件的解码器有问题

病毒问题

杀毒

杀毒软件与系统或软件冲突

由于杀毒软件是进入底层监控系统的,可能与一些软件冲突,卸载了试试

系统本身有问题

有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序,像SP的补丁,最好要打上。如果还不行重装系统或更换其它版本的系统了

  Windows系统出现内存错误

  使用Windows操作系统的人有时会遇到这样的错误信息:“0X????????指令引用的0x00000000内存,该内存不能written”,然后应用程序被关闭。如果去请教一些“高手”,得到的回答往往是“Windows就是这样不稳定”之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的常见原因。

  一、应用程序没有检查内存分配失败

  程序需要一块内存用以保存数据时,就需要调用操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“指针”。

  内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的指针,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。

  若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用指针,继续在之后的运行中使用这块内存。真正的0地址内存区保存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即死机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的“写内存”错误,并指出被引用的内存地址为“0x00000000”。

  内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统文件之后。

  二、应用程序由于自身BUG引用了不正常的内存指针

  在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的指针已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止运行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!

  像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效指针不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其他随机数字。

  如果系统经常有所提到的错误提示,下面的建议可能会有帮助:

  1.查看系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。

  2.更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统文件、修正系统参数。有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。

  3.试用新版本的应用程序。

今天终于把350D搞到手了,呵呵。这台机器总体说来感觉还不错,但标配的镜头就寒酸了点。是18-55的,一般用用还行。如果要好一点的,就必须去买Canon的其它镜头了。17-85的头就比较不错了,但是价格呢,呵呵呵呵。

就先熟悉熟悉下机器看看吧,功能到是蛮多的,说明书都是厚厚的一本。慢慢研究了~白天试拍了几张,感觉还不错。呵呵

漫谈硬盘彻底损坏后的数据抢救
作者:52硬件

  伴随着科技的发展,80G、120G的硬盘在普通用户中都已经屡见不鲜了。但是,在长时间的使用硬盘过程中,我们也在承受着硬盘随时也会出错的风险,轻则硬盘的数据丢失,重则整个硬盘报废,造成不可预料的严重后果。采用什么办法,才能解决常见的硬盘数据丢失故障,成为用户十分关注的问题。

一、硬盘的分区
  对于你手中硬盘来说,首先要做的事情就是分区了。硬盘分区是否合理直接影响到以后工作的便利性和数据的安全性。我们最常见到的分区表错误也是硬盘的最严重错误,不同错误的程度会造成不同的损失。如果是没有活动分区标志,则计算机无法启动。但从软驱或光驱引导系统后可对硬盘读写,可通过fdisk重置活动分区可进行修复。如果是某一分区类型错误,会造成某一分区的丢失。

  在一般情况下完成硬盘分区之后,会形成3种形式的分区状态;即主分区、扩展分区和非DOS分区。在硬盘中非DOS分区(Non-DOS Partition)是一种特殊的分区形式,它是将硬盘中的一块区域单独划分出来供另一个操作系统使用,对主分区的操作系统来讲,是一块被划分出去的存储空间。只有非DOS分区内的操作系统才能管理和使用这块存储区域,非DOS分区之外的系统一般不能对该分区内的数据进行访问。

  主分区则是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。其中的主引导程序是它的一部分,此段程序主要用于检测硬盘分区的正确性,并确定活动分区,负责把引导权移交给活动分区的DOS或其他操作系统。此段程序损坏将无法从硬盘引导,但从软区或光区之后可对硬盘进行读写。

  而扩展分区的概念是比较复杂的,极容易造成硬盘分区与逻辑磁盘混淆;分区表的第四个字节为分区类型值,正常的可引导的大于32mb的基本DOS分区值为06,扩展的DOS分区值是05。如果把基本DOS分区类型改为05则无法启动系统 ,并且不能读写其中的数据。如果把06改为DOS不识别的类型如efh,则DOS认为改分区不是DOS分区,当然无法读写。很多人利用此类型值实现单个分区的加密技术,恢复原来的正确类型值即可使该分区恢复正常。分区表中还有其他数据用于纪录分区的起蓟蛑罩沟刂贰U庑┦莸乃鸹到斐筛梅智幕炻一蚨В话阄薹ń惺止せ指?,唯一的方法是用备份的分区表数据重新写回,或者从其他的相同类型的并且分区状况相同的硬盘上获取分区表数据,否则将导致其他的数据永久的丢失。由于微机操作系统仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,所以操作系统只允许存储4个分区的数据,实际使用中4个逻辑磁盘往往不能满足需求;我们常说的硬盘扩展分区,它只是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。所以一旦单向链表发生问题,将会导致逻辑磁盘的丢失。

二、硬盘的数据恢复

1、误格式化硬盘数据的恢复
  在DOS高版本状态下,格式化操作format在缺省状态下都建立了用于恢复格式化的磁盘信息,实际上是把磁盘的DOS引导扇区,fat分区表及目录表的所有内容复制到了磁盘的最后几个扇区中(因为后面的扇区很少使用),而数据区中的内容根本没有改变 。我们都知道在DOS时代有一个非常不错的工具UnFormat,它可以恢复由Format命令清除的磁盘。如果用户是在DOS下使用Format命令误格式化了某个分区的话,可以使用该命令试试。不过UnFormat只能恢复本地硬盘和软件驱动器,而不能恢复网络驱动器。UnFormat命令除了上面的反格式化功能,它还能重新修复和建立硬盘驱动器上的损坏分区表。

  但目前UnFormat已经显得有点“力不从心”了,再使用它来恢复格式化后分区的方法已经有点过时了,我们可以使用多种恢复软件来进行数据恢复,比如使用Easyrecovery 6.0和Finaldata2.0等恢复软件均可以方便的进行数据恢复工作。另外DOS还提供了一个miror命令用于纪录当前的磁盘的信息 ,供格式化或删除之后的恢复使用,此方法也比较有效。

2、零磁道损坏时的数据恢复
  硬盘的主引导记录区(MBR)在零磁道上。MBR位于硬盘的0磁道0柱面1扇区,其中存放着硬盘主引导程序和硬盘分区表。在总共512字节的硬盘主引导记录扇区中,446字节属于硬盘主引导程序,64字节属于硬盘分区表(DPT),两个字节(55 AA)属于分区结束标志。零磁道一旦受损,将使硬盘的主引导程序和分区表信息将遭到严重破坏,从而导致硬盘无法引导。0磁道损坏判断:系统自检能通过,但启动时,分区丢失或者C盘目录丢失,硬盘出现有规律的“咯吱……咯吱”的寻道声,运行SCANDISK扫描C盘,在第一簇出现一个红色的“B”,或者Fdisk找不到硬盘、DM死在0磁道上,此种情况即为零磁道损坏!

  零磁道损坏属于硬盘坏道之一,只不过它的位置相当重要,因而一旦遭到破坏,就会产生严重的后果。如果0磁道损坏,按照目前的普通方法是无法使数据完整恢复的,通常0磁道损坏的硬盘,可以通过PCTOOLS的DE磁盘编辑器(或者DiskMan)来使0磁道偏转一个扇区,使用1磁道来作为0磁道来进行使用。而数据可以通过Easyrecovery来按照簇进行恢复,但数据无法保证得到完全恢复。

3、分区表损坏时的数据修复
  硬盘主引导记录(MBR)所在的扇区也是病毒重点攻击的地方,通过破坏主引导扇区中的DPT(分区表),就可以轻易地损毁硬盘分区信息,达到对资料的破坏目的。分区表的损坏是分区数据被破坏而使记录被破坏的。所以,我们可以使用软件来进行修复。

  一般情况下,硬盘分区之后,要备份一份分区表至软盘、光盘或者移动存储活动盘上。在这方面,国内著名的杀毒软件KV3000系列和瑞星都提供了完整的解决方案。但是,对于没有备份分区表的硬盘来说,虽然KV3000也提供了相应的修复方法,不过成功率相对就要低很多了。在恢复分区上,诺顿磁盘医生NDD是绝对强劲的工具,可以自动修复分区丢失等情况,可以抢救软盘坏区中的数据,强制读出后搬移到其它空白扇区。在硬盘崩溃或异常的情况下,它可能带给用户一线希望。在出现问题后,用启动盘启动,运行NDD,选择Diagnose进行诊断。NDD会对硬盘进行全面扫描,如果有错误的话,它会向你提示,然后只要根据软件的提示选择修复项目即可,而且这些问题它都能轻轻松松地解决。

  另外,大家非常熟悉的中文磁盘工具DiskMan,在重建分区表方面具有非常实用的功能,用于修复分区表的损坏是最合适不过了。如果硬盘分区表被分区调整软件(或病毒)严重破坏,必将引起硬盘和系统瘫痪的严重后果,而DiskMan可通过未被破坏的分区引导记录信息重新建立分区表。只要在菜单的工具栏中选择“重建分表”,DiskMan即开始搜索并重建分区。使用过程之中,DiskMan将首先搜索0柱面0磁头从2扇区开始的隐含扇区,寻找被病毒挪动过的分区表。紧接着要搜索每个磁头的第一个扇区。整个搜索过程是采用“自动”或“交互”两种方式进行。自动方式保留发现的每一个分区,适用于大多数情况。交互方式对发现的每一个分区都会给出提示,由用户选择是否保留。当采用自动方式重建的分区表一旦出现不正确的故障时,我们可以采用交互方式重新进行搜索。

  但是,重建分区表功能也不能保证做到百分之百的修复好硬盘分区表。所以要记住“求谁也不如求自己”还是保护好自己的硬盘吧!尽量避免硬件损伤以及病毒的侵扰,一定要做好分区表的备份工作;如果没有做备份的话,请下载一个DISKGEN软件,然后在工具选项中,选备份分区表,一般默认是备份到软驱上面的,如果你没有软驱,就要改一下路经,输出到硬盘目录里。然后你应该把这个备份文件刻录到光盘或者是拷贝到U盘里,千万不要放到硬盘里哦,那样就与没有备份的效果一个样了!

4、误删除之后的数据恢复
  在计算机使用过程中我们最常见的数据恢复就是误删除之后的数据恢复了,但是在这个时候一定要记住,千万不要再向该分区或者磁盘写入信息,因为刚被删除的文件被恢复的可能性最大。实际上当用fdisk删除了硬盘分区之后,表面现象是硬盘中的数据已经完全消失,在未格式化时进入硬盘会显示无效驱动器。如果了解fdisk的工作原理,就会知道,fdisk只是重新改写了硬盘的主引导扇区(0面0道1扇区)中的内容 。具体说就是删除了硬盘分区表信息,而硬盘中的任何分区的数据均没有改变。由于删除与格式化操作对于文件的数据部分实质上丝毫未动,这样,就给文件恢复提供了可能性。我们只要利用一些反删除软件(它的工作原理是通过对照分区表来恢复文件的),用户可以轻松地实现文件恢复的目的。同时误格式化同误删除的恢复方法在使用上基本上没有大的区别,只要没有用Fdisk命令打乱分区的硬盘(利用FDISK命令对于40G以内的硬盘进行分区,还是很方便实用的,所有启动盘上都有,主板支持也没有任何问题),要恢复的文件所占用的簇不被其他文件占用,这样,格式化前的大部分数据仍是可以被恢复的。而且如果你的Windows系统还可以正常使用的话,那么最简单的恢复方法就是用Windows版EasyRecovery软件,它恢复硬盘数据的功能十分强大,不仅能恢复被从回收站清除的文件,而且还能恢复被格式化的FAT16、FAT32或NTFS分区中的文件。

  该软件的使用方法十分简单,解压缩安装以后,运行EasyRecovery,出现主界面。左侧4个功能的按钮以及2个软件支持按钮,磁盘诊断可以帮助我们测试潜在硬件故障、监视并报告潜在驱动器故障、查看驱动器空间使用详细资料、IDE硬盘跳线设置、以及分析文件结构和创建可引导的诊断磁盘。而且6个功能按钮提供的数据恢复选项功能,对于我们需要的硬盘资料恢复来说至关重要,EasyRecovery Professional提供了多种数据恢复选项。其中包括:使用高级选项自定义数据恢复功能、查找并恢复已删除文件、从一个已格式化的卷中恢复文件、不以来任何文件系统结构信息进行恢复此软件还可以保存恢复数据进度以及创建可引导的紧急引导软盘。

  实际操作中,我们将选择高级选项自定义数据恢复功能来进行数据恢复操作,经过扫描系统会显示磁盘驱动器信息,在这里我们选择了恢复资料的硬盘分区C盘,按照提示要求,点击“下一步”后软件EasyRecovery Professional将自动扫描分区,之后会把所有详细文件信息显示出来,其中包括目前还存在的和已经被删除的文件。紧接着要选中你想恢复的文件,选择“下一步”进入到选择目标位置屏幕,过一会后EasyRecovery成功的找回了丢失的文件,这时选择“取消”退出该工具即可。

  以上是当我们遇到硬盘数据丢失后如何进行数据恢复的几种方法,相信这些对于电脑高手的朋友们来说真的不算什么,但还有不少初学电脑的朋友在为硬盘数据的丢失而苦恼啊!通过今天简单介绍的几种方法,衷心希望能对大家有点帮助。

  1、什么时候使用多路由协议?
  
  当两种不同的路由协议要交换路由信息时,就要用到多路由协议。当然,路由再分配也可以交换路由信息。下列情况不必使用多路由协议:
  
  从老版本的内部网关协议( Interior Gateway Protocol,I G P)升级到新版本的I G P。
  
  你想使用另一种路由协议但又必须保留原来的协议。
  
  你想终 止内部路由,以免受到其他没有严格过滤监管功能的路由器的干扰。
  
  你在一个由多个厂家的路由器构成的环境下。
  
  什么是距离向量路由协议?
  
  距离向量路由协议是为小型网络环境设计的。在大型网络环境下,这类协议在学习路由及保持路由将产生较大的流量,占用过多的带宽。如果在9 0秒内没有收到相邻站点发送的路由选择表更新,它才认为相邻站点不可达。每隔30秒,距离向量路由协议就要向相邻站点发送整个路由选择表,使相邻站点的路由选择表得到更新。这样,它就能从别的站点(直接相连的或其他方式连接的)收集一个网络的列表,以便进行路由选择。距离向量路由协议使用跳数作为度量值,来计算到达目的地要经过的路由器数。
  
  例如,R I P使用B e l l m a n – F o r d算法确定最短路径,即只要经过最小的跳数就可到达目的地的线路。最大允许的跳数通常定为1 5。那些必须经过1 5个以上的路由器的终端被认为是不可到达的。
  
  距离向量路由协议有如下几种: IP RIP、IPX RIP、A p p l e Talk RT M P和I G R P。
  
  什么是链接状态路由协议?
  
  链接状态路由协议更适合大型网络,但由于它的复杂性,使得路由器需要更多的C P U资源。它能够在更短的时间内发现已经断了的链路或新连接的路由器,使得协议的会聚时间比距离向量路由协议更短。通常,在1 0秒钟之内没有收到邻站的H E L LO报文,它就认为邻站已不可达。一个链接状态路由器向它的邻站发送更新报文,通知它所知道的所有链路。它确定最优路径的度量值是一个数值代价,这个代价的值一般由链路的带宽决定。具有最小代价的链路被认为是最优的。在最短路径优先算法中,最大可能代价的值几乎可以是无限的。
  
  如果网络没有发生任何变化,路由器只要周期性地将没有更新的路由选择表进行刷新就可以了(周期的长短可以从3 0分钟到2个小时)。
  
  链接状态路由协议有如下几种: IP OSPF、IPX NLSP和I S – I S。
  
  一个路由器可以既使用距离向量路由协议,又使用链接状态路由协议吗?
  
  可以。每一个接口都可以配置为使用不同的路由协议;但是它们必须能够通过再分配路由来交换路由信息。(路由的再分配将在本章的后面进行讨论。)
  
  2、什么是访问表?
  
  访问表是管理者加入的一系列控制数据包在路由器中输入、输出的规则。它不是由路由器自己产生的。访问表能够允许或禁止数据包进入或输出到目的地。访问表的表项是顺序执行的,即数据包到来时,首先看它是否是受第一条表项约束的,若不是,再顺序向下执行;如果它与第一条表项匹配,无论是被允许还是被禁止,都不必再执行下面表项的检查了。
  
  每一个接口的每一种协议只能有一个访问表。
  
  支持哪些类型的访问表?
  
  一个访问表可以由它的编号来确定。具体的协议及其对应的访问表编号如下:
  
  ◎I P标准访问表编号:1~9 9
  
  ◎I P扩展访问表编号:1 0 0~1 9 9
  
  ◎I P X标准访问表编号:8 0 0~8 9 9
  
  ◎I P X扩展访问表编号:1 0 0 0~1 0 9 9
  
  ◎AppleTa l k访问表编号:6 0 0~6 9 9
  
  提示在Cisco IOS Release11.2或以上版本中,可以用有名访问表确定编号在1~199的访问表。
  
  如何创建IP标准访问表?
  
  一个I P标准访问表的创建可以由如下命令来完成: Access-list access list number {permit   deny} source [source-mask]
  
  在这条命令中:
  
  ◎access list number:确定这个入口属于哪个访问表。它是从1到9 9的数字。
  
  ◎permit   deny:表明这个入口是允许还是阻塞从特定地址来的信息流量。
  
  ◎source:确定源I P地址。
  
  ◎s o u r c e – m a s k:确定地址中的哪些比特是用来进行匹配的。如果某个比特是"1",表明地址中该位比特不用管,如果是"0"的话,表明地址中该位比特将被用来进行匹配。可以使用通配符。
 以下是一个路由器配置文件中的访问表例子:
  
  Router# show access-lists
  
  Standard IP access list 1
  
  deny 204.59.144.0, wildcard bits 0.0.0.255
  
  ermit any

  3、什么时候使用路由再分配?
  
  路由再分配通常在那些负责从一个自治系统学习路由,然后向另一个自治系统广播的路由器上进行配置。如果你在使用I G R P或E I G R P,路由再分配通常是自动执行的。

  4、什么是管理距离?
  
  管理距离是指一种路由协议的路由可信度。每一种路由协议按可靠性从高到低,依次分配一个信任等级,这个信任等级就叫管理距离。对于两种不同的路由协议到一个目的地的路由信息,路由器首先根据管理距离决定相信哪一个协议。
  
  5、如何配置再分配?
  
  在进行路由再分配之前,你必须首先:
  
  1) 决定在哪儿添加新的协议。
  
  2) 确定自治系统边界路由器(ASBR)。
  
  3) 决定哪个协议在核心,哪个在边界。
  
  4) 决定进行路由再分配的方向。
  
  可以使用以下命令再分配路由更新(这个例子是针对OSPF的):
  
  router(config-router)#redistribute protocol [process-id] [metric metric – value ] [metric-type type – value ] [subnets]
  
  在这个命令中:
  
  ◎protocol:指明路由器要进行路由再分配的源路由协议。
  
  主要的值有: bgp、eqp、igrp、isis、ospf、static [ ip ]、connected和rip。
  
  ◎process-id:指明OSPF的进程ID。
  
  ◎metric:是一个可选的参数,用来指明再分配的路由的度量值。缺省的度量值是0。
  
  6、为什么确定毗邻路由器很重要?
  
  在一个小型网络中确定毗邻路由器并不是一个主要问题。因为当一个路由器发生故障时,别的路由器能够在一个可接受的时间内收敛。但在大型网络中,发现一个故障路由器的时延可能很大。知道毗邻路由器可以加速收敛,因为路由器能够更快地知道故障路由器,因为hello报文的间隔比路由器交换信息的间隔时间短。
  
  使用距离向量路由协议的路由器在毗邻路由器没有发送路由更新信息时,才能发现毗邻路由器已不可达,这个时间一般为10~90秒。而使用链接状态路由协议的路由器没有收到hello报文就可发现毗邻路由器不可达,这个间隔时间一般为10秒钟。
  
  距离向量路由协议和链接状态路由协议如何发现毗邻路由器?
  
  使用距离向量路由协议的路由器要创建一个路由表(其中包括与它直接相连的网络),同时它会将这个路由表发送到与它直接相连的路由器。毗邻路由器将收到的路由表合并入它自己的路由表,同时它也要将自己的路由表发送到它的毗邻路由器。使用链接状态路由协议的路由器要创建一个链接状态表,包括整个网络目的站的列表。在更新报文中,每个路由器发送它的整个列表。当毗邻路由器收到这个更新报文,它就拷贝其中的内容,同时将信息发向它的邻站。在转发路由表内容时没有必要进行重新计算。
  
  注意使用IGRP和EIGRP的路由器广播hello报文来发现邻站,同时像OSPF一样交换路由更新信息。EIGRP为每一种网络层协议保存一张邻站表,它包括邻站的地址、在队列中等待发送的报文的数量、从邻站接收或向邻站发送报文需要的平均时间,以及在确定链接断开之前没有从邻站收到任何报文的时间.

  7、什么是自治系统?
  
  一个自治系统就是处于一个管理机构控制之下的路由器和网络群组。它可以是一个路由器直接连接到一个LAN上,同时也连到Internet上;它可以是一个由企业骨干网互连的多个局域网。在一个自治系统中的所有路由器必须相互连接,运行相同的路由协议,同时分配同一个自治系统编号。自治系统之间的链接使用外部路由协议,例如B G P。

  8、什么是BGP?
  
  BGP(Border GatewayProtocol)是一种在自治系统之间动态交换路由信息的路由协议。一个自治系统的经典定义是在一个管理机构控制之下的一组路由器,它使用IGP和普通度量值向其他自治系统转发报文。
  
  在BGP中使用自治系统这个术语是为了强调这样一个事实:一个自治系统的管理对于其他自治系统而言是提供一个统一的内部选路计划,它为那些通过它可以到达的网络提供了一个一致的描述。
  
  9、BGP支持的会话种类?
  
  BGP相邻路由器之间的会话是建立在TCP协议之上的。TCP协议提供一种可靠的传输机制,支持两种类型的会话:
  
  o 外部BGP(EBGP):是在属于两个不同的自治系统的路由器之间的会话。这些路由器是毗邻的,共享相同的介质和子网。
  
  o 内部BGP(IBGP):是在一个自治系统内部的路由器之间的会话。它被用来在自治系统内部协调和同步寻找路由的进程。BGP路由器可以在自治系统的任何位置,甚至中间可以相隔数个路由器。
  
  注意"初始的数据流的内容是整个BGP路由表。但以后路由表发生变化时,路由器只传送变化的部分。BGP不需要周期性地更新整个路由表。因此,在连接已建立的期间,一个BGP发送者必须保存有当前所有同级路由器共有的整个BGP路由表。BGP路由器周期性地发送Keep Alive消息来确认连接是激活的。当发生错误或特殊情况时,路由器就发送Notification消息。当一条连接发生错误时,会产生一个 notification消息并断开连接。"-来自RFC11654、BGP操作。
  
  10、BGP允许路由再分配吗?
  
  允许。因为BGP主要用来在自治系统之间进行路由选择,所以它必须支持RIP、OSPF和 IGRP的路由选择表的综合,以便将它们的路由表转入一个自治系统。BGP是一个外部路由协议,因此它的操作与一个内部路由协议不同。在BGP中,只有当一条路由已经存在于IP路由表中时,才能用NETWORK命令在BGP路由表中创建一条路由。

  11、如何显示在数据库中的所有BGP路由?
  
  要显示数据库中的所有BGP路由,只需在EXEC命令行下输入:
  
  how ip bgp paths
  
  这个命令的输出可能是:
  
  Address Hash Refcount MetricPath
  
  0 x 2 9 7 A 9 C 0 2 0 i

  12、什么是水平分割?
  
  水平分割是一种避免路由环的出现和加快路由汇聚的技术。由于路由器可能收到它自己发送的路由信息,而这种信息是无用的,水平分割技术不反向通告任何从终端收到的路由更新信息,而只通告那些不会由于计数到无穷而清除的路由。
  
  13、路由环是如何产生的?
  
  由于网络的路由汇聚时间的存在,路由表中新的路由或更改的路由不能够很快在全网中稳定,使得有不一致的路由存在,于是会产生路由环。
  
  14、什么是度量值?
  
  度量值代表距离。它们用来在寻找路由时确定最优路由。每一种路由算法在产生路由表时,会为每一条通过网络的路径产生一个数值(度量值),最小的值表示最优路径。度量值的计算可以只考虑路径的一个特性,但更复杂的度量值是综合了路径的多个特性产生的。一些常用的度量值有:
  
  ◎跳步数:报文要通过的路由器输出端口的个数。
  
  ◎Ticks:数据链路的延时(大约1/18每秒)。
  
  ◎代价:可以是一个任意的值,是根据带宽,费用或其他网络管理者定义的计算方法得到的。
  
  ◎带宽:数据链路的容量。
  
  ◎时延:报文从源端传到目的地的时间长短。
  
  ◎负载:网络资源或链路已被使用的部分的大小。
  
  ◎可靠性:网络链路的错误比特的比率。
  
  ◎最大传输单元(MTU):在一条路径上所有链接可接受的最大消息长度(单位为字节)。
  
  IGRP使用什么类型的路由度量值?这个度量值由什么组成?
  
  IGRP使用多个路由度量值。它包括如下部分:
  
  ◎带宽:源到目的之间最小的带宽值。
  
  ◎时延:路径中积累的接口延时。
  
  ◎可靠性:源到目的之间最差的可能可靠性,基于链路保持的状态。
  
  ◎负载:源到目的之间的链路在最坏情况下的负载,用比特每秒表示。
  
  ◎MTU:路径中最小的M T U值。

  15、度量值可以修改或调整吗?
  
  加一个正的偏移量。这个命令的完整结构如下:可以使用OFFSET-LIST ROUTER子命令
  
  为访问表中的网络输入和输出度量值添加一个正的偏移量。
  
  offset-list {in out} offset [access-list] no offset-list {in out} offset [access-list]
  
  如果参数LIST的值是0,那么OFFSET参数将添加到所有的度量值。如果OFFSET的值是0,那么就没有任何作用。对于IGRP来说,偏移量的值只加到时延上。这个子命令也适用于RIP和hello路由协议。
  
  使用带适当参数的NO OFFSET- LIST命令可以清除这个偏移量。
  
  在以下的例子中,一个使用IGRP的路由器在所有输出度量值的时延上加上偏移量10: offset-list out 10
  
  下面是一个将相同的偏移量添加到访问表121上的例子:
  
  offset-list out 10 121

  16、每个路由器在寻找路由时需要知道哪五部分信息?
  
  所有的路由器需要如下信息为报文寻找路由:
  
  ◎目的地址:报文发送的目的主机。
  
  ◎邻站的确定:指明谁直接连接到路由器的接口上。
  
  ◎路由的发现:发现邻站知道哪些网络。
  
  ◎选择路由:通过从邻站学习到的信息,提供最优的(与度量值有关)到达目的地的路径。
  
  ◎保持路由信息:路由器保存一张路由表,它存储所知道的所有路由信息。
  
  17、Cisco路由器支持的路由协议与其他厂家设备的协议兼容吗?
  
  除了IGRP和EIGRP,Cisco路由器支持的所有路由协议都与其他厂家实现的相同协议兼容。IGRP和EIGRP是Cisco的专利产品。

  18、RIP路由表的表项的信息说明了什么?
  
  RIP路由表的每一个表项都提供了一定的信息,包括最终目的地址、到目的地的下一跳地址和度量值。这个度量值表示到目的终端的距离(跳步数)。其他的信息也可以包括。
  
  路由器问题补充:
  
  1、Cisco3600系列路由器目前是否支持广域网接口卡WIC-2T和WIC-2A/S?
  
  Cisco3600系列路由器在12.007XK及以上版本支持WIC-2T和WIC-2A/S这两种广域网接口卡。
  
  但是需要注意的是:
  
  只有快速以太网混合网络模块能够支持这两种广域网接口卡。
  
  支持这两种接口卡的网络模块如下所示:
  
  NM-1FE2W, NM-2FE2W, NM-1FE1R2W, NM-2W。
  
  而以太网混合网络模块不支持,如下所示:
  
  NM-1E2W,NM-2E2W, NM1E1R2W。
  
  19、Cisco3600系列路由器的NM(4A/S,NM(8A/S网络模块和WIC(2A/S广域网接口卡支持的最大异/同步速率各是多少?
  
  这些网络模块和广域网接口卡既能够支持异步,也能够支持同步。支持的最大异步速率均为115.2Kbps,最大同步速率均为128Kbps。

  20、WIC-2T与WIC-1T的电缆各是哪种?
  
  WIC-1T:DB60转V35或RS232、 449等电缆。 如:CAB-V35-MT。
  
  WIC-2T:SMART型转V35或RS232、 449等电缆。 如: CAB-SS-V35-MT。
  
  21、Cisco 7000系列上的MCE1与Cisco 2600/3600上的E1、 CE1有什么区别?
  
  Cisco 7000上的MCE1可配置为E1、 CE1, 而Cisco 2600/3600上的E1、 CE1仅支持自己的功能。
  
  22、Cisco 2600系列路由器,是否支持VLAN间路由,对IOS软件有何需求?
  
  Cisco(2600系列路由器中,只有Cisco2620和Cisco2621可以支持VLAN间的 路由(百兆端口才支持VLAN间路由)。并且如果支持VLAN间路由,要求IOS软件必须包括IP Plus特性集。
  
  23、Cisco3660路由器与3620/3640路由器相比在硬件上有那些不同?
  
  不同点如下:
  
  * Cisco3660路由器基本配置包括1或2个10/100M自适应快速以太网接口;而Cisco3620/3640基本配置中不包括以太网接口。
  
  * Cisco3660路由器支持网络模块热插拔,而 Cisco3620/3640不支持网络模块热插拔。
  
  * Cisco3660的冗余电源为内置, 而Cisco3620/3640的冗余电源为外置的。

  24、为什么3640不能识别NM-1FE2W?
  
  需要将IOS升级到12.0.7T
  
  交换机问题
  
  关于交换机问题:
  
  1、Catalyst 35500XL/2950XL的堆叠是如何实现的?
  
  a. 需要使用专门的堆叠电缆,1米长或50厘米长(CAB-GS-1M或CAB-GS-50CM)以及专门的千兆堆叠卡GigaStack GBIC (WS-X3550-XL) (该卡已含CAB-GS-50CM 堆叠电缆)。
  
  b. 可以选用2种堆叠方法:菊花链法(提供1G的带宽)或点对点法(提供 2G的带宽)。
  
  c. 2种方法都可以做备份。
  
  d. 菊花链法最多可支持9台交换机的堆叠, 点对点法最多可支持8台。
2、Catalyst 3550 XL系列交换机做堆叠时,是否支持冗余备份?
  
  Catalyst3550XL系列交换机的堆叠有两种实现方法:菊花链方式和点到点方式。
  
  当使用菊花链方式时,堆叠的交换机依次连接,交换机之间可以达到1Gbps的传输带宽;
  
  当使用点到点方式时,需要一台单独的 Catalyst3508G-XL交换机,
  
  其余的交换机通过堆叠GBIC卡和堆叠线缆与3508G相连,这种方法最大可以达到2Gbps的全双工传输带宽。  
  
  这两种方法都分别支持堆叠的冗余连接。当使用菊花链连接方式时,冗余连接是通过将最上面的交换机与最下面的交换机用堆叠线缆相连接完成的。而当使用点到点连接时,是通过使用第2台3508交换机来完成的。
  
  25、 Catalyst3550 XL的一个千兆口使用堆叠卡做堆叠后, 另外一个千兆口是否可以连接千兆的交换机或千兆的服务器?
  
  可以。需使用1000Base-SX GBIC或1000Base-LX/LH GBIC。
  
  26、 Ethernet Channel Tech. 可以应用在什么网络设备之间?如何使用?
  
  可以应用在交换机之间, 交换机和路由器之间,交换机和服务器之间
  
  可以将2个或4个10/100Mbps或1000Mbps端口使用 Ethernet Channel Tech.,达到最多400M(10/100Mbps端口)、4G(1000Mbps端口) 或800M(10/100Mbps端口)、8G(1000Mbps端口) 的带宽。
  
  27、Ethernet Channel Technology有什么作用?
  
  增加带宽,负载均衡,线路备份

  28、 当端口设置成 Ethernet Channel时,如何选择线路?
  
  根据数据帧的以太网源地址和目的地址最后1位或2位做或运算,决定从哪条链路输出。对于路由器来说是根据网络地址做或运算,以决定链路的输出。
  
  29、Ethernet Channel Technology 与 PAgP (Port Aggregation Protocol ) 的区别?
  
  PAgP是 Ethernet Channel的增强版,它支持在 Ethernet Channel 上的 Spanning Tree Protocol和Uplink Fast,并支持自动配置 Ethernet Channel 的捆绑。
  
  最少需要的电源数 1 2
  
  包转发速率 18Mpps 18Mpps
  
  背板带宽 24Gbps 60Gbps

  30、Catalyst4000系列是否支持ISL?
  
  从Supervisor Engine Software Release 5.1开始支持。

  31、Catalyst4000交换机的冗余电源选项4008/2和4008/3有何区别?
  
  Catalyst4003交换机机箱上有两个电源插槽,出厂时本身自带一个电源,4008/2是专为其定制的冗余电源。Catalyst4006的机箱上有三个电源插槽,出厂时带有2个电源供电,4008/3是为其定制的专用冗余电源。

  32、Catalyst 4006的三层交换模块是否不含以太网端口?  

  不,Catalyst4006的三层交换模块含有32个10/100自适应端口和2个千兆端口。 在4003上使用时可替代原有的WS-X4232-GB-RJ模块, 从而不影响网络结构。
  
  33、Catalyst 4000系列模块化交换机使用千兆交换模块时, 如何选用目前存在的两种交换模块(产品编号如下)?
  
  WS-X4306-GB Catalyst 4000 Gigabit Ethernet Module, 6-Ports (GBIC)
  
  WS-X4418-GB Catalyst 4000 GE Module, Server Switching 18-Ports (GBIC)
  
  这两个模块的使用环境不同
  
  WS-X4306-GB是一个6口的千兆交换模块,每个端口独占千兆的带宽,适合做网络的主干,用来连接具有千兆接口的交换机;也可以与具有千兆网卡的服务器相连。
  
  WS-X4418-GB 是一个18口的千兆交换模块,其中有两个口是独占千兆的带宽,另外16个口共享8G的全双工的带宽,但每个端口可以突发到千兆。此模块适合在服务器比较集中的地方连接千兆的服务器,而不适合连接网络主干。

  34、Catalyst 6000系列的背板带宽和包转发速率各为多少?
  
  Catalyst 6500系列的背板带宽可扩展到256Gbps, 包转发速率可扩展到150Mpps; Catalyst 6000系列作为一个经济有效的解决方案可提供到32Gbps的背板带宽和15Mpps的包转发速率。
  
  35、Catalyst 6000系列的MSFC 要求多少M DRAM ?
  
  Catalyst 6000系列IOS软件存放在MSFC里, MSFC要求有128M DRAM。 缺省配置已含128M DRAM。
  
  36、Catalyst 6000系列上的插槽是否有限制?
  
  除第一个插槽专用于引擎, 第二个插槽可用于备份引擎或线卡, 其它插槽都用于线卡。
  
  37、Catalyst 6000系列有几种引擎?
  
  Catalyst 6000系列的引擎分为Supervisor Engine 1和Supervisor Engine 1A两种, 其中 Supervisor Engine 1A 有两个特定的备份引擎。其型号分别如下: 型号 描述
  
  WS-X6K-SUP1-2GE Catalyst 6000 Supervisor Engine1引擎 含两个千兆端口(需购GBIC)
  
  WS-X6K-SUP1A-2GE Catalyst 6000 Supervisor Engine1A引擎 加强的QOS特性, 含两个千兆端口(需购GBIC)
  
  WS-X6K-SUP1A-PFC Catalyst 6000 Supervisor Engine1A引擎 含两个千兆端口(需购GBIC)和PFC卡
  
  WS-X6K-S1A-PFC/2 Catalyst 6000 Supervisor Engine1A冗余引擎 含两个千兆端口(需购GBIC)和PFC卡
  
  WS-X6K-SUP1A-MSFC Catalyst 6000 Supervisor Engine1A引擎 含两个千兆端口(需购GBIC)和MSFC、 PFC卡
  
  WS-X6K-S1A-MSFC/2 Catalyst 6000 Supervisor Engine1A冗余引擎, 含两个千兆端口(需购GBIC)和MSFC、 PFC卡

  38、Catalyst 6000系列上备份引擎与主引擎必须是一致的吗?
  
  是的。 Catalyst 6000系列的备份引擎与主引擎必须是一致的,
  
  例如, 不能将不带MSFC&PFC的引擎给带MSFC&PFC的引擎作备份。
  
  另外, WS-X6K-SUP1A-PFC 和 WS-X6K-SUP1A-MSFC有专门的备份引擎
 主、备引擎的对应关系如下:
  
  主引擎 备份引擎
  
  WS-X6K-SUP1-2GE WS-X6K-SUP1-2GE
  
  WS-X6K-SUP1A-2GE WS-X6K-SUP1A-2GE
  
  WS-X6K-SUP1A-PFC WS-X6K-S1A-PFC/2
  
  WS-X6K-SUP1A-MSFC WS-X6K-S1A-MSFC/2
  
  39、Catalyst 6000系列支持的路由协议有哪些?
  
  Catalyst 6000系列支持的路由协议有:OSPF, IGRP, EIGRP, BGP4, IS-IS, RIP和RIP II;
  
  对于组播PIM支持sparse和dense两种模式;
  
  支持的非 IP 路由协议有: NLSP, IPX RIP/SAP, IPX EIGRP, RTMP, Apple Talk EIGRP和DECnet Phase IV和V。
  
  40、Catalyst 6000系列支持的网络协议有哪些?
  
  MSM上支持 6Mpps 的 IP、 IP 组播和 IPX 。 引擎上的MSFC 支持 15Mpps的 IP、 IP 组播、IPX以及 AppleTalk、 VINEs、 DECnet.
  
  41、Catalyst6000上若引擎为SUP-1A-2GE, 怎么实现三层交换的功能?
  
  用MSM实现。 6000上只有含有MSFC的引擎才能通过MSFC实现三层交换功能, 在6000上, MSFC是不能单独订购的。
  
  42、Catalyst? 6000交换机和Catalyst? 6500交换机有何区别?6000交换机是否可以升级到6500交换机?
  
  Catalyst? 6000系列交换机的背板带宽为32G,而6500系列交换机的背板带宽最大可以扩展到256G。由于这两个系列的交换机使用的背板总线结构不同,所以6000交换机不能升级到6500系列交换机。
  
  但这两个系列交换机使用相同的交换模块。
  
  43、Catalyst3508G是否也可以同Catalyst3524一样采用菊花链堆叠模式?
  
  完全可以。
  
  44、在交换机之间配置Uplink-Fast时,是否需要关闭原有Spanning-Tree选项?
  
  不需要,Uplink-Fast实际上使用的是一种简化的Spanning-Tree算法, 与标准的Spanning-Tree兼容,因此不需关闭该功能。

网络经典命令行
(前面的是基本的东西,建议仔细看看!)

1.最基本,最常用的,测试物理网络的
ping 192.168.0.8 -t ,参数-t是等待用户去中断测试

2.查看DNS、IP、Mac等
A.Win98:winipcfg
B.Win2000以上:Ipconfig/all

C.NSLOOKUP:如查看河北的DNS
C:>nslookup
Default Server: ns.hesjptt.net.cn
Address: 202.99.160.68
>server 202.99.41.2 则将DNS改为了41.2
> pop.pcpop.com
Server: ns.hesjptt.net.cn
Address: 202.99.160.68

Non-authoritative answer:
Name: pop.pcpop.com
Address: 202.99.160.212

3.网络信使 (经常有人问的~)
Net send 计算机名/IP|* (广播) 传送内容,注意不能跨网段
net stop messenger 停止信使服务,也可以在面板-服务修改
net start messenger 开始信使服务

4.探测对方对方计算机名,所在的组、域及当前用户名 (追捕的工作原理)
ping -a IP -t ,只显示NetBios名
nbtstat -a 192.168.10.146 比较全的

5.netstat -a 显示出你的计算机当前所开放的所有端口
netstat -s -e 比较详细的显示你的网络资料,包括TCP、UDP、ICMP 和 IP的统计等

6.探测arp绑定(动态和静态)列表,显示所有连接了我的计算机,显示对方IP和MAC地址
arp -a

7.在代理服务器端
捆绑IP和MAC地址,解决局域网内盗用IP!:
ARP -s 192.168.10.59 00 -50-ff-6c-08-75
解除网卡的IP与MAC地址的绑定:
arp -d 网卡IP

8.在网络邻居上隐藏你的计算机 (让人家看不见你!)
net config server /hidden:yes
net config server /hidden:no 则为开启

9.几个net命令
A.显示当前工作组服务器列表 net view,当不带选项使用本命令时,它就会显示当前域或网络上的计算机上的列表。
比如:查看这个IP上的共享资源,就可以
C:>net view 192.168.10.8
在 192.168.10.8 的共享资源
资源共享名 类型 用途 注释

网站服务 Disk
命令成功完成。

B.查看计算机上的用户帐号列表 net user
C.查看网络链接 net use
例如:net use z: \192.168.10.8movie 将这个IP的movie共享目录映射为本地的Z盘

D.记录链接 net session
例如:
C:>net session
计算机 用户名 客户类型 打开空闲时间

\192.168.10.110 ROME Windows 2000 2195 0 00:03:12

\192.168.10.51 ROME Windows 2000 2195 0 00:00:39
命令成功完成。

10.路由跟踪命令
A.tracert pop.pcpop.com
B.pathping pop.pcpop.com 除了显示路由外,还提供325S的分析,计算丢失包的%

11.关于共享安全的几个命令
A.查看你机器的共享资源 net share
B.手工删除共享(可以编个bat文件,开机自运行,把共享都删了!)
net share c$ /d
net share d$ /d
net share ipc$ /d
net share admin$ /d
注意$后有空格。
C.增加一个共享:
c:
et share mymovie=e:downloadsmovie /users:1
mymovie 共享成功。
同时限制链接用户数为1人

12.在DOS行下设置静态IP
A.设置静态IP
CMD
netsh
netsh>int
interface>ip
interface ip>set add "本地链接" static IP地址 mask gateway
B.查看IP设置
interface ip>show address

Arp
显示和修改“地址解析协议 (ARP)”缓存中的项目。ARP 缓存中包含一个或多个表,它们用于存储 IP 地址及其经过解析的以太网或令牌环物理地址。计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表。如果在没有参数的情况下使用,则 arp 命令将显示帮助信息。

语法
arp [-a [InetAddr] [-N IfaceAddr]] [-g [InetAddr] [-N IfaceAddr]] [-d InetAddr [IfaceAddr]] [-s InetAddr EtherAddr [IfaceAddr]]
参数
-a [InetAddr] [-N IfaceAddr]
显示所有接口的当前 ARP 缓存表。要显示指定 IP 地址的 ARP 缓存项,请使用带有 InetAddr 参数的 arp -a,此处的 InetAddr 代表指定的 IP 地址。要显示指定接口的 ARP 缓存表,请使用 -N IfaceAddr 参数,此处的 IfaceAddr 代表分配给指定接口的 IP 地址。-N 参数区分大小写。
-g [InetAddr] [-N IfaceAddr]
与 -a 相同。
-d InetAddr [IfaceAddr]
删除指定的 IP 地址项,此处的 InetAddr 代表 IP 地址。对于指定的接口,要删除表中的某项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。要删除所有项,请使用星号 (*) 通配符代替 InetAddr。
-s InetAddr EtherAddr [IfaceAddr]
向 ARP 缓存添加可将 IP 地址 InetAddr 解析成物理地址 EtherAddr 的静态项。要向指定接口的表添加静态 ARP 缓存项,请使用 IfaceAddr 参数,此处的 IfaceAddr 代表分配给该接口的 IP 地址。
/?

注释
InetAddr 和 IfaceAddr 的 IP 地址用带圆点的十进制记数法表示。
物理地址 EtherAddr 由六个字节组成,这些字节用十六进制记数法表示并且用连字符隔开(比如,00-AA-00-4F-2A-9C)。
通过 -s 参数添加的项属于静态项,它们不会 ARP 缓存中超时。如果终止 TCP/IP 协议后再启动,这些项会被删除。要创建永久的静态 ARP 缓存项,请在批处理文件中使用适当的 arp 命令并通过“计划任务程序”在启动时运行该批处理文件。
只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时,该命令才可用。

范例
要显示所有接口的 ARP 缓存表,可键入:

arp -a

对于指派的 IP 地址为 10.0.0.99 的接口,要显示其 ARP 缓存表,可键入:

arp -a -N 10.0.0.99

要添加将 IP 地址 10.0.0.80 解析成物理地址 00-AA-00-4F-2A-9C 的静态 ARP 缓存项,可键入:

arp -s 10.0.0.80 00-AA-00-4F-2A-9C

At
计划在指定时间和日期在计算机上运行命令和程序。at 命令只能在“计划”服务运行时使用。如果在没有参数的情况下使用,则 at 列出已计划的命令。

语法
at [\ComputerName] [{[ID] [/delete]|/delete [/yes]}]

at [[\ComputerName] hours:minutes [/interactive] [{/every:date[,…]|/next:date[,…]}] command]

参数
\computername
指定远程计算机。如果省略该参数,则 at 计划本地计算机上的命令和程序。
ID
指定指派给已计划命令的识别码。
/delete
取消已计划的命令。如果省略了 ID,则计算机中所有已计划的命令将被取消。
/yes
删除已计划的事件时,对来自系统的所有询问都回答“是”。
hours:minutes
指定命令运行的时间。该时间用 24 小时制(即从 00:00 [午夜] 到 23:59)的 小时: 分钟格式表示。
/interactive
对于在运行 command 时登录的用户,允许 command 与该用户的桌面进行交互。
/every:
在每个星期或月的指定日期(例如,每个星期四,或每月的第三天)运行 command 命令。
date
指定运行命令的日期。可以指定一周的某日或多日(即,键入 M、T、W、Th、F、S、Su)或一个月中的某日或多日(即,键入从 1 到31 之间的数字)。用逗号分隔多个日期项。如果省略了 date,则 at 使用该月的当前日。
/next:
在下一个指定日期(比如,下一个星期四)到来时运行 command。
command
指定要运行的 Windows 命令、程序(.exe 或 .com 文件)或批处理程序(.bat 或 .cmd 文件)。当命令需要路径作为参数时,请使用绝对路径,也就是从驱动器号开始的整个路径。如果命令在远程计算机上,请指定服务器和共享名的通用命名协定 (UNC) 符号,而不是远程驱动器号。
/?
在命令提示符显示帮助。
注释
Schtasks 是功能更为强大的超集命令行计划工具,它含有 at 命令行工具中的所有功能。对于所有的命令行计划任务,都可以使用 schtasks 来替代 at。有关 schtasks 的详细信息,请参阅“相关主题”。

使用 at
使用 at 命令时,要求您必须是本地 Administrators 组的成员。

加载 Cmd.exe
在运行命令之前,At 不会自动加载 Cmd.exe (命令解释器)。如果没有运行可执行文件 (.exe),则在命令开头必须使用如下所示的方法专门加载 Cmd.exe:

cmd /c dir > c: est.out。

查看已计划的命令
当不带命令行选项使用 at 时,计划任务会出现在类似于以下格式的表中:

Status ID Day Time Command Line
OK 1 Each F 4:30 PM net send group leads status due
OK 2 Each M 12:00 AM chkstor > check.file
OK 3 Each F 11:59 PM backup2.bat
包含标识号 (ID)
当在命令提示下使用带有标识号 (ID) 的 at 命令时,单个任务项的信息会显示在类似于下面的格式中:

Task ID: 1

Status:OK

Schedule:Each F

Time of Day:4:30 PM

Command:net send group leads status due当计划带有 at 的命令(尤其是带有命令行选项的命令)后,要通过键入不带命令行选项的 at 来检查该命令语法是否输入正确。如果显示在“命令行”列中的信息不正确,请删除该命令,然后重新键入它。如果还不正确,则可以在重新键入该命令时让它少带些命令行选项。

查看结果
使用 at 的已经计划的命令作为后台程序运行。运行结果不会显示在计算机上。要将输出重定向到文件,请使用重定向符号 (> )。如果将输出重定向到文件,则不论是在命令行还是在批处理文件中使用 at,都需要在重定向符号之前使用转义符 (^)。例如,要重定向输出到 Output.text 文件,则要键入:

at 14:45 c: est.bat ^>c:output.txt

执行命令的当前目录为 systemroot 文件夹

更改系统时间
在使用 at 命令计划了要运行的命令之后,如果更改了计算机的系统时间,则通过键入不带命令行选项的 at 可使 at 计划程序与修改后的系统时间同步。

存储命令
已计划的命令存储在注册表中。这样,如果重新启动“计划”服务,则不会丢失计划任务。

连接到网络驱动器
对于需要访问网络的计划作业,请不要使用已重新定向的驱动器。“计划”服务可能无法访问这些重定向的驱动器,或者,在该计划任务运行时如果有其他用户登录,则这些重定向的驱动器可能不会出现。因此,对于计划作业,请使用 UNC 路径。例如:

at 1:00pm my_backup \servershare

请不要使用下述语法(其中 x: ?表示由用户建立的连接):

at 1:00pm my_backup x:

如果计划了一个使用驱动器号的 at 命令来连接共享目录,则应包含一个 at 命令以使在完成该驱动器的使用时断开与驱动器的连接。如果不能断开与驱动器的连接,则在命令提示下,所指派的驱动器号将不可用。

范例
要显示 Marketing 服务器上已计划的命令列表,请键入:

at \marketing
要了解服务器 Corp 上标识号为 3 的命令的详细信息,请键入:

at \corp 3
要计划在上午 8:00 于 Corp 服务器上运行网络共享命令,并将该列表重定向到 Maintenance 服务器的 Corp.txt 文件(位于 Reports 共享目录下)中,请键入:

at \corp 08:00 cmd /c "net share reports=d:marketing
eports >> \maintenance
eportscorp.txt"
为了在每五天后的午夜将 Marketing 服务器的硬盘驱动器备份到磁带驱动器,首先创建名为 Archive.cmd 的批处理程序(它含有备份命令),然后计划该批处理程序的运行,为此请键入:

at \marketing 00:00 /every:5,10,15,20,25,30 archive
要取消当前服务器上已计划的所有命令,请按下述方法清除 at 计划信息:

at /delete
如果要运行的命令不是可执行 (.exe) 文件,请按如下所示的方法在该命令之前使用 cmd /c 来加载 Cmd.exe:

cmd /c dir > c: est.out。
Rsh
在运行 RSH 服务的远程计算机上运行命令。Windows XP 和 Windows 2000 不提供 RSH 服务。Windows 2000 Server Resource Kit 提供名为 Rshsvc.exe 的 RSH 服务。使用不带参数的 rsh 显示帮助。

  TCP/IP发展到目前为止,已成为一个最为广泛使用的网络通用协议。被广大计算机使用者所认可。采用TCP/IP,可以方便地进行不同网络种类、不同操作系统的网络间的互联,同时又可以方便地联入Internet。

  在TCP/IP网络互联中,不同网络的互联往往要使用到路由器。传统的基于硬件的路由器价格往往较高,不为一般的单位所接受,而且在联网过程中,常碰到的问题都是将两个或两个以的的局域网互联,也用不着使用昂贵的专用路由器。实际上,有好多网络操作系统本身就提供路由功能,只不过是基于软件的路由而已,如Windows NT的静态路由系统、NOVELL的多协议路由MPR等基于软件的路由技术。

  基于软件的路由,功能上肯定不如基于硬件的专用路由器。但它已具备了路由器的基本功能。可以实现基本的路由功能。采用基于软件的路由,对于小型网络间的互联是比较理想的。下面以网络间的互联为例来说明基于软件的路由技术。

  众所周知,在TCP/IP协议中,IP协议(Internet Protocol)提供编址和路由功能。在网络上发送数据时,数据首先被打包,成为一个个IP数据包。IP允许数据包在网络上从一个地方传到另一个地方。数据在网络中的传输就是通过一种方式进行的。在一个以太网内,把报文从一台机器发送到另一台机器很容易,因为以太网是一个基于广播方式的网络,任何一台机器上发出的报文立即就会被网上的所有机器监听到,只有同报文中地址相同的那台机器才会发出响应,别的机器将忽略此信息。由此可见,在同一网络内部,每一个报文都无须选择路径,就可以直接达到它的目的地。但是,在两个或两个以上的网络互联时,情况就大不一样了。如图1所示,处在网络Counter中的某一台机器要向处在网络Computer Center中的一台机器发送信息时,如果没有从网络Counter到网络Computer Center的路由,则信息是根本无法发到的。

  从上述分析可以知道:既然在同一个网络内信息可以畅通传送,那么如果有这样一台机器就好了:一台既属于网络Counter又属于网络Computer Center的机器。通过它,两个不同的网络就可以相互传递信息了。在各网络已建成的情况下,建立NT路由器,其建立过程如下:

  1、在同一台Windows NT机器中安装两块网卡,网卡可以采用任何NT所支持的网卡。Windows NT可以是Windows NT Server也可以是Windows NT Workstation,版本最好是3.51或更高的版本。本文基于Win?dowsNTServer4.0中文版。

  2、进入控制面板,安装TCP/IP协议

  3、配置网卡:为每一块网卡配置一个IP地址,两个IP地址分别属于不同的网络内的IP地址。

  4、设置Windows NT的IP路由功能为Enable。

  5、确定后重新启动计算机。

  第一节、黑客的种类和行为

  以我的理解,“黑客”大体上应该分为“正”、“邪”两类,正派黑客依靠自己掌握的知识帮助系统管理员找出系统中的漏洞并加以完善,而邪派黑客则是通过各种黑客技能对系统进行攻击、入侵或者做其他一些有害于网络的事情,因为邪派黑客所从事的事情违背了《黑客守则》,所以他们真正的名字叫“骇客”(Cracker)而非“黑客”(Hacker),也就是我们平时经常听说的“黑客”(Cacker)和“红客”(Hacker)。

  无论那类黑客,他们最初的学习内容都将是本部分所涉及的内容,而且掌握的基本技能也都是一样的。即便日后他们各自走上了不同的道路,但是所做的事情也差不多,只不过出发点和目的不一样而已。

  很多人曾经问我:“做黑客平时都做什么?是不是非常刺激?”也有人对黑客的理解是“天天做无聊且重复的事情”。实际上这些又是一个错误的认识,黑客平时需要用大量的时间学习,我不知道这个过程有没有终点,只知道“多多益善”。由于学习黑客完全出于个人爱好,所以无所谓“无聊”;重复是不可避免的,因为“熟能生巧”,只有经过不断的联系、实践,才可能自己体会出一些只可意会、不可言传的心得。

  在学习之余,黑客应该将自己所掌握的知识应用到实际当中,无论是哪种黑客做出来的事情,根本目的无非是在实际中掌握自己所学习的内容。黑客的行为主要有以下几种:

  一、学习技术:

  互联网上的新技术一旦出现,黑客就必须立刻学习,并用最短的时间掌握这项技术,这里所说的掌握并不是一般的了解,而是阅读有关的“协议”(rfc)、深入了解此技术的机理,否则一旦停止学习,那么依靠他以前掌握的内容,并不能维持他的“黑客身份”超过一年。

  初级黑客要学习的知识是比较困难的,因为他们没有基础,所以学习起来要接触非常多的基本内容,然而今天的互联网给读者带来了很多的信息,这就需要初级学习者进行选择:太深的内容可能会给学习带来困难;太“花哨”的内容又对学习黑客没有用处。所以初学者不能贪多,应该尽量寻找一本书和自己的完整教材、循序渐进的进行学习。

  二、伪装自己:

  黑客的一举一动都会被服务器记录下来,所以黑客必须伪装自己使得对方无法辨别其真实身份,这需要有熟练的技巧,用来伪装自己的IP地址、使用跳板逃避跟踪、清理记录扰乱对方线索、巧妙躲开防火墙等。

  伪装是需要非常过硬的基本功才能实现的,这对于初学者来说成的上“大成境界”了,也就是说初学者不可能用短时间学会伪装,所以我并不鼓励初学者利用自己学习的知识对网络进行攻击,否则一旦自己的行迹败露,最终害的害是自己。

  如果有朝一日你成为了真正的黑客,我也同样不赞成你对网络进行攻击,毕竟黑客的成长是一种学习,而不是一种犯罪。

  三、发现漏洞:

  漏洞对黑客来说是最重要的信息,黑客要经常学习别人发现的漏洞,并努力自己寻找未知漏洞,并从海量的漏洞中寻找有价值的、可被利用的漏洞进行试验,当然他们最终的目的是通过漏洞进行破坏或着修补上这个漏洞。

  黑客对寻找漏洞的执著是常人难以想象的,他们的口号说“打破权威”,从一次又一次的黑客实践中,黑客也用自己的实际行动向世人印证了这一点——世界上没有“不存在漏洞”的程序。在黑客眼中,所谓的“天衣无缝”不过是“没有找到”而已。

  四、利用漏洞:

  对于正派黑客来说,漏洞要被修补;对于邪派黑客来说,漏洞要用来搞破坏。而他们的基本前提是“利用漏洞”,黑客利用漏洞可以做下面的事情:

  1、获得系统信息:有些漏洞可以泄漏系统信息,暴露敏感资料,从而进一步入侵系统;

  2、入侵系统:通过漏洞进入系统内部,或取得服务器上的内部资料、或完全掌管服务器;

  3、寻找下一个目标:一个胜利意味着下一个目标的出现,黑客应该充分利用自己已经掌管的服务器作为工具,寻找并入侵下一个系统;

  4、做一些好事:正派黑客在完成上面的工作后,就会修复漏洞或者通知系统管理员,做出一些维护网络安全的事情;

  5、做一些坏事:邪派黑客在完成上面的工作后,会判断服务器是否还有利用价值。如果有利用价值,他们会在服务器上植入木马或者后门,便于下一次来访;而对没有利用价值的服务器他们决不留情,系统崩溃会让他们感到无限的快感!

  第二节、黑客应掌握的基本技能

  从这一节开始,我们就真正踏上学习黑客的道路了,首先要介绍的是作为一名初级黑客所必须掌握的基本技能,学习这可以通过这一节的阅读了解到黑客并不神秘,而且学习起来很容易上手。为了保证初学者对黑客的兴趣,所以本书采取了循环式进度,也就是说每一章节的内容都是独立、全面的,学习者只有完整的学习过一章的内容,才能够进而学习下一章的内容。

  一、了解一定量的英文:

  学习英文对于黑客来说非常重要,因为现在大多数资料和教程都是英文版本,而且有关黑客的新闻也是从国外过来的,一个漏洞从发现到出现中文介绍,需要大约一个星期的时间,在这段时间内网络管理员就已经有足够的时间修补漏洞了,所以当我们看到中文介绍的时候,这个漏洞可能早就已经不存在了。因此学习黑客从一开始就要尽量阅读英文资料、使用英文软件、并且及时关注国外著名的网络安全网站。

  二、学会基本软件的使用:

  这里所说的基本软件是指两个内容:一个是我们日常使用的各种电脑常用命令,例如ftp、ping、net等;另一方面还要学会有关黑客工具的使用,这主要包括端口扫描器、漏洞扫描器、信息截获工具和密码破解工具等。因为这些软件品种多,功能各不相同,所以本书在后面将会介绍几款流行的软件使用方法,学习者在掌握其基本原理以后,既可以选择适合自己的,也可以在“第二部分”中找到有关软件的开发指南,编写自己的黑客工具。

  三、初步了解网络协议和工作原理:

  所谓“初步了解”就是“按照自己的理解方式”弄明白网络的工作原理,因为协议涉及的知识多且复杂,所以如果在一开始就进行深入研究,势必会大大挫伤学习积极性。在这里我建议学习者初步了解有关tcp/ip协议,尤其是浏览网页的时候网络是如何传递信息、客户端浏览器如何申请“握手信息”、服务器端如何“应答握手信息”并“接受请求”等内容,此部分内容将会在后面的章节中进行具体介绍。

  四、熟悉几种流行的编程语言和脚本:

   同上面所述一样,这里也不要求学习者进行深入学习,只要能够看懂有关语言、知道程序执行结果就可以了。建议学习者初步学习C语言、asp和cgi脚本语言,另外对于htm超文本语言和php、java等做基本了解,主要学习这些语言中的“变量”和“数组”部分,因为语言之间存在内在联系,所以只要熟练掌握其中一们,其他语言也可以一脉相同,建议学习C语言和htm超文本语言。

  五、熟悉网络应用程序:

  网络应用程序包括各种服务器软件后台程序,例如:wuftp、Apache等服务器后台;还有网上流行的各种论坛、电子社区。有条件的学习者最好将自己的电脑做成服务器,然后安装并运行一些论坛代码,经过一番尝试之后,将会感性的弄清楚网络工作原理,这比依靠理论学习要容易许多,能够达到事半功倍的效果!

  第三节、常用黑客软件用途分类

  一、防范:

  这是从安全的角度出发涉及的一类软件,例如防火墙、查病毒软件、系统进程监视器、端口管理程序等都属于此类软件。这类软件可以在最大程度上保证电脑使用者的安全和个人隐私,不被黑客破坏。网络服务器对于此类软件的需要也是十分重视的,如日志分析软件、系统入侵软件等可以帮助管理员维护服务器并对入侵系统的黑客进行追踪。

  二、信息搜集:

  信息搜集软件种类比较多,包括端口扫描、漏洞扫描、弱口令扫描等扫描类软件;还有监听、截获信息包等间谍类软件,其大多数属于亦正亦邪的软件,也就是说无论正派黑客、邪派黑客、系统管理员还是一般的电脑使用者,都可以使用者类软件完成各自不同的目的。在大多数情况下,黑客使用者类软件的频率更高,因为他们需要依靠此类软件对服务器进行全方位的扫描,获得尽可能多的关于服务器的信息,在对服务器有了充分的了解之后,才能进行黑客动作。

  三、木马与蠕虫:

  这是两种类型的软件,不过他们的工作原理大致相同,都具有病毒的隐藏性和破坏性,另外此类软件还可以由拥有控制权的人进行操作,或由事先精心设计的程序完成一定的工作。当然这类软件也可以被系统管理员利用,当作远程管理服务器的工具。

  四、洪水:

  所谓“洪水”即信息垃圾炸弹,通过大量的垃圾请求可以导致目标服务器负载超负荷而崩溃,近年来网络上又开始流行DOS分散式攻击,简单地说也可以将其归入此类软件中。洪水软件还可以用作邮件炸弹或者聊天式炸弹,这些都是经过简化并由网络安全爱好者程序化的“傻瓜式”软件,也就是本书一开始指责的“伪黑客”手中经常使用的软件。

  五、密码破解:

  网络安全得以保证的最实用方法是依靠各种加密算法的密码系统,黑客也许可以很容易获得一份暗文密码文件,但是如果没有加密算法,它仍然无法获得真正的密码,因此使用密码破解类软件势在必行,利用电脑的高速计算能力,此类软件可以用密码字典或者穷举等方式还原经过加密的暗文。

  六、欺骗:

  如果希望获得上面提到的明文密码,黑客需要对暗文进行加密算法还原,但如果是一个复杂的密码,破解起来就不是那么简单了。但如果让知道密码的人直接告诉黑客密码的原型,是不是更加方便?欺骗类软件就是为了完成这个目的而设计的。

  七、伪装:

  网络上进行的各种操作都会被ISP、服务器记录下来,如果没有经过很好的伪装就进行黑客动作,很容易就会被反跟踪技术追查到黑客的所在,所以伪装自己的IP地址、身份是黑客非常重要的一节必修课,但是伪装技术需要高深的网络知识,一开始没有坚实的基础就要用到这一类软件了。

  第四节、学习黑客的基本环境

  一、操作系统的选择:

  我们经常听说黑客酷爱Linux系统,这是因为Linux相对Windows提供了更加灵活的操作方式,更加强大的功能。例如对于IP地址的伪造工作,利用Linux系统编写特殊的IP头信息可以轻松完成,然而在Windows系统下却几乎不可能做到。但是Linux也有它不足的一面,这个系统的命令庞杂、操作复杂,并不适合初学者使用,而且对于个人学习者,并没有过多的人会放弃“舒适”的Windows、放弃精彩的电脑游戏和便捷的操作方式,去全心投入黑客学习中。而且对于初学黑客的学习者来说,大多数网络知识都可以在Windows系统中学习,相对Linux系统,Windows平台下的黑客软件也并不在少数,另外通过安装程序包,Windows系统中也可以调试一定量的程序,因此初步学习黑客没有必要从Linux入手。

  本书使用的平台WindowsME,因为对于个人用户来说,NT或者2000多少有些苛刻——系统配置要求太高;然而使用95或者98又缺少某些必要的功能——NET、TELNET命令不完善。但是本书的大部分内容测试漏洞,从远程服务器出发,所以也不是非要WindowsME操作系统进行学习,对于少数系统版本之间的差异,学习者可以和我联系获得相应系统的学习方法。

  二、需要的常用软件:

  如果你的系统是WindowsME,那么告诉你一个好消息——你没有必要安装过多的额外软件,因为我们接触的黑客知识依靠系统提供给我们的命令和内置软件就足可以完成了!除了基本的操作系统以外,学习者还需要安装各类扫描器,之后下载一个比较优秀的木马软件、一个监听类软件,除此以外别无它求。如果有必要,读者可以自行安装本文上述软件,然后学习其用法,但是我要告诉你,对于各类炸弹、还有网络上各式各样的黑客软件,在学习完本书后,你都可以自己制作、自己开发,根本没有必要使用他人编写的软件。

  对于扫描器和监听软件,我给出以下建议,并且在本书的后面还会对这几个软件进行详细介绍:

  扫描器:x-scanner

  下载地址:http://www.xfocus.org/

  监听软件:analyzer

  下载地址:http://netgroup-serv.polito.it/netgroup/tools.html

  木马:BackOffice

  下载地址:http://www.hack-net.com/

  这三个软件都是免费的,而且功能异常强大。像xscanner是国产软件,他集成了多种扫描功能于一身,并且同时支持控制台和图形界面两种操作方式,另外提供了详细的漏洞使用说明。对于初学者来说,具备了这两个工具,学习黑客已经绰绰有余了。

  三、额外的工具:

  如果可以安装下面的工具,将会对学习黑客有莫大的帮助,当然下面的软件主要是学习额外内容并为“第二部分”学习作铺垫用的,所以没有也不会妨碍本书的学习。

  1、后台服务器:

  拥有某些网络应用的后台服务程序,可以将自己的电脑设置成一个小型服务器,用来学习相应的网络应用,从“内部”了解其运作机理,这将会大大提高自己对服务器的感性认识,同时还能够在激活服务器的时候;监测自己服务器上的数据,如果有其他黑客来攻击,则可以清晰的记录下对方的攻击过程,从而学习到更多的黑客攻击方法。对于本书而言,主要介绍网站的Perl和asp等脚本语言漏洞,所以可以安装一个IIS或者HTTPD。然后在安装ActivePerl,使自己的服务器具备编译cgi和pl脚本的能力。使用自己的服务器还有一个好处,可以节省大量的上网时间,将学习、寻找漏洞的过程放到自己的电脑上,既节省了金钱、有不会对网络构成威胁,一举两得。

  2、C语言编译平台:

  今后在学习黑客的路途中,将会遇到很多“属于自己的问题”,这些问题网络上的其他人可能不会注意,所以无法找到相应的程序,这个时候学习者就要自己动手开发有关的工具了,所以安装一个Borland C++将会非常便捷,通过这个编译器,学习者既可以学习C语言,也能够修改本书后面列出的一些小程序,打造一个属于自己的工具库。

  四、网络安全软件分类

  现在我们来了解一下有关网络安全软件的分类,因为学习黑客知识是两个相互联系的过程:既学习如何黑,还要学会如何防止被黑。

  1、防火墙:

  这是网络上最常见的安全机制软件,防火墙有硬件的、也有软件的,大多数读者看到的可能更多都是软件防火墙。其功能主要是过滤垃圾信息(保证系统不会受到炸弹攻击)、防止蠕虫入侵、防止黑客入侵、增加系统隐私性(对敏感数据进行保护)、实时监控系统资源,防止系统崩溃、定期维护数据库,备份主要信息……防火墙可以将系统本身的漏洞修补上,让黑客没有下手的机会。另外对于拥有局域网的企业来说,防火墙可以限制系统端口的开放,禁止某些网络服务(杜绝木马)。

  2、检测软件:

  互联网上有专门针对某个黑客程序进行清除的工具,但是这类软件更多是集成在杀毒软件或者防火墙软件内的,对于系统内的木马、蠕虫可以进行检测并清除,软件为了保护系统不受侵害,会自动保护硬盘数据、自动维护注册表文件、检测内容可以代码、监测系统端口开放状态等。如果用户需要,软件还可以编写有关的脚本对指定端口进行屏蔽(防火墙一样具备此功能)。

  3、备份工具:

  专门用来备份数据的工具可以帮助服务器定期备份数据,并在制定时间更新数据,这样即便黑客破坏了服务器上的数据库,软件也可以在短时间内完全修复收到入侵的数据。另外对于个人用户,这类软件可以对硬盘进行完全映像备份,一旦系统崩溃,用户利用这类软件可以将系统恢复到原始状态,例如Ghost就是这类软件中的佼佼者。

  4、日志纪录、分析工具:

  对于服务器来说,日志文件是必不可少的,管理员可以通过日志了解服务器的请求类型和请求来源,并且根据日志判断系统是否受到黑客攻击。通过日志分析软件,管理员可以轻松的对入侵黑客进行反追踪,找到黑客的攻击来源,进而抓不黑客。这也就是为什么黑客在攻击的时候多采用IP地址伪装、服务器跳转,并在入侵服务器之后清除日志文件的原因。

  目前很多地方都转载着利用9行代码史windows崩溃的文章,不过我发现没有关于为什么会使windows崩溃的分析。我先把原文给大家看看。然后把具体的细节说一下。   

  微软一直声称Windows XP多么多么稳定可靠,但日前一位名为Masaru Tsuchiyama的外国编程爱好者刊出了一小段C语言代码。这一只有9行的小程序如果在Windows XP/2000下运行,则可导致系统完全崩溃,并重新启动。但此程序对其他版本的Windows没有任何影响。这一产生无限循环输出的小程序的代码如下:

  #include
    int main( void )
    { 
    for(;{
        printf( "hung up " );
        print("hung up ";
        }
    return 0;
    }

  如果去掉Print语句,此程序还会导致NT 4.0系统出现蓝屏错误。

  但愿微软赶快修补这一漏洞。同时提醒大家,此代码只可用于研究,不得用于任何非法勾当。

  如果去掉Print语句,此程序还会导致NT 4.0系统出现蓝屏错误。   

  以上遍是网上纷纷转载的原文。   

  关于为什么会导致错误,就在看下面的分析吧。   

  是退格

  代码是用退格符把console里的光标退成null,

  然后显示任一字符(除 ),即崩溃.

  但是一般情况是不能退出规定的区域的,

  而如的前一个字符是 则可以退出规定的区域(bug?).

  双击运行时,系统将新建一个console,所以我们的显示在console

  的左上角,我们只需两个就可退出屏幕(第一个吃掉 ).

  原因是win32子系统意外中止导致系统崩溃.smss是windows系统建立的第一个用户进程,他的工作之一是建立csrss和winlogon进程,然后一直等待这两个进程的句柄,如果这两个进程意外中止,

  smss将导致系统崩溃.csrss进程就是专门负责所有win32进程和系统进行通信的进程.所有win32进程的系统调用都会由csrss帮你完成,但是这样做因为需要进程切换所以效率太低.所以在windowsNT从3.51升级到4.0时将许多部分从用户态移入内核态,win32进程的系统调用将直接进行以减少进程切换时间.但是仍有少量系统调用需要csrss进程完成,据我所知createprocess

  是这样的函数,所有console上的显示是这样的函数(还有其他的).

  当我们调用printf(" a")最终将调用WriteFile API.

  WriteFile((HANDLE)7," a",NULL,NULL)等同于

  printf(" a"),7是console标准输入的句柄.

  WriteFile判断句柄类型,如是文件句柄将调用ntdll.dll中的

  NtWriteFile函数.如是console句柄将调用WriteConsoleA函数.

  WriteConsoleA函数将调用ntdll.dll中的csrClientCallServer

  函数通知csrss进程,然后调用NtRequestWaitReplyPort等待结果.

  估计是csrss进程在处理这个请求过程中出错了.   

  几年前侯杰老师分析后我整理出来的。因为没有地方说过,甚至简单的分析都没有,所以我才把他翻出来 :) 细心的人发现csrss出错的细节没有描述,谁有时间就补充一下吧..

  以前,我曾认为只要不随便运行网友发来的文件就不会中病毒或木马,但后来出现了利用漏洞传播的冲击波、震荡波;以前,我曾认为不上小网站就不会中网页木马,但后来包括国内某知名游戏网站在内的多个大网站均在其首页被黑客挂上了木马。从此,我知道:安全,从来没有绝对的。

  虽然没有绝对的安全,但如果能知已知彼,了解木马的隐藏手段,对于木马即使不能百战百胜,也能做到及时发现,使损失最小化。那么,木马究竟是如何躲在我们的系统中的呢?

  最基本的隐藏:不可见窗体+隐藏文件

  木马程序无论如何神秘,但归根究底,仍是Win32平台下的一种程序。Windows下常见的程序有两种:

  1.Win32应用程序(Win32 Application),比如QQ、Office等都属于此行列。

  2.Win32控制台程序(Win32 Console),比如硬盘引导修复程序FixMBR。

  其中,Win32应用程序通常会有应用程序界面,比如系统中自带的“计算器”就有提供各种数字按钮的应用程序界面。木马虽然属于Win32应用程序,但其一般不包含窗体或隐藏了窗体(但也有某些特殊情况,如木马使用者与被害者聊天的窗口),并且将木马文件属性设置为“隐藏”,这就是最基本的隐藏手段,稍有经验的用户只需打开“任务管理器”,并且将“文件夹选项”中的“显示所有文件”勾选即可轻松找出木马,于是便出现了下面要介绍的“进程隐藏”技术。  

  第一代进程隐藏技术:Windows 98的后门

  在Windows 98中,微软提供了一种能将进程注册为服务进程的方法。尽管微软没有公开提供这种方法的技术实现细节(因为Windows的后续版本中没有提供这个机制),但仍有高手发现了这个秘密,这种技术称为RegisterServiceProcess。只要利用此方法,任何程序的进程都能将自己注册为服务进程,而服务进程在Windows 98中的任务管理器中恰巧又是不显示的,所以便被木马程序钻了空子。

  要对付这种隐藏的木马还算简单,只需使用其他第三方进程管理工具即可找到其所在,并且采用此技术进行隐藏的木马在Windows 2000/XP(因为不支持这种隐藏方法)中就得现形!中止该进程后将木马文件删除即可。可是接下来的第二代进程隐藏技术,就没有这么简单对付了。

  第二代进程隐藏技术:进程插入

  在Windows中,每个进程都有自己的私有内存地址空间,当使用指针(一种访问内存的机制)访问内存时,一个进程无法访问另一个进程的内存地址空间,就好比在未经邻居同意的情况下,你无法进入邻居家吃饭一样。比如QQ在内存中存放了一张图片的数据,而MSN则无法通过直接读取内存的方式来获得该图片的数据。这样做同时也保证了程序的稳定性,如果你的进程存在一个错误,改写了一个随机地址上的内存,这个错误不会影响另一个进程使用的内存。

  你知道吗——进程(Process)是什么

  对应用程序来说,进程就像一个大容器。在应用程序被运行后,就相当于将应用程序装进容器里了,你可以往容器里加其他东西(如:应用程序在运行时所需的变量数据、需要引用的DLL文件等),当应用程序被运行两次时,容器里的东西并不会被倒掉,系统会找一个新的进程容器来容纳它。

  一个进程可以包含若干线程(Thread),线程可以帮助应用程序同时做几件事(比如一个线程向磁盘写入文件,另一个则接收用户的按键操作并及时做出反应,互相不干扰),在程序被运行后中,系统首先要做的就是为该程序进程建立一个默认线程,然后程序可以根据需要自行添加或删除相关的线程

  1.进程插入是什么

  独立的地址空间对于编程人员和用户来说都是非常有利的。对于编程人员来说,系统更容易捕获随意的内存读取和写入操作。对于用户来说,操作系统将变得更加健壮,因为一个应用程序无法破坏另一个进程或操作系统的运行。当然,操作系统的这个健壮特性是要付出代价的,因为要编写能够与其他进程进行通信,或者能够对其他进程进行操作的应用程序将要困难得多。但仍有很多种方法可以打破进程的界限,访问另一个进程的地址空间,那就是“进程插入”(Process Injection)。一旦木马的DLL插入了另一个进程的地址空间后,就可以对另一个进程为所欲为,比如下文要介绍的盗QQ密码。

  2.木马是如何盗走QQ密码的

  普通情况下,一个应用程序所接收的键盘、鼠标操作,别的应用程序是无权“过问”的。可盗号木马是怎么偷偷记录下我的密码的呢?木马首先将1个DLL文件插入到QQ的进程中并成为QQ进程中的一个线程,这样该木马DLL就赫然成为了QQ的一部分!然后在用户输入密码时,因为此时木马DLL已经进入QQ进程内部,所以也就能够接收到用户传递给QQ的密码键入了,真是“家贼难防”啊!

  3.如何插入进程

  (1)使用注册表插入DLL

  早期的进程插入式木马的伎俩,通过修改注册表中的[HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionWindowsAppInit_DLLs]来达到插入进程的目的。缺点是不实时,修改注册表后需要重新启动才能完成进程插入。

  (2)使用挂钩(Hook)插入DLL

  比较高级和隐蔽的方式,通过系统的挂钩机制(即“Hook”,类似于DOS时代的“中断”)来插入进程(一些盗QQ木马、键盘记录木马以Hook方式插入到其他进程中“偷鸡摸狗”),需要调用SetWindowsHookEx函数(也是一个Win32 API函数)。缺点是技术门槛较高,程序调试困难,这种木马的制作者必须具有相当的Win32编程水平。

  你知道吗——什么是API

  Windows中提供各种功能实现的接口称为Win32 API(Application Programming Interface,即“应用程序编程接口”),如一些程序需要对磁盘上的文件进行读写,就要先通过对相应的API(文件读写就要调用文件相关的API)发出调用请求,然后API根据程序在调用其函数时提供的参数(如读写文件就需要同时给出需要读写的文件的文件名及路径)来完成请求实现的功能,最后将调用结果(如写入文件成功,或读取文件失败等)返回给程序。

  (3)使用远程线程函数(CreateRemoteThread)插入DLL

  在Windows 2000及以上的系统中提供了这个“远程进程”机制,可以通过一个系统API函数来向另一个进程中创建线程(插入DLL)。缺点很明显,仅支持Windows 2000及以上系统,在国内仍有相当多用户在使用Windows 98,所以采用这种进程插入方式的木马缺乏平台通用性。

  木马将自身作为DLL插入别的进程空间后,用查看进程的方式就无法找出木马的踪迹了,你能看到的仅仅是一些正常程序的进程,但木马却已经偷偷潜入其中了。解决的方法是使用支持“进程模块查看”的进程管理工具(如“Windows优化大师”提供的进程查看),木马的DLL模块就会现形了。

  不要相信自己的眼睛:恐怖的进程“蒸发”

  严格地来讲,这应该算是第2.5代的进程隐藏技术了,可是它却比前几种技术更为可怕得多。这种技术使得木马不必将自己插入到其他进程中,而可以直接消失!

  它通过Hook技术对系统中所有程序的进程检测相关API的调用进行了监控,“任务管理器”之所以能够显示出系统中所有的进程,也是因为其调用了EnumProcesses等进程相关的API函数,进程信息都包含在该函数的返回结果中,由发出调用请求的程序接收返回结果并进行处理(如“任务管理器”在接收到结果后就在进程列表中显示出来)。

  而木马由于事先对该API函数进行了Hook,所以在“任务管理器”(或其他调用了列举进程函数的程序)调用EnumProcesses函数时(此时的API函数充当了“内线”的角色),木马便得到了通知,并且在函数将结果(列出所有进程)返回给程序前,就已将自身的进程信息从返回结果中抹去了。就好比你正在看电视节目,却有人不知不觉中将电视接上了DVD,你在不知不觉中就被欺骗了。

  所以无论是“任务管理器”还是杀毒软件,想对这种木马的进程进行检测都是徒劳的。这种木马目前没有非常有效的查杀手段,只有在其运行前由杀毒软件检测到木马文件并阻止其病毒体的运行。当时还有一种技术是由木马程序将其自身的进程信息从Windows系统用以记录进程信息的“进程链表”中删除,这样进程管理工具就无法从“进程链表”中获得木马的进程信息了。但由于缺乏平台通用性而且在程序运行时有一些问题,所以没有被广泛采用。

  你知道吗——什么是Hook

  Hook是Windows中提供的一种用以替换DOS下“中断”的一种系统机制,中文译名为“挂钩”或“钩子”。在对特定的系统事件(包括上文中的特定API函数的调用事件)进行Hook后,一旦发生已Hook的事件,对该事件进行Hook的程序(如:木马)就会收到系统的通知,这时程序就能在第一时间对该事件做出响应(木马程序便抢在函数返回前对结果进行了修改)。

  毫无踪迹:全方位立体隐藏

  利用刚才介绍的Hook隐藏进程的手段,木马可以轻而易举地实现文件的隐藏,只需将Hook技术应用在文件相关的API函数上即可,这样无论是“资源管理器”还是杀毒软件都无法找出木马所在了。更令人吃惊的是,现在已经有木马(如:灰鸽子)利用该技术实现了文件和进程的隐藏。要防止这种木马最好的手段仍是利用杀毒软件在其运行前进行拦截。

  跟杀毒软件对着干:反杀毒软件外壳

  木马再狡猾,可是一旦被杀毒软件定义了特征码,在运行前就被拦截了。要躲过杀毒软件的追杀,很多木马就被加了壳,相当于给木马穿了件衣服,这样杀毒软件就认不出来了,但有部分杀毒软件会尝试对常用壳进行脱壳,然后再查杀(小样,别以为穿上件马夹我就不认识你了)。除了被动的隐藏外,最近还发现了能够主动和杀毒软件对着干的壳,木马在加了这种壳之后,一旦运行,则外壳先得到程序控制权,由其通过各种手段对系统中安装的杀毒软件进行破坏,最后在确认安全(杀毒软件的保护已被瓦解)后由壳释放包裹在自己“体内”的木马体并执行之。对付这种木马的方法是使用具有脱壳能力的杀毒软件对系统进行保护。

  你知道吗——什么是壳

  顾名思义,你可以很轻易地猜到,这是一种包在外面的东西。没错,壳能够将文件(比如EXE)包住,然后在文件被运行时,首先由壳获得控制权,然后释放并运行包裹着的文件体。很多壳能对自己包住的文件体进行加密,这样就可以防止杀毒软件的查杀。比如原先杀毒软件定义的该木马的特征是“12345”,如果发现某文件中含有这个特征,就认为该文件是木马,而带有加密功能的壳则会对文件体进行加密(如:原先的特征是“12345”,加密后变成了“54321”,这样杀毒软件当然不能靠文件特征进行检查了)。脱壳指的就是将文件外边的壳去除,恢复文件没有加壳前的状态。