与好友在网络上相互传输资料时,有时先要知道对方计算机的IP地址,才能与对方建立信息传输通道。

  那么对方的IP地址该如何搜查得到呢?这样的问题你也许会嗤之以鼻,的确,查询对方计算机的IP地址,实在简单得不值得一提;可是,要让你列举出多种IP地址搜查方法时,你可能就感到勉为其难了。下面,本文就对如何快速、准确地搜查出对方好友的计算机IP地址,提出如下几种方法,相信能对大家有所帮助!

  1、邮件查询法

  使用这种方法查询对方计算机的IP地址时,首先要求对方先给你发一封电子邮件,然后你可以通过查看该邮件属性的方法,来获得邮件发送者所在计算机的IP地址;下面就是该方法的具体实施步骤:

  首先运行OutLook express程序,并单击工具栏中的“接受全部邮件”按钮,将朋友发送的邮件接受下来,再打开收件箱页面,找到朋友发送过来的邮件,并用鼠标右键单击之,从弹出的右键菜单中,执行“属性”命令;

  在其后打开的属性设置窗口中,单击“详细资料”标签,并在打开的标签页面中,你将看到“Received: from xiecaiwen (unknown [11.111.45.25])”这样的信息,其中的“11.111.45.25”就是对方好友的IP地址;当然,要是对方好友通过Internet中的WEB信箱给你发送电子邮件的话,那么你在这里看到的IP地址其实并不是他所在工作站的真实IP地址,而是WEB信箱所在网站的IP地址。

  当然,如果你使用的是其他邮件客户端程序的话,查看发件人IP地址的方法可能与上面不一样;例如要是你使用foxmail来接受好友邮件的话,那么你可以在收件箱中,选中目标邮件,再单击菜单栏中的“邮件”选项,从弹出的下拉菜单中选中“原始信息”命令,就能在其后的界面中看到对方好友的IP地址了。

  2、日志查询法

  这种方法是通过防火墙来对QQ聊天记录进行实时监控,然后打开防火墙的日志记录,找到对方好友的IP地址。为方便叙述,本文就以KV2004防火墙为例,来向大家介绍一下如何搜查对方好友的IP地址:

  考虑到与好友进行QQ聊天是通过UDP协议进行的,因此你首先要设置好KV防火墙,让其自动监控UDP端口,一旦发现有数据从UDP端口进入的话,就将它自动记录下来。在设置KV2004防火墙时,先单击防火墙界面中的“规则设置”按钮,然后单击“新建规则”按钮,弹出设置窗口;

  在该窗口的“名称”文本框中输入“搜查IP地址”,在“说明”文本框中也输入“搜查IP地址”;再在“网络条件”设置项处,选中“接受数据包”复选框,同时将“对方IP地址”设置为“任何地址”,而在“本地IP地址”设置项处不需要进行任何设置;

  下面再单击“UDP”标签,并在该标签页面下的“本地端口”设置项处,选中“端口范围”选项,然后在起始框中输入“0”,在结束框中输入“65535”;同样地,在“对方端口”设置项处,也选中“端口范围”选项,然后在起始框中输入“0”,在结束框中输入“65535”。

  接着在“当所有条件满足时”设置项处,选中“通行”选项,同时将“其他处理”处的“记录”选项选中,而“规则对象”设置项不需要进行任何设置;完成了上面的所有设置后,单击“确定”按钮,返回到防火墙的主界面;再在主界面中选中刚刚创建好的“搜查IP地址”规则,同时单击“保存”按钮,将前面的设置保存下来。

  完成好上面的设置后,KV防火墙将自动对QQ聊天记录进行全程监控,一旦对方好友给你发来QQ信息时,那么对方好友的IP地址信息就会自动出现在防火墙的日志文件中,此时你可以进入到KV防火墙的安装目录中,找到并打开“kvfwlog”文件,就能搜查到对方好友的IP地址。

    3、工具查询法

  这种方法是通过专业的IP地址查询工具,来快速搜查到对方计算机的IP地址。例如,借助一款名为WhereIsIP的搜查工具,你可以轻松根据对方好友的Web网站地址,搜查得到对方好友的IP地址,甚至还能搜查到对方好友所在的物理位置。在用WhereIsIP程序搜查对方IP地址时,首先启动该程序打开搜查界面,然后单击该界面的“Web site”按钮,在其后的窗口中输入对方好友的Web地址,再单击“next”按钮,这样该程序就能自动与Internet中的Domain Name Whois数据库联系,然后从该数据库中搜查到与该Web网站地址对应的IP地址了。当然,除了可以知道IP地址外,你还能知道对方好友所在的具体物理位置。

  倘若要想查看局域网中某个工作站的IP地址时,可以使用“网络刺客II”之类的工具来帮忙;只要你运行该工具进入到它的主界面,然后执行工具栏中的“IP地址<->主机名”命令,在其后打开的对话框中,输入对方好友的计算机名称,再单击“转换成IP”按钮,就能获得对方好友所在计算机的IP地址了。

  如果你使用Oicqsniffer工具的话,那么查询QQ好友的IP地址就更简单了。只要你单击该程序界面中的“追踪”按钮,然后向对方好友发送一条QQ消息,那么Oicqsniffer工具就会自动将对方好友的IP地址以及端口号显示出来了。除此之外,还有许多可以查找IP地址的专业工具可以选择,例如IPsniper软件。

  4、命令查询法

  这种方法是通过Windows系统内置的网络命令“netstat”,来查出对方好友的IP地址,不过该方法需要你先想办法将对方好友邀请到QQ的“二人世界”中说上几句话才可以。下面就是该方法的具体实现步骤:

  首先单击“开始”/“运行”命令,在弹出的系统运行对话框中,输入“cmd”命令,单击“确定”按钮后,将屏幕切换到MS-DOS工作状态;然后在DOS命令行中执行“netstat -n”命令,在弹出的界面中,你就能看到当前究竟有哪些地址已经和你的计算机建立了连接(如果对应某个连接的状态为“Established”,就表明你的计算机和对方计算机之间的连接是成功的);

  其次打开QQ程序,邀请对方好友加入“二人世界”,并在其中与朋友聊上几句,这样你的计算机就会与对方好友的计算机之间建立好了TCP连接;此时,再在DOS命令行中执行“netstat -n”命令,看看现在又增加了哪个tcp连接,那个新增加的连接其实就是对方好友与你之间的UDP连接,查看对应连接中的“Foreign Address”就能知道对方好友的IP地址了。

  5、ping检查法

  这种方法就是利用“ping”命令,来检查当前计算机是否能与对方好友的网站连通,在检查的过程中该地址能自动获得对方网站的IP地址。比方说,要是你想搜查天极网站的IP地址时,可以先打开系统的运行对话框,然后在其中输入“ping www.pconline.com.cn”字符串命令,再单击“确定”按钮,在弹出的窗口中,就能知道网站的IP地址了。同样地,你也可以搜查其他网站的IP地址。

  好了,上面就是查询好友计算机IP地址的几种常用方法;要是你还有其他更好方法的话,恳请不断补充完善!

    在Linux下如何使用vsftpd构建FTP服务器,构建后的FTP服务器有哪些特点?本文将作详细介绍。

    vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX等系统上面,是一个完全免费的、开发源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。

    本文以RedHat Linux 9.0为例介绍一下如何安装和配置vsftpd服务器。

    安装服务器程序

    程序下载地址:ftp://vsftpd.beasts.org/users/cevans/,目前最新版本为2.0.3,源程序文件名为vsftpd-2.0.3.tar.gz。

    1.安装之前的准备:

    安装之前我们应该看看用户“nobody”和目录“/usr/share/empty”是否存在,如果不存在需要新建这个用户和目录。

  [root@localhost root]# useradd nobody

  [root@localhost root]# mkdir /usr/share/empty

    如果要允许匿名访问,还需要创建ftp用户,并将其主目录设置为/var/ftp。在RedHat Linux 9.0中这些都已默认设置好了,只需要创建一个/var/ftp目录即可。

    [root@localhost root]# mkdir /var/ftp

    为了安全,目录“/var/ftp”不应该属于用户“ftp”,也不应该有写权限。在此,我们做如下设置:

    [root@localhost root]# chown root.root /var/ftp

    [root@localhost root]# chmod 755 /var/ftp

    2.开始安装:

    以管理员身份登录Linux系统,将vsftpd-2.0.3.tar.gz复制到/root目录下。

    [root@localhost root]# tar xzvf vsftpd-2.0.3.tar.gz

    [root@localhost root]# cd vsftpd-2.0.3

    [root@localhost vsftpd-2.0.3]# make

    [root@localhost vsftpd-2.0.3]# make install

    3.安装后续工作

    由于采用源代码方式安装,很多必要的配置文件没有复制到系统中,需要手动复制。

    复制配置文件:

    [root@localhost vsftpd-2.0.3]# cp vsftpd.conf /etc
    复制pam验证文件:(多数使用vsftpd的用户在用源代码安装后都会遇到这样的问题:匿名用户可以登录,而本地用户无论怎样设置都无法登录,原因就在于vsftpd采用了PAM验证的方式,需要复制一个验证文件本地用户才能访问。)

    [root@localhost vsftpd-2.0.3]# cp RedHat/vsftpd.pam /etc/pam.d/ftp
vsftpd的配置

    vsftpd服务器的配置文件为/etc/vsftpd.conf,其配置选项比较多,在此我只选择几个常用的配置选项介绍。

    1.禁止匿名用户访问。

    anonymous_enable=NO

    2.允许本地用户登录并允许其上传文件。

    local_enable=YES

    write_enable=YES

    要使上述选项生效,必须复制一个pam验证文件到/etc/pam.d,并改名为ftp。当然也可以改为其他名称,但必须修改pam_service_name的值,默认为ftp。

    3.将本地用户锁定在主目录中,不允许切换到上一级目录中。

    chroot_local_user=YES

    4.禁止某些用户通过ftp登录服务器。

  如果设置了local_enable=YES,那么所有的用户包括root也能通过ftp登录服务器,出于安全考虑,需要对某些用户进行限制。

    在vsftpd.conf中有三个选项控制:

    userlist_deny=YES/NO

    userlist_enalbe=YES

    userlist_file=/etc/vsftpd.user_list

    如果userlist_deny=YES,/etc/vsftpd.user_list中列出的用户名就不允许登录ftp服务器;如果userlist_deny=NO,/etc/vsftpd.user_list中列出的用户名允许登录ftp服务器。

    我们只要在/etc目录下创建vsftpd.user_list文件,文件内容为允许登录或禁止登录的用户名,每个用户占一行。

    5.禁止用户通过FTP修改文件或文件夹的权限。

    chmod_enable=NO(默认值为YES)

    6.设置本地用户上传的文件或文件夹的umask值。

    local_umask=022(默认值为077)

    umask的值设为022表示,上传的如果是文件将权限改为644,如果是文件夹将权限改为755。在上传网页时,如果设置为077,就会出现用户没有权限(Permission denied)访问网页的问题,所以建议将umask的值设为022。

    7.添加一个只能从ftp登录服务器,而不能从本地登录的用户。以下创建一个用户ftpuser,不允许从本地登录,并创建该用户的密码。

    [root@localhost root]# useradd –g ftp –s /sbin/nologin ftpuser

    [root@localhost root]# passwd ftpuser

    Changing password for user ftpuser.

    New password:

    Retype new password:

    passwd: all authentication tokens updated successfully.

    8.让vsftp服务器限制总的连接数以及每个IP最大的连接数。

    #最多同时允许100个客户连接

  max_clients=100

    #每个ip地址最多允许开3个线程

  max_per_ip=3

  vsftpd的配置文件中有很多选项,但个人认为,如果是架设一个简单的ftp服务器,以上选项就足够了。

  一、安装PHP4

  我们需要安装的是win32版本,下载当然也是win32版本 php4.3.0-win32.zip 

  1.下载后,解压到c:php目录下。 

  2. 把c:php目录下的php4ts.dll php4ts.lib文件都拷贝到c:winntsystem32目录下(即window 2000系统目录下的system32目录)。 

  3. 修改php.ini文件 重启完后,把c:php目录下的php.ini-dist文件改名为php.ini 用记事本或其它可编辑文本的软件把它打开。 

  3.1找到register_globals = Off 改为register_globals = On这一步是为了使部分旧的PHP程序能正常运行; 

  3.2找到 extension_dir = ./ 把它改为extension_dir = c:phpextensions刚刚的修改是指定php4扩展dll文件存放的路径 由于php4默认所带的php.ini-dist中,是关掉了所以的扩展dll的功能( Windows Extensions)

  ;extension=php_bz2.dll

  ;extension=php_cpdf.dll

  ;extension=php_crack.dll

  ;extension=php_curl.dll …..

  要做的就是把extension前面的分号去掉就行了,当然这样是不够的。因为有些extension在我们的系统是不能使用的,比如系统中没有安装 sql server的话,那么extension=php_mssql.dll就要用;(分号)把它注释掉;

  其中,PHP4带了两个GD扩展,请选用一个,另一个先用分号注释掉,以免出现函数无法注册的错误;

  如下面

  extension=php_gd.dll

  ;extension=php_gd2.dll 

  3.3 找到session.save_path,把这一项改为 session.save_path = c: mp并在C盘建立一个TMP目录

  3.4把所有的extension=php_xxxx.dll前面的分号都去掉后。记得要保存刚刚的修改 并把php.ini文件放置在c:winnt目录下。

  二、安装MySql

  安装MySql 当然,我在MySql.com 下载的MySql是一个压缩包,要先解压出来;再点setup.exe安装;

  按默认安装,即安装在c:MySql下,安装完后,按“开始”菜单中的“运行”打进cmd进入dos窗口,进到c:MySqlin 目录;

  运行mysqld-nt –install (将会出现一个Dos窗口,随即自动关闭!如果没有出任何信息,即安装到service成功!)

  从“开始”菜单“程序”=》“管理工具”=》“服务”,打开后,将会找到MySql,点击mouse右键 选择启动 回到刚刚的Dos窗口

  即c:MySqlin目录下 运行mysqladmin -u root password 123 即把root用户的密码设置为123 这一步,如果没有出错,说明初始化root密码成功;

  当然从本机进入MySql是不需要用户名和密码,但用php 程序或是其它程序连接MySql时就要用到;

  测试进入 第一种方法:直接动行MySql进入MySql 的dos管理状态;

  第二种方法:运行MySql -uroot -p MySql将会提示让您输入密码,密码当然就是刚刚设置的123(当然,得按设置的密码喽,不一定得设置是123)

  出现: C:MySqlin>MySql -uroot -p Enter password: ********** Welcome to the MySql monitor. Commands end with ; or g. Your MySQL connection id is 4 to server version: 3.27.44-nt Type ‘help;‘ or ‘h‘ for help. Type ‘c‘ to clear the buffer. mysql>

  即安装MySql成功。

  三、安装Apache 1.3.x 及 PHP运行设置

  1.首先下载Apache,Apache软件一般叫作apache_1_3_x.win32.exe。运行它。它会问你将Apache安装到什么地方,为他系统安全及操作容易,我们不要使用默认路径,你可以设为c:Apache或C:,因为马上你就要修改它的配置文件。

  如果安装没出什么错的话,Apache就可以用了。有很多readme文件可供参考,但仅有一个文件是讲Win32平台的,包括Window 9x和Windows NT。

  有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。

  值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。

  尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。

  如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:php 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:

  ScriptAlias /php/ "c:/php/"

  AddType application/x-httpd-php .php .phtml

  Action application/x-httpd-php "/php/php.exe"

  注意上面的第二行在原来的 httpd.conf 中就有的,不过被注释了。还有记住用你自己放置 PHP 的路径替换 c:/php/。

  警告

  在 CGI 方式下,你的服务器可能会受到几种攻击的影响。请学习如何防止攻击。

  如果你想在 Apache 中用模块方式使用 PHP,确认把 php4ts.dll 拷贝到 windows/system(Windows 9x/Me)或者 winnt/system32(Windows NT/2000)或者 windows/system32(Windows XP)目录下,覆盖原来的文件。然后在 Apache 配置文件 httpd.conf 中加入以下两行:

  用自己喜爱的编辑器打开 httpd.conf,找到 LoadModule 指令的部分,在其列表的最后部分加上如下一行,

  对 PHP 4:

  LoadModule php4_module c:/php/sapi/php4apache.dll

  对 PHP 5:

  LoadModule php5_module "c:/php/sapi/php5apache.dll"

  你可能发现在用 Windows Installer 安装了 Apache 之后需要为用 AddModule 指令定义 mod_php4.c。尤其是在定义了 ClearModuleList 指令时格外重要,向下滚动几行可以找到该指令。你将会看到 AddModule 项目的列表,在列表的最后加上这一行:

  AddModule mod_php4.c

  对于 PHP 5 则为:

  AddModule mod_php5.c

  搜索类似 # AddType allows you to tweak mime.types 的短语,你会找到一些 AddType 的项目,并且在列表的最后有这一行: AddType application/x-httpd-php .php。你可以在这里选择任何想用 PHP 解析的后缀。.php 只是所建议的一个。甚至可以包括 .html,也可以加上 .php3 来向下兼容。

  修改了配置文件之后记住重新启动 Apache,例如如果你的 Apache 是作为 Windows 的服务安装的,NET STOP APACHE 后面接上 NET START APACHE。或者用你通常使用的快捷方式。

  有两种方式使用源程序语法彩色显示特色,但是取决于你的安装方法。如果你配置了 Apache 的 SAPI 模块方式使用 PHP,那么在 httpd.conf 中(和插入 AddType application/x-httpd-php .php 是同一个位置)加入下面一行就可以使用本特色:AddType application/x-httpd-php-source .phps。

  如果你用 CGI 方式使用 PHP,那你需要用 show_source() 函数。建立一个 PHP 文件,加入以下代码:。用你想要显示源代码的文件名替换掉 original_php_script.php。

  注: 在 Windows-Apache 组合中,所有路径中的反斜线例如 "c:directoryfile.ext" 都必须转换成斜线,如 "c:/directory/file.ext"。

  四、实现Apache虚拟主机的两种方案

  简介:这里说的虚拟主机是指在一台机器上仅运行一个httpd后台程序 支持多个Apache服务器,如在公司财务部门有一台web服务器,名为 account.yourdomain.com,同时又想为sales部门建立网站,网站内容也 放在该机器上,通过sales.yourdomain.com访问,这就要用到虚拟主机设置。

  设置Apache虚拟主机通常有两种方案

  1.基于IP的虚拟主机

  这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的 网卡上绑定多个IP地址去服务多个虚拟主机。 若该机器的IP地址为192.168.0.1(account.yourdomain.com),首先 你要设置IP别名(假设用192.168.0.2作为其别名IP)。加下面的行到 /etc/rc.d/rc.local,确保每次启动后自动运行。

  #/sbin/ifconfig eth0:0 192.168.0.2 netmask 255.255.255.0 broadcast

  192.168.0.255 up

  #/sbin/route add -host 192.168.0.2 eth0:0

  然后你需要设置/etd/httpd/conf/httpd.conf文件:

  ServerAdmin [email protected]

  DocumentRoot /home/httpd/sales.yourdomain.com

  ServerName sales.yourdomain.com

  ErrorLog /var/log/httpd/sales.yourdomain.com/error_log

  TransferLog /var/log/httpd/sales.yourdomain.com/access_log

  然后分别创建目录

  /home/httpd/sales.yourdomain.com,

  /var/log/httpd/sales.yourdomain.com

  放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保 你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.0.2 。

  注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机方案。

  2.基于名字的虚拟主机:

  它的优势就是不需要更多的IP地址,容易配置,不需要其它软硬件,现代的浏览器大多都支持这种方式。与基于IP的虚拟主机一样,你需要编辑文件

  /etc/httpd/conf/httpd.conf

  NameVirtualHost 192.168.0.1

  ServerAdmin [email protected]

  DocumentRoot /home/httpd/sales.yourdomain.com

  ServerName sales.yourdomain.com

  ErrorLog /var/log/httpd/sales.yourdomain.com/error_log

  TransferLog /var/log/httpd/sales.yourdomain.com/access_log

  ServerAdmin [email protected]

  DocumentRoot /home/httpd/hr.yourdomain.com

  ServerName hr.yourdomain.com

  ErrorLog /var/log/httpd/hr.yourdomain.com/error_log

  TransferLog /var/log/hr.yourdomain.com/access_log

  注: 你需要加NameVirtualHost 指示在最前面,下面依次为各个虚拟主机,为了让它工作,你需要把sales.yourdomain.com, hr.yourdomain.com的DNS 都指向IP地址192.168.0.1

  上面的两种都将工作,如果是在外部网段,在互联网上提供WWW服务,你可能 没有足够的真实IP地址来支持多个虚拟主机,便可用基于名字的虚拟主机方案, 若是在内部网段上,你有较多的内部保留IP地址,将没有太大的区别。

  本文介绍的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、确定后重新启动计算机。