Archive

Archive for the ‘其他’ Category

数字证书

June 12th, 2009

什么是数字证书?

也许您对“数字证书”这一概念还很陌生,其实,数字证书就是标志网络用户身份信息

的一系列数据,用来在网络通讯中识别通讯各方的身份,即要在Internet 上解决“我是谁”

的问题,就如同现实中我们每一个人都要拥有一张证明个人身份的身份证或驾驶执照一样,

以表明我们的身份或某种资格。

数字证书是由权威公正的第三方机构即 CA 中心签发的,一串很长的包含有客户基本信

息及CA 签字的数学编码。以数字证书为核心的加密技术可以对网络上传输的信息进行加密

和解密、数字签名和签名验证,确保网上传递信息的机密性、完整性,以及交易实体身份的

真实性,签名信息的不可否认性,从而保障网络应用的安全性。

数字证书采用公钥密码体制,即利用一对互相匹配的密钥进行加密、解密。每个用户拥

有一把仅为本人所掌握的私有密钥(私钥),用它进行解密和签名;同时拥有一把公共密钥

(公钥)并可以对外公开,用于加密和验证签名。当发送一份保密文件时,发送方使用接收

方的公钥对数据加密,而接收方则使用自己的私钥解密,这样,信息就可以安全无误地到达

目的地了,即使被第三方截获,由于没有相应的私钥,也无法进行解密。通过数字的手段保

证加密过程是一个不可逆过程,即只有用私有密钥才能解密。在公开密钥密码体制中,常用

的一种是RSA 体制。

用户也可以采用自己的私钥对信息加以处理,由于密钥仅为本人所有,这样就产生了

别人无法生成的文件,也就形成了数字签名。采用数字签名,能够确认以下两点:

(1)保证信息是由签名者自己签名发送的,签名者不能否认或难以否认;

(2)保证信息自签发后到收到为止未曾作过任何修改,签发的文件是真实文件。

数字证书可用于:发送安全电子邮件、访问安全站点、网上证券、网上招标采购、网上

签约、网上办公、网上缴费、网上税务等网上安全电子事务处理和安全电子交易活动。

2、公钥加密体制与RSA 原理

根据加密密钥和解密密钥是否相同或本质上相同,即从其中一个容易推出另一个,可

将现有的加密体制分为两种,即单钥加密体制和双钥加密体制。前者的加密密钥和加密密钥

或者相同或者本质上相同,即从其中一个可以很容易的推出另一个,其典型代表是美国的数

据加密标准(DES);后一种加密体制中的加密密钥和解密密钥不相同,并且从其中一个很

难推出另一个,因此它的加密密钥可以公开,而解密密钥可以由用户自己保存,其典型代表

的RSA 体制。

双钥密钥体制又叫公开密钥体制。在该体制中,加密密钥(又称公开密钥)PK 是对外

公开的,加密算法E 和解密算法D 也是公开的,但解密密钥(又称秘密密钥) SK 是保密

的。虽然SK 是由PK 决定的,但却不能根据PK 计算出SK 。公开密钥算法具有以下特点:

(1)用加密密钥 PK 对明文X 加密后,再用解密密钥SK 解密即得明文,即

D E X X SK PK ( ( )) = ;

(2)加密密钥不能用来解密,即D E X X PK PK ( ( )) ≠ ;

(3)在计算机上可以容易地产生成对的PK 和SK ,但从已知的PK 不可能推导出

SK 。

在信息传递过程中,使用对方的公开密钥对该信息进行加密可以有效排除第三人对该信

息的偷窥。而实践中,双钥加密体制更多地被用于身份的验证,即数字签名。在数字签名中,

发送者A 用其秘密解密密钥A SK 和解密算法D对报文X 进行加密,将运算结果D (X ) SKA

传给接受者B 。B 用已知的A 的公开加密密钥A PK 和加密算法E 得出

E D X X PKA SKA ( ( )) = 。由于A的解密密钥A SK 只有A 知道,所以除A 外无人能产生密文

D (X ) SKA 。这样,报文就被A签名了。

在公开密钥体制中,应用得最多的是RSA 体制。RSA 算法是由Rivest,Shamir 和Adleman

于1978 年提出的,曾被ISO/TC97 的数据加密委员会SC20 推荐为公开数据加密标准。

RSA 体制是根据寻求两个大素数容易,而将他们的乘积分解开则极其困难这一原理来

设计的。在这一体制中,每个用户有加密密钥PK = (e, N)和解密密钥SK = (d, N),用户

把加密密钥PK 公开而对解密密钥中的d 保密。其中N 为两个大素数p 和q 的乘积( p 和

q 一般为100 位以上的十进制俗素数),虽然e 和d 满足一定的关系,但敌手不能根据已知

的e 和N 求出d 。

若用整数 X 表示明文,用整数Y 表示密文, X ,Y 均小于N ,则加、解密算法为:

加密:Y = X e mod N

解密: X = Y d mod N

即加密密钥PK = (e, N),解密密钥SK = (d, N)。问题在于PK 和SK 中的每个参数如何

选择?用户秘密的选择两个大素数p 和q,计算出N = pq,将N 公开。用户再计算出N

的欧拉函数Φ(N) = ( p −1)(q −1),定义Φ(N)为小于等于N 且与N 互素的数的个数。然

后,用户从[0,Φ(N) −1]中任选一个与Φ(N)互素的数e作为公开的加密指数,并计算出满

足下式的d

ed ≡ 1modΦ(N)

作为解密指数,从而产生了所需要的公开密钥 PK 和秘密密钥SK 。

RSA 的安全性在于对大数N 的分解极其困难。如果攻击者能从N 中分解出p 和q ,便

能求出Φ(N),从而根据公开的e求出d 。但是大数分解很花时间,例如,用每一微秒做一

次操作的计算机,分解100 位的十进制数N ,需要时间为74 年。

其他

HTTP 1.1与HTTP 1.0的比较

December 10th, 2008

 一个WEB站点每天可能要接收到上百万的用户请求,为了提高系统的效率,HTTP 1.0规定浏览器服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。但是,这也造成了一些性能上的缺陷,例如,一个包含有许多图像的网页文件中并没有包含真正的图像数据内容,而只是指明了这些图像的URL地址,当WEB浏览器访问这个网页文件时,浏览器首先要发出针对该网页文件的请求,当浏览器解析WEB服务器返回的该网页文档中的HTML内容时,发现其中的img图像标签后,浏览器将根据img标签中的src属性所指定的URL地址再次向服务器发出下载图像数据的请求,如图3.3所示。

Read more…

其他 ,

SSL工作原理

December 1st, 2008

SSL 是一个安全协议,它提供使用 TCP/IP 的通信应用程序间的隐私与完整性。因特网的 超文本传输协议 (HTTP)使用 SSL 来实现安全的通信。

在客户端与服务器间传输的数据是通过使用对称算法(如 DES 或 RC4)进行加密的。公用密钥算法(通常为 RSA)是用来获得加密密钥交换和数字签名的,此算法使用服务器的SSL数字证书中的公用密钥。有了服务器的SSL数字证书,客户端也可以验证服务器的身份。SSL 协议的版本 1 和 2 只提供服务器认证。版本 3 添加了客户端认证,此认证同时需要客户端和服务器的数字证书。

SSL 握手

SSL 连接总是由客户端启动的。在SSL 会话开始时执行 SSL 握手。此握手产生会话的密码参数。关于如何处理 SSL 握手的简单概述,如下图所示。此示例假设已在 Web 浏览器 和 Web 服务器间建立了 SSL 连接。

(1) 客户端发送列出客户端密码能力的客户端“您好”消息(以客户端首选项顺序排序),如 SSL 的版本、客户端支持的密码对和客户端支持的数据压缩方法。消息也包含 28 字节的随机数。

(2) 服务器以服务器“您好”消息响应,此消息包含密码方法(密码对)和由服务器选择的数据压缩方法,以及会话标识和另一个随机数。
注意:客户端和服务器至少必须支持一个公共密码对,否则握手失败。服务器一般选择最大的公共密码对。

(3) 服务器发送其SSL数字证书。(服务器使用带有 SSL 的 X.509 V3 数字证书。)
如果服务器使用 SSL V3,而服务器应用程序(如 Web 服务器)需要数字证书进行客户端认证,则客户端会发出“数字证书请求”消息。在 “数字证书请求”消息中,服务器发出支持的客户端数字证书类型的列表和可接受的CA的名称。

(4) 服务器发出服务器“您好完成”消息并等待客户端响应。

(5) 一接到服务器“您好完成”消息,客户端( Web 浏览器)将验证服务器的SSL数字证书的有效性并检查服务器的“你好”消息参数是否可以接受。
如果服务器请求客户端数字证书,客户端将发送其数字证书;或者,如果没有合适的数字证书是可用的,客户端将发送“没有数字证书”警告。此警告仅仅是警告而已,但如果客户端数字证书认证是强制性的话,服务器应用程序将会使会话失败。

(6) 客户端发送“客户端密钥交换”消息。此消息包含 pre-master secret (一个用在对称加密密钥生成中的 46 字节的随机数字),和 消息认证代码 ( MAC )密钥(用服务器的公用密钥加密的)。
如果客户端发送客户端数字证书给服务器,客户端将发出签有客户端的专用密钥的“数字证书验证”消息。通过验证此消息的签名,服务器可以显示验证客户端数字证书的所有权。
注意: 如果服务器没有属于数字证书的专用密钥,它将无法解密 pre-master 密码,也无法创建对称加密算法的正确密钥,且握手将失败。

(7) 客户端使用一系列加密运算将 pre-master secret 转化为 master secret ,其中将派生出所有用于加密和消息认证的密钥。然后,客户端发出“更改密码规范” 消息将服务器转换为新协商的密码对。客户端发出的下一个消息(“未完成”的消息)为用此密码方法和密钥加密的第一条消息。

(8) 服务器以自己的“更改密码规范”和“已完成”消息响应。

(9) SSL 握手结束,且可以发送加密的应用程序数据。

其他

RAID

February 13th, 2008

       RAID是“Redundant Array of Independent Disk”的缩写,中文意思是独立冗余磁盘阵列。冗余磁盘阵列技术诞生于1987年,由美国加州大学伯克利分校提出。
                                                                                                                                
RAID磁盘阵列(Redundant Array of Independent Disks)

概述

 

       简单地解释,就是将N台硬盘透 过RAID Controller(分Hardware,Software)结合成虚拟单台大容量的硬盘使用,其特色是N台硬盘同时读取速度加快及提供容错性 Fault Tolerant,所以RAID是当成平时主要访问Data的Storage不是Backup Solution。
       在RAID有一基本概念称为EDAP(Extended Data Availability and Protection),其强调扩充性及容错机制, 也是各家厂商如:Mylex,IBM,HP,Compaq,Adaptec,Infortrend等诉求的重点,包括在不须停机情况下可处理以下动作:
       RAID 磁盘阵列支援自动检测故障硬盘;
       RAID 磁盘阵列支援重建硬盘坏轨的资料;
       RAID 磁盘阵列支援支持不须停机的硬盘备援 Hot Spare;
       RAID 磁盘阵列支援支持不须停机的硬盘替换 Hot Swap;
       RAID 磁盘阵列支援扩充硬盘容量等。
       一旦RAID阵列出现故障,硬件服务商只能给客户重新初始化或者REBUILD,这样客户数据就会无法挽回。我们对RAID0、RAID1、RAID5以 及组合型的RAID系列磁盘阵列数据恢复具有丰富的实践经验,出现故障以后只要不对阵列作初始化操作,我们就有能力恢复出故障RAID磁盘阵列的数据。         

RAID的工作原理

       RAID如何实现数据存储的高稳定性呢?我们不妨来看一下它的工作原理。RAID按照实现原理的不同分为不同的级别,不同的级别之间工作模式是有区别的。 整个的RAID结构是一些磁盘结构,通过对磁盘进行组合达到提高效率,减少错误的目的,不要因为这么多名词而被吓坏了,它们的原理实际上十分简单。问了便 于说明,下面示意图中的每个方块代表一个磁盘,竖的叫块或磁盘阵列,横称之为带区。

技术规范

(1)RAID技术规范简介       冗余磁盘阵列技术最初的研制目的是为了组合小的廉价磁盘来代替大的昂贵磁盘,以降低大批量数据存储的费用,同时也希望采用冗余信息的方式,使得磁盘失效时不会使对数据的访问受损失,从而开发出一定水平的数据保护技术,并且能适当的提升数据传输速度。

 

       过去RAID一直是高档服务器才有缘享用,一直作为高档SCSI硬盘配套技术作应用。近来随着技术的发展和产品成本的不断下降,IDE硬盘性能有了很大提升,加之RAID芯片的普及,使得RAID也逐渐在个人电脑上得到应用。  

       那么为何叫做冗余磁盘阵列呢?冗余的汉语意思即多余,重复。而磁盘阵列说明不仅仅是一个磁盘,而是一组磁盘。这时你应该明白了,它是利用重复的磁盘来处理数据,使得数据的稳定性得到提高。

(2)RAID技术
      
       主要包含RAID 0~RAID 7等数个规范,它们的侧重点各不相同,常见的规范有如下几种:

RAID 0:无差错控制的带区组

    要实现RAID0必须要有两个以上硬盘驱动器,RAID0实现了带区组,数据并不是保存在一个硬盘上,而是分成数据块保存在不同驱动器上。因为将数据分布 在不同驱动器上,所以数据吞吐率大大提高,驱动器的负载也比较平衡。如果刚好所需要的数据在不同的驱动器上效率最好。它不需要计算校验码,实现容易。它的 缺点是它没有数据差错控制,如果一个驱动器中的数据发生错误,即使其它盘上的数据正确也无济于事了。不应该将它用于对数据稳定性要求高的场合。如果用户进 行图象(包括动画)编辑和其它要求传输比较大的场合使用RAID0比较合适。同时,RAID可以提高数据传输速率,比如所需读取的文件分布在两个硬盘上, 这两个硬盘可以同时读取。那么原来读取同样文件的时间被缩短为1/2。

RAID 1:镜象结构

       对于使用这种RAID1结构的设备来说,RAID控制器必须能够同时对两个盘进行读操作和对两个镜象盘进行写操作。通过下面的结构图您也可以看到必须有两 个驱动器。因为是镜象结构在一组盘出现问题时,可以使用镜象,提高系统的容错能力。它比较容易设计和实现。每读一次盘只能读出一块数据,也就是说数据块传 送速率与单独的盘的读取速率相同。因为RAID1的校验十分完备,因此对系统的处理能力有很大的影响,通常的RAID功能由软件实现,而这样的实现方法在 服务器负载比较重的时候会大大影响服务器效率。当您的系统需要极高的可靠性时,如进行数据统计,那么使用RAID1比较合适。而且RAID1技术支持“热 替换”,即不断电的情况下对故障磁盘进行更换,更换完毕只要从镜像盘上恢复数据即可。当主硬盘损坏时,镜像硬盘就可以代替主硬盘工作。镜像硬盘相当于一个 备份盘,可想而知,这种硬盘模式的安全性是非常高的,但带来的后果是硬盘容量利用率很低,只有50%,是所有RAID级别中最低的。  

RAID2:带海明码校验

       从概念上讲,RAID 2 同RAID 3类似, 两者都是将数据条块化分布于不同的硬盘上, 条块单位为位或字节。然而RAID 2 使用一定的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息,使得RAID 2技术实施更复杂。因此,在商业环境中很少使用。下图左边的各个磁盘上是数据的各个位,由一个数据不同的位运算得到的海明校验码可以保存另一组磁盘上,具 体情况请见下图。由于海明码的特点,它可以在数据发生错误的情况下将错误校正,以保证输出的正确。它的数据传送速率相当高,如果希望达到比较理想的速度, 那最好提高保存校验码ECC码的硬盘,对于控制器的设计来说,它又比RAID3,4或5要简单。没有免费的午餐,这里也一样,要利用海明码,必须要付出数 据冗余的代价。输出数据的速率与驱动器组中速度最慢的相等。

RAID3:带奇偶校验码的并行传送

       这种校验码与RAID2不同,只能查错不能纠错。它访问数据时一次处理一个带区,这样可以提高读取和写入速度。校验码在写入数据时产生并保存在另一个磁盘 上。需要实现时用户必须要有三个以上的驱动器,写入速率与读出速率都很高,因为校验位比较少,因此计算时间相对而言比较少。用软件实现RAID控制将是十 分困难的,控制器的实现也不是很容易。它主要用于图形(包括动画)等要求吞吐率比较高的场合。不同于RAID 2,RAID 3使用单块磁盘存放奇偶校验信息。如果一块磁盘失效,奇偶盘及其他数据盘可以重新产生数据。 如果奇偶盘失效,则不影响数据使用。RAID 3对于大量的连续数据可提供很好的传输率,但对于随机数据,奇偶盘会成为写操作的瓶颈。

RAID4:带奇偶校验码的独立磁盘结构

       RAID4和RAID3很象,不同的是,它对数据的访问是按数据块进行的,也就是按磁盘进行的,每次是一个盘。在图上可以这么看,RAID3是一次一横 条,而RAID4一次一竖条。它的特点的RAID3也挺象,不过在失败恢复时,它的难度可要比RAID3大得多了,控制器的设计难度也要大许多,而且访问 数据的效率不怎么好。  

RAID5:分布式奇偶校验的独立磁盘结构

       从它的示意图上可以看到,它的奇偶校验码存在于所有磁盘上,其中的p0代表第0带区的奇偶校验值,其它的意思也相同。RAID5的读出效率很高,写入效率 一般,块式的集体访问效率不错。因为奇偶校验码在不同的磁盘上,所以提高了可靠性。但是它对数据传输的并行性解决不好,而且控制器的设计也相当困难。 RAID 3 与RAID 5相比,重要的区别在于RAID 3每进行一次数据传输,需涉及到所有的阵列盘。而对于RAID 5来说,大部分数据传输只对一块磁盘操作,可进行并行操作。在RAID 5中有“写损失”,即每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。   

RAID6:带有两种分布存储的奇偶校验码的独立磁盘结构

       名字很长,但是如果看到图,大家立刻会明白是为什么,请注意p0代表第0带区的奇偶校验值,而pA代表数据块A的奇偶校验值。它是对RAID5的扩展,主 要是用于要求数据绝对不能出错的场合。当然了,由于引入了第二种奇偶校验值,所以需要N+2个磁盘,同时对控制器的设计变得十分复杂,写入速度也不好,用 于计算奇偶校验值和验证数据正确性所花费的时间比较多,造成了不必须的负载。我想除了军队没有人用得起这种东西。  

RAID7:优化的高速数据传送磁盘结构

       RAID7所有的I/O传送均是同步进行的,可以分别控制,这样提高了系统的并行性,提高系统访问数据的速度;每个磁盘都带有高速缓冲存储器,实时操作系 统可以使用任何实时操作芯片,达到不同实时系统的需要。允许使用SNMP协议进行管理和监视,可以对校验区指定独立的传送信道以提高效率。可以连接多台主 机,因为加入高速缓冲存储器,当多用户访问系统时,访问时间几乎接近于0。由于采用并行结构,因此数据访问效率大大提高。需要注意的是它引入了一个高速缓 冲存储器,这有利有弊,因为一旦系统断电,在高速缓冲存储器内的数据就会全部丢失,因此需要和UPS一起工作。当然了,这么快的东西,价格也非常昂贵。

RAID10:高可靠性与高效磁盘结构

       这种结构无非是一个带区结构加一个镜象结构,因为两种结构各有优缺点,因此可以相互补充,达到既高效又高速还可以的目的。大家可以结合两种结构的优点和缺 点来理解这种新结构。这种新结构的价格高,可扩充性不好。主要用于容易不大,但要求速度和差错控制的数据库中。  

RAID53:高效数据传送磁盘结构

       越到后面的结构就是对前面结构的一种重复和再利用,这种结构就是RAID3和带区结构的统一,因此它速度比较快,也有容错功能。但价格十分高,不易于实 现。这是因为所有的数据必须经过带区和按位存储两种方法,在考虑到效率的情况下,要求这些磁盘同步真是不容易。

RAID0+1

       把RAID0和RAID1技术结合起来,即RAID0+1。数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力。要求至少4个硬盘才能作成RAID0+1。  

(3)JBOD模式

       JBOD通常又称为Span。它是在逻辑上将几个物理磁盘一个接一个连起来, 组成一个大的逻辑磁盘。JBOD不提供容错,该阵列的容量等于组成Span的所有磁盘的容量的总和。JBOD严格意义上说,不属于RAID的范围。不过现 在很多IDE RAID控制芯片都带着种模式,JBOD就是简单的硬盘容量叠加,但系统处理时并没有采用并行的方式,写入数据的时候就是先写的一块硬盘,写满了再写第二 块硬盘……

(4)我们能够用得上的IDE RAID

       上面是对RAID原理的叙述,而我们Pcfans最关心的是RAID的应用。我们日常使用IDE硬盘,而且很容易买到IDE RAID卡和集成RAID芯片的主板。所以跟我们最贴近的是IDE RAID。限于应用级别很低,IDE RAID多数只支持RAID 0,RAID 1,RAID 0+1,JBOD模式。

RAID的应用

       开始时RAID 方案主要针对SCSI硬盘系统,系统成本比较昂贵。1993年,HighPoint公司推出了第一款IDE-RAID控制芯片,能够利用相对廉价的IDE 硬盘来组建RAID系统,从而大大降低了RAID的“门槛”。从此,个人用户也开始关注这项技术,因为硬盘是现代个人计算机中发展最为“缓慢”和最缺少安 全性的设备,而用户存储在其中的数据却常常远超计算机的本身价格。在花费相对较少的情况下,RAID技术可以使个人用户也享受到成倍的磁盘速度提升和更高 的数据安全性,现在个人电脑市场上的IDE-RAID控制芯片主要出自HighPoint和Promise公司,此外还有一部分来自AMI公司(如表 2)。
  
       面向个人用户的IDE-RAID芯片一般只提供了RAID 0、RAID 1和RAID 0+1(RAID 10)等RAID规范的支持,虽然它们在技术上无法与商用系统相提并论,但是对普通用户来说其提供的速度提升和安全保证已经足够了。随着硬盘接口传输率的 不断提高,IDE-RAID芯片也不断地更新换代,芯片市场上的主流芯片已经全部支持ATA 100标准,而HighPoint公司新推出的HPT 372芯片和Promise最新的PDC20276芯片,甚至已经可以支持ATA 133标准的IDE硬盘。在主板厂商竞争加剧、个人电脑用户要求逐渐提高的今天,在主板上板载RAID芯片的厂商已经不在少数,用户完全可以不用购置 RAID卡,直接组建自己的磁盘阵列,感受磁盘狂飙的速度。

其他

魔兽世界以及其他MMORPG中的定义:由一群玩家在某一地区进行的大规模作战被称为Raid。

Linux, 其他

直接telnet 25端口发邮件

November 30th, 2007

使用以下命令启动 TELNET 会话:
Telnet xxx.xxx.xxx.xxx 25
如果正常,您将会看到以下来自 IMC 的响应:
       220 site.company.com Microsoft Exchange Internet Mail
       Connector 4.0.xxx.xx

其中,xxx.xx 对 RTM 是 837.3,对 SP1 是 838.14。

键入以下命令开始进行通讯:
HELO test.company.com
您应看到如下响应:
       250 OK

键入以下命令来通知 IMC 邮件源于何处:
MAIL FROM:Admin@test.company.com
您应得到如下响应:
       250 OK - MAIL FROM <[email]Admin@test.company.com[/email]>

键入以下命令来通知 IMC 邮件的目标地址(使用一个有效的 Microsoft Exchange 收件人 SMTP 地址)。
RCPT TO:<[email]User@Site.Domain.Com[/email]>
您应看到如下响应:
       250 OK - Recipient <[email]User@Site.Domain.Com[/email]>

键入以下命令以通知 IMC 您已准备好发送数据:
DATA
您应看到如下响应:
       354 Send data.  End with CRLF.CRLF

键入以下命令以添加主题行:
Subject: test message

然后按两次 Enter 键。

该命令看不到任何响应。

备注: 两个 Enter 命令符合 RFC 822 规则,即 822 命令后必须跟空行。

键入以下命令来添加邮件正文:
This is a test message
您将看不到来自该命令的响应。

在紧接着的空行处键入句号,然后按 ENTER 键。

您应看到如下响应:
       250 OK

键入以下命令以关闭连接:
QUIT
您应看到如下响应:
221 closing connection

对于上述任一命令,如果您收到“500 Command not recognized”错误消息,则表明由于语法错误或无效的命令导致 IMC 无法识别您所键入的内容。

登录进入您在上述步骤 4 中选择的邮件收件人的 Microsoft Exchange 客户邮箱。 如果邮箱中有您的测试邮件,说明传入 IMC 通讯工作正常。

如果应用程序事件日志显示任何错误消息,或在接收邮件时出现问题,请检查配置或到主机的通讯。

概要

本文介绍如何 telnet 到运行简单邮件传输协议 (SMTP) 服务的计算机上的端口 25,以解决 SMTP 通信问题。默认情况下,SMTP 侦听端口 25。

您可以根据您遇到的问题类型选用以下适当的疑难解答步骤。例如,如果您在两台 Microsoft Exchange 2000 Server 服务器之间通过 SMTP 发送邮件时遇到问题,则可以通过在发送服务器上使用 Telnet 连接到目标服务器上的端口 25 来测试 SMTP 连接。或者,如果您在接收来自 Internet 的 SMTP 邮件时遇到问题,则可以按照本文中列出的步骤,测试驻留在 Internet 上但不在您的网络上的主机与您的 SMTP 服务器的连接。

更多信息

Microsoft 产品线中有 SMTP 的多个不同变体。Microsoft Windows 产品线的 SMTP 服务包含在 Internet 信息服务 (IIS) 中,而在 Microsoft Windows NT Server 4.0 中,SMTP 服务包含在 Option Pack 中。在较新版本的 Windows 中,IIS 已被集成到操作系统中,并且您可以使用“控制面板”中的“添加或删除程序”添加 IIS。此外,Exchange 2000 和 Microsoft Exchange Server 2003 都使用 IIS 中的现有 SMTP 服务及其他功能。Microsoft Exchange Server 版本 4.0、5.0 和 5.5 均包含它们自己的 SMTP 版本,所采用的形式为 Internet Mail Connector (IMC) 或 Internet Mail Service (IMS)。

注意:在 Exchange 5.0 及更高版本中,Internet Mail Connector (IMC) 被重命名为 Internet Mail Service。

在启动 Telnet 会话之前,必须具有要将此测试邮件发送到的目标用户的完整 SMTP 电子邮件地址。该电子邮件地址必须采用以下格式: 

User@Site.Domain.com

您也可以具有运行 SMTP 服务的服务器计算机的完全限定域名 (FQDN) 或 IP 地址(例如,10.120.159.1)。如果服务器在您的组织中,您可能已经拥有这些信息。如果服务器是外部服务器,查找这些信息最简单的方法是使用 Nslookup.exe 以找到包含这些信息的 DNS 记录。 有关 NSlookup 的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 

200525 使用 NSlookup.exe

有关如何获取 Internet 邮件交换器记录的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 

203204 XFOR:如何获取 Internet 邮件交换器记录

确保运行 SMTP 服务的服务器上已启动 SMTP。要测试 SMTP 是否已启动,您可以运行本文中列出的基本测试,并验证您是否会收到来自远程服务器的 220 消息。这还将验证 SMTP 是否正在运行。

注意: 

  • 有些 Telnet 应用程序要求您打开本地回显功能,以查看键入的命令。要在 Microsoft Telnet 会话中执行此操作,请在命令提示符处键入 set local_echo。 
  • 在 Microsoft Windows XP 中,应键入 set localecho 而不是 set local_echo。 

基本测试

按照下列步骤操作,以确保主机和远程 SMTP 服务器能够通信。如果在您键入以下任一命令之后,收到以下错误信息,则说明 SMTP 服务器因为语法错误或命令错误而无法识别您所键入的内容:

500 Command not recognized

检查该命令并再次键入它,或者验证您是否正在与 Microsoft SMTP 服务器直接通信。

注意:Microsoft Telnet 不允许您使用 Backspace 键。如果在键入时出错,必须按 Enter 键,然后开始键入新的命令。

在以下步骤中,您要从命令行中运行 Telnet。要打开命令行,请单击“开始”,单击“运行”,在“打开”框中键入 cmd,然后单击“确定”。 

  1. 您可以通过使用以下格式的 Telnet 命令来启动 Telnet 会话:注意:在键入每行内容之后按 Enter 键。 

    telnet 服务器名端口号

    例如,键入: 

    telnet mail.contoso.com 25

    注意:您可以将服务器名 替换为您要连接到的 SMTP 服务器的 IP 地址或 FQDN。记住在键入每个命令之后按 Enter 键。如果该命令起作用,您将会收到来自 SMTP 服务器的类似以下内容的消息:

     

     

    ?/P>

    220 site.contoso.com Microsoft Exchange Internet Mail Connector 

    注意:由于有许多不同版本的 Microsoft SMTP 或第三方 SMTP 服务器,因此您可能会收到来自接收服务器的不同的消息。不过,您肯定会收到包含服务器的 FQDN 和 SMTP 的版本的 220 消息。此外,所有版本的 Microsoft SMTP 在 220 消息中都包含“Microsoft”一词。 

  2. 通过键入以下命令开始通信: 

    EHLO test.com

    注意:您可以使用 HELO 命令,但是 EHLO 是扩展 SMTP 动词集中的一个动词,SMTP 的所有当前 Microsoft 实现都支持该动词集。除非您认为扩展 SMTP 动词有问题,否则最好使用 EHLO。

    如果该命令成功,您会收到以下消息: 

    ?/P>

    250 OK
  3. 键入以下命令向接收 SMTP 服务器通知邮件发件人: 

    MAIL FROM:Admin@test.com

    注意:该地址可以是您想使用的任何 SMTP 地址,但是最好考虑以下问题: 

    1. 有些 SMTP 邮件系统会基于 MAIL FROM:地址筛选邮件,并且会禁止某些 IP 地址连接到 SMTP 邮件系统,或者如果连接 IP 地址与 SMTP 邮件系统所在的域不匹配,它还会禁止该地址向 SMTP 邮件系统发送电子邮件。在本例中,该域是 test.com。 
    2. 如果您在发送邮件时没有使用有效的电子邮件地址,您将无法确定在发送邮件时是否有问题,因为未送达报告 (NDR) 无法到达无效的 IP 地址。如果您使用有效的电子邮件地址,您将会收到来自 SMTP 服务器的以下消息: 

      ?/P>

      250 OK - MAIL FROM Admin@test.com
  4. 键入以下命令向接收 SMTP 服务器通知邮件的收件人。注意:最好始终使用要发送到的域中的有效收件人 SMTP 地址。例如,如果您要发送到 john@domain.com,必须确保域中存在 john@domain.com。否则,您会收到 NDR。

    使用您要发送到的人员的 SMTP 地址键入以下命令: 

    RCPT TO:User@Domain.Com

    您会收到以下消息: 

    ?/P>

    250 OK - Recipient User@ Domain.Com
  5. 键入以下命令通知 SMTP 服务器您已准备好发送数据: 

    DATA

    您会收到以下消息: 

    354 Send data. End with CRLF.CRLF
  6. 您现在已可以开始键入邮件的 822/2822 部分。用户将会在他们的收件箱中看到邮件的这一部分。键入以下命令以添加主题行: 

    Subject:test message

    按两次 Enter 键。此命令不会显示任何信息。

    注意:按两次 Enter 键为了与 Request for Comments (RFC) 822 和 2822 保持一致。它规定 822 命令后面必须跟一个空行。 

  7. 键入以下命令以添加邮件正文: 

    This is a test message you will not see a response from this command.

  8. 在下一个空行中键入英文句点 (.),然后按 Enter 键。您会收到以下消息: 

    ?/P>

    250 OK
  9. 键入以下命令关闭连接: 

    QUIT

    您会收到以下消息: 

    ?/P>

    221 closing connection
  10. 验证收件人是否收到您发送的消息。如果在应用程序事件日志中出现任何错误事件消息,或者接收邮件时出现问题,请检查主机的配置或通信。 

高级测试

除本文前面列出的基本测试步骤外,您还可以使用送达回执对邮件进行双向测试。您可以使用此方法验证 SMTP 服务器是否可以接受入站连接,并且为发件人生成一个送达回执以测试 SMTP 服务器的出站连接。

要为测试邮件请求送达回执,请参见本文“基本测试”一节的第 4 步,以确保提供的信息是可以接收送达回执的有效电子邮件地址。然后在本文“基本测试”一节的第 5 步中,在 Telnet 会话中键入以下命令

其他

Apache安装Web服务器

October 19th, 2007
目前能做www server的程序很多,在UNIX下较常见的免费服务器就有很多种,例如NSCA,Apache等等。我们讨论的将是世界上最常用的一种,即Apache Server,我用的源代码包是httpd-2.2.4.tar.gz。
一.安装Apache
#tar -zxvf httpd-2.2.4.tar.gz   //解压APACHE的源码包
#./configure –prefix=/usr/local/apache –enable-so //解压APACHE后的目录进行编译前配置
#make //编译APACHE源代码     
#make install //安装APACHE服务器程序
到这里就安装完了。
二.Apache的配置(根据安装路径)
/usr/local/apache/conf //主配置文件目录
/usr/local/apache/htdocs //主页目录,默认的用户访问目录
/usr/local/apache/modules //DSO文件目录
/usr/local/apache/bin //系统管理命令目录
/usr/local/apache/logs/access_log //访问日志
/usr/local/apache/logs/error_log //错误日志
/usr/local/apache/logs //日志文件
/usr/local/apache/bin/apachectl –k start //启动APACHE服务器程序
(以上是源代码包所安装所产生的文件)
/etc/httpd/conf/httpd.conf //主配置文件
/var/log/httpd/error_log //错误日志文件
/var/log/httpd/access_log //访问日志文件
/var/www //服务器提供客户端可访问目录
(这是rpm包安装所产生的文件)
ps -aux | grep httpd //查看HTTPD进程是否启动
编辑启动文件    vi /etc/rc.d/rc.local
增加一行启动项 /usr/local/apache/bin/apachectl
新的httpd.conf一般被分成几个段落,位于/usr/local/apache/conf目录下面。第一部分是全局变量的位置,按照我们习惯的方式,将在缺省的httpd.conf上进行必要的修改,下面列出一些我们比较感兴趣的选择:
1.       基本配置
ServerRoot "/etc/httpd" #包含httpd服务器文件的目录。其它指定的目录如果没有指定绝对路径,则目录是相对于该目录。
Listen 80 #服务器监听的端口号。
UseCanonicalName Off #禁止使用机器的正式名
DocumentRoot "/usr/local/apache/htdocs" #主站点的网页存储位置
DirectoryIndex index.html index.html.var index.htm index.shtml index.cgi
#设置多种成功访问主页的方式,为的是提高系统的容错性
AddDefaultCharset GB2312 #设置apache的默认语言为中文
ExtendedStatus On #设置服务器产生的状态信息
LockFile /var/lock/httpd.lock
PidFile /var/run/httpd.pid
ScoreBoardFile /var/run/httpd.scoreboard
Timeout 300 #响应超时量,单位为秒(如果客户端300秒还没有连上,或者服务器300秒还没有传送数据到客户端,就会自动断线。)
以下是对主站点的目录进行访问控制
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
在上面这段目录属性配置中,主要有下面的选项:
Options:配置在特定目录使用哪些特性。

ExecCGI: 在该目录下允许执行CGI脚本。
FollowSymLinks: 在该目录下允许文件系统使用符号连接。

Indexes: 当用户访问该目录时,如果用户找不到DirectoryIndex指定的主页文件(例如index.html),则返回该目录下的文件列表给用户。

SymLinksIfOwnerMatch: 当使用符号连接时,只有当符号连接的文件拥有者与实际文件的拥有者相同时才可以访问。
AllowOverride:允许存在于.htaccess文件中的指令类型(.htaccess文件名是可以改变的,其文件名由AccessFileName指令决定):
None: 当AllowOverride被设置为None时,表示只能浏览,不搜索该目录下的.htaccess文件(可以减小服务器开销)。

All: 在.htaccess文件中可以使用所有的指令。
Order:控制在访问时Allow和Deny两个访问规则哪个优先:
Allow:允许访问的主机列表(可用域名或子网,例如:Allow from 192.168.1.0/24)。

Deny:拒绝访问的主机列表。
DirectoryIndex index.html index.htm index.php #主页文件的设置(本例将主页文件设置为:index.html,index.htm和index.php)
2.       服务器的优化(MPM: Multi-Processing Modules)
apache2主要的优势就是对多处理器的支持更好,在编译时同过使用–with-mpm选项来决定apache2的工作模式。如果知道当前的apache2使用什么工作机制,可以通过httpd -l命令列出apache的所有模块,就可以知道其工作方式:
⑴.prefork:如果httpd -l列出prefork.c,则需要对下面的段进行配置:
<IfModule prefork.c>
StartServers       5 #启动apache时启动的httpd进程个数。
MinSpareServers    5 #服务器保持的最小空闲进程数。
MaxSpareServers   20 #服务器保持的最大空闲进程数。
MaxClients       150 #最大并发连接数,所能提供服务的最大客户端编号,大于它的部分被放入请求队列。
MaxRequestsPerChild 1000 #每个子进程被请求服务多少次后被kill掉。0表示不限制,推荐设置为1000。
</IfModule>
在该工作模式下,服务器启动后起动5个httpd进程(加父进程共6个,通过ps -ax|grep httpd命令可以看到)。当有用户连接时,apache会使用一个空闲进程为该连接服务,同时父进程会fork一个子进程。直到内存中的空闲进程达到MaxSpareServers。该模式是为了兼容一些旧版本的程序。
.worker:如果httpd -l列出worker.c,则需要对下面的段进行配置:
<IfModule worker.c>
StartServers         2 #启动apache时启动的httpd进程个数。
MaxClients         150 #最大并发连接数。
MinSpareThreads     25 #服务器保持的最小空闲线程数。
MaxSpareThreads     75 #服务器保持的最大空闲线程数。
ThreadsPerChild     25 #每个子进程的产生的线程数。
MaxRequestsPerChild 0 #每个子进程被请求服务多少次后被kill掉。0表示不限制,推荐设置为1000。
</IfModule>
该模式是由线程来监听客户的连接。当有新客户连接时,由其中的一个空闲线程接受连接。服务器在启动时启动两个进程,每个进程产生的线程数是固定的(ThreadsPerChild决定),因此启动时有50个线程。当50个线程不够用时,服务器自动fork一个进程,再产生25个线程。
⑶.perchild:如果httpd -l列出perchild.c,则需要对下面的段进行配置:
<IfModule perchild.c>
NumServers           5 #服务器启动时启动的子进程数
StartThreads         5 #每个子进程启动时启动的线程数
MinSpareThreads      5 #内存中的最小空闲线程数
MaxSpareThreads     10 #最大空闲线程数
MaxThreadsPerChild 20 #每个线程最多被请求多少次后退出。0不受限制。
MaxRequestsPerChild 0 #每个子进程服务多少次后被重新fork。0表示不受限制。
</IfModule>
该模式下,子进程的数量是固定的,线程数不受限制。当客户端连接到服务器时,又空闲的线程提供服务。 如果空闲线程数不够,子进程自动产生线程来为新的连接服务。该模式用于多站点服务器。
3.       HTTP返头回信息配置
ServerTokens Prod #该参数设置http头部返回的apache版本信息,可用的值和含义如下:

Prod:仅软件名称,例如:apache
Major:包括主版本号,例如:
apache/2
Minor:包括次版本号,例如:
apache/2.0
Min:仅apache的完整版本号,例如:
apache/2.0.54
OS:包括操作系统类型,例如:apache/2.0.54(Unix)

Full:包括apache支持的模块及模块版本号,例如:
Apache/2.0.54 (Unix) mod_ssl/2.0.54 OpenSSL/0.9.7g
ServerSignature Off #在页面产生错误时是否出现服务器版本信

4.       持久性连接设置
KeepAlive On  #开启持久性连接功能。即当客户端连接到服务器,下载完数据后仍然保持连接状态。
MaxKeepAliveRequests 100 #一个连接服务的最多请求次数。数目越多则浪费的硬盘空间越多,设置为0则不止持续传。
KeepAliveTimeout 30 #持续连接多长时间,该连接没有再请求数据,则断开该连接。缺省为15秒。
5.       别名设置
对于不在DocumentRoot指定的目录内的页面,既可以使用符号连接,也可以使用别名。别名的设置如下:
Alias /web/ "/var/www/web/" #访问时可以输入:http://www.test.com/web/
<Directory "/var/www/web"> #对该目录进行访问控制设置
    Options Indexes MultiViews 
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
6.       日志的设置
ErrorLog logs/error_log #日志的保存位置
LogLevel warn #日志的级别
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common #common为日志格式名称
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
格式中的各个参数如下:
%h –客户端的ip地址或主机名

%l –The 这是由客户端 identd 判断的RFC 1413身份,输出中的符号 "-" 表示此处信息无效。

%u –由HTTP认证系统得到的访问该网页的客户名。有认证时才有效,输出中的符号 "-" 表示此处信息无效。

%t –服务器完成对请求的处理时的时间。

"%r" –引号中是客户发出的包含了许多有用信息的请求内容。

%>s –这个是服务器返回给客户端的状态码。

%b –最后这项是返回给客户端的不包括响应头的字节数。

"%{Referer}i" –此项指明了该请求是从被哪个网页提交过来的。

"%{User-Agent}i" –此项是客户浏览器提供的浏览器识别信息。
7.       其它功能
AddDefaultCharset GB2312 #设置默认字符集, 支持中文界面
      代理功能:
      CacheRoot "/etc/httpd/proxy"
        设置cache目录
      CacheSize
三.配置实例
1.       根据以下要求修改httpd.comf主服务器的任何设置
1)       站点主目录为 /webpage,所有的主机和用户都可以访问该目录
2)       支持个人主页
3)       支持中文其默认文档为default.htm
4)       通过apache能够访问/www目录页面,且只允许192.168.1.110访问
     修改的内容:
DocumentRoot "/var/www/webpage"
<Directory />
    Options FollowSymLinks
    AllowOverride None
    order allow,deny
    allow from all
</Directory>
    directoryindex default.htm #在webpage目录下创建,访问时的默认文档
Alias /www "/var/www/www"
<Directory "/var/www/www">
        Options Indexes MultiViews
         AllowOverride None
         Order deny,allow
         deny from all
         Allow from 192.168.1.110
</Directory>
2.       虚拟主机的配置
作用:使用WWW虚拟主机的好处在于,一些小规模的网站,通过跟其他网站共享同一台物理机器,可以减少系统的运行成本,并且可以减少管理的难度。另外,对于个人用户,也可以使用这种虚拟主机方式来建立有自己独立域名的WWW服务器,目前国内有很多公司都提供这种免费的服务。
     种类:基于IP地址的虚拟服务器、基于域名的虚拟服
     务器、动态虚拟服务器。
1)       基于IP地址的虚拟服务器
首先要在服务器上为每个虚拟主机单独设置一个IP地址。这些IP地址可以通过增加多个网卡或者在一个网卡上设立多个IP地址来完成。有了多个IP地址后,可以采用以下两种方式之一来设置Apache:
1.1.       为每个虚拟主机各运行一份Apache
采用这种方式,每一份Apache程序可以以单独的用户运行,因此各个虚拟主机之间互不影响。设置这种虚拟主机时,只要为每一份Apache设置一套配置文件就可以了,唯一需要注意的是:必须使用“Listen”语句,强制每一份Apache 仅仅在属于“自己”的IP地址上接收服务请求。
优点:各个虚拟主机之间互不干扰,安全性高。

缺点:占用系统资源较多。
1.2.       多个虚拟主机共享同一份Apache
采用这种方式,各个虚拟主机共享同一份Apache,因此各个虚拟主机之间有一定的影响,尤其是执行CGI程序时,可能会带来一些严重的安全问题。
优点:占用系统资源比上一种方式少。
缺点:安全性低,每个虚拟主机仍然需要占用一个IP地址。
# cp /etc/sysconfig/network-scriipts/ifcfg-eth0
 /etc/sysconfig/network-scriipts/ifcfg-eth0:0
#vi /etc/sysconfig/network-scriipts/ifcfg-eth0:0
    DEVICE=eth0:0
    IPADDR=192.168.1.20
# service network restart
(上面是添加虚拟IP地址,可以copy多个)
 # vi /etc/httpd/conf/httpd.conf
          <virtualhost    192.168.1.10>
           DocumentRoot /www/example
           ServerName www.example.com
           </virtualhost>
<virtualhost   192.168.1.20>
           DocumentRoot /www/example
           ServerName www.example.com
           </virtualhost>
2)       基于域名的虚拟服务器
设置dns服务器,修改区域,建立多条主机记录指向同一个IP 地址。
这种方式下,各个虚拟主机共享同一份Apache,因此有CGI程序运行时,安全性也不高。
     #vi /etc/httpd/conf/httpd.conf
            <virtualhost   192.168.1.10>
                DocumentRoot /www/example1
                ServerName www.example1.com
           </virtualhost>
<virtualhost   192.168.1.10>
                DocumentRoot /www/example2
                ServerName www.example2.com
           </virtualhost>
优点:只要一个IP地址就可以提供大量的虚拟主机服务。
缺点:安全性差。维护这些虚拟主机时需要更改配置文件,并且需要重新启动Apache进程才能起作用。因此不适合进行大规模的虚拟主机服务。

其他

NSLOOKUP的用法

August 26th, 2007

nslookup最简单的用法就是查询域名对应的IP地址,包括A记录和CNAME记录,如果查到的是CNAME记录还会返回别名记录的设置情况。其用法是:

  nslookup 域名

  以下是A记录的返回情况。

\"\"

  nslookup命令会采用先反向解释获得使用的DNS服务器的名称,由于我这里使用的是一个内部的DNS服务器所以没有正确的反向记录,导致结果的前面几行出错。大家可以不必理会。重点看的是最后的两行这里看到的是www.oray.net的IP地址是61.145.112.212。注意即使www.oray.net的主机没有在线同样能够返回结果。

  如果目标域名是一个别名记录(CNAME),nslookup就开始显示出和ping命令不同的地方了,请看查询CNAME记录的结果。由于CNAME和A记录最后都是活的IP地址,所以一般情况下两者是等同看待的,命令的格式相同。

\"\"

  注意这次nslookup返回了三行信息,前两行显示这是一个CNAME记录,对应的域名和IP地址。最后显示的就是目标域名, 并注明Alias(别名)。

如果域名不存在会怎样呢?

\"\"

  看得懂最后以行的英文吗,不懂没关系记住形状就可以了。如果一个指定类型的域名不存在对应的记录同样也是这种结果。

  查询其他类型的域名

  前面两个命令我们没有加任何参数,所以默认情况下nslookup查询的是A类型的记录。如果我们配置了其他类型的记录希望看到解释是否正常。这时候ping就无能为力了。比如我们配置了MX记录,但是邮件服务器只能发信不能收信,到底是域名解释问题还是其他的问题Ping命令的检查只能让你误入歧途。nslookup 这时候可以模拟你的其他遇见服务器进行域名解释的情况。我们需要在nslookup上加上适当的参数。指定查询记录类型的指令格式如下:

  nslookup –qt=类型 目标域名

  注意qt必须小写。

  类型可以是一下字符,不区分大小写:

  A 地址记录(Ipv4)
  AAAA 地址记录(Ipv6)
  AFSDB Andrew文件系统数据库服务器记录(不懂)
  ATMA ATM地址记录(不是自动提款机)
  CNAME 别名记录
  HINFO 硬件配置记录,包括CPU、操作系统信息
  ISDN 域名对应的ISDN号码
  MB 存放指定邮箱的服务器
  MG 邮件组记录
  MINFO 邮件组和邮箱的信息记录
  MR 改名的邮箱记录
  MX 邮件服务器记录
  NS 名字服务器记录
  PTR 反向记录(从IP地址解释域名)
  RP 负责人记录
  RT 路由穿透记录(不懂)
  SRV TCP服务器信息记录(将有大用处)
  TXT 域名对应的文本信息
  X25 域名对应的X.25地址记录

看看oray.net的邮件服务器记录吧。

\"\"

  看看,nslookup把服务器的名称和地址都给出来了,注意preference就是前面所说的优先级,该数值越小则优先级越高。

  我再看看名字服务器记录是怎么样的。

\"\"

  看起来和MX记录的格式差不多,一般情况下服务器会同时返回对应的地址。不过也有不返回的情况。

  在这里我希望大家注意一行显示“Non-suthoritativeanswer:”,这一行在前面的例子中都没有显示过。它的出现代表这个结果是从服务器的缓存中得到的。所以提醒你这不是一个授权的答案。前面我们进行的几次查询过程中192.168.1.104这台机器就采用了我们第一篇文章中描述的过程查询了oray.net的域名。在这个过程中不但缓存了www.oray.net、test.oray.net以及oray.net的MX记录等最终结果。也包括获取的名字服务器等中间结果。隐含的查询了oray.net的NS记录。后面我们还会介绍这个过程。

  指定使用的名字服务器

  在默认情况下nslookup使用的是我们在本机TCP/IP配置中的DNS服务器进行查询,但有时候我们需要指定一个特定的服务器进行查询试验。这时候我们不需要更改本机的TCP/IP配置,只要在命令后面加上指定的服务器IP或者域名就可以了。这个参数在我们对一台指定服务器排错是非常必要的,另外我们可以通过指定服务器直接查询授权服务器的结果避免其他服务器缓存的结果。命令格式如下:

  nslookup [-qt=类型] 目标域名 指定的DNS服务器IP或域名

  我们可看看以下的命令结果:

\"\"

 域名解释过程的模拟

  我们现在来模拟一下一台DNS服务器接到一个不是自己管理的域的域名解释过程。回忆一下第一篇文章的过程:

  首先我们会询问根服务器,然后根服务器会让我们去找对应的顶级服务器。如果查询的是oray.net,就会要求我们去找net的服务器。

  看看下面的范例:

  这里我们让21cn.com的服务器解释www.oicp.net的域名,很显然这台服务器不用有这个域,需要询问根服务器。一般情况下DNS服务器会帮我们完成全部的过程。这种解释方式我们称之为递归解析,为了让大家看到这个过程我家了一个参数让21cn.com的服务器不要这样做。这个参数是-norecurse。这样理论上21cn.com会让我们去问根服务器,不过由于它已经缓存了顶级服务器的记录,所以直接返回了管理net的顶级服务器记录。实际上大部分的查询都不需要从根服务器开始。大家看到了所有的顶级域名服务器的地址都被返回。

  我们随便选择一个在进行查询。

\"\"

  这次顶级服务器就返回了oicp.net的服务器地址记录的。然后我们就向这些记录之一进行查询,一定能够得到答案。可能是一个地址、一个CNAME记录或者告诉你不存在。

  nslookup的命令就介绍到这里,其实nslookup还有许多其他参数。不过常用的就俄这么几个,另外如果大家不喜欢命令行方式的话。还有几个图形界面的nslookup功能的工具。不过大家还是需要了解域名解释都有些什么才能够正确使用这些工具。

Linux, 其他