2008年12月31日星期三

OSPF路由协议(二)

一、SPF算法
SPF路由算法是OSPF的基础。当一个SPF路由器加电以后,它首先引导自己的路由协议数据组件,然后等待来自底层协议的信息。
当一个路由器确认它的接口正常工作以后,它使用OSPF的Hello协议来获取邻居信息。这些邻居是指有接口在同一网络中的路由器。路由器将hello包发送给它的邻居,并从邻居哪里接收hello包。为了帮助发现邻居,hello包也设置了保持生存计时器,来让路由器知道其他路由器是否可用。

在多播网络中(网络支持两个以上的路由器),Hello协议推选一个指定路由器和一个备用指定路由器。在其他事情中,指定路由器负责为整个多播访问网络产生LSA。指定路由器的存在也是为了缩减网络流量以及缩减拓扑数据库的大小。
当两个邻居的链路状态数据库同步了以后,我们就可以说这两个路由器是邻接状态。在多播访问网络中,指定路由器决定那些路由器应该变成邻接状态。拓扑数据库在邻接路由器之间是同步的。邻接控制了路由协议数据包的发布,这些数据包只能在处于邻接状态的路由器之间发布。
每一个路由器周期性的发送LSA来为它们邻接提供信息或者在一个路由器状态改变的时候通知其他路由器。通过已经确定的邻接和链路状态两者之间的比较(已经确定的邻接即拓扑数据库与最新的链路状态不相同,这样我们就可以判定网络发生了变化),失效的路由器能够迅速的被检测出来,并且网络拓扑也可以被正确的修正。通过从LSA的产生的拓扑数据库,每个路由器能够构建出一个最短路径树,每个路由器本身是这个树的根。这个最短路径树依次产生一个路由表(即这个最短路径树中的到达每个节点的一条路径就是路由表的一个条目)。


二、数据包格式
所有的OSPF数据包都以一个24字节的包头开始,如上图所示
1、版本号:用于标识OSPF的使用版本
2、类型:用于标识OSPF数据报的类型,具体类型如下:
Hello:确定和管理邻居关系
Database description:描述拓扑数据库的内容,这些信息会在一个邻接关系初始化的时候进行交换。
Link-state request:从邻居路由器哪里请求部分拓扑数据库。在一个路由器发现它的拓扑数据库以及过时以后,这些信息会被交换(通过测试数据库描述数据包)
Link-state update:回应一个链路状态请求数据包,这些信息也被用于LSA平常的发布。在一个链路状态更新数据包中可以包含多个LSA。
Link-state acknowledgment:一个链路状态更新数据包的确认(可靠传输)
3、路由器ID:标识包的源路由器
4、区域ID:标识这个包属于那个区域。所有的OSPF数据包属于一个单独的区域
5、校验和:校验整个数据报的内容有没有在传输过程中被损坏
6、认证类型:包含认证类型,所有的OSPF协议交换是被认证的。认证类型是基于每个区域的。每个区域之间可以不同
7、认证:包含认证信息
8、数据:包含封装了的上层的信息
三、其他的一些OSPF功能
这些功能包括:花费等价(equal-cost)、多路径路由和基于上层服务类型的路由请求。基于服务类型(TOS)的路由支持许多上层协议。例如,某一个应用可能需要特定的数据是紧急数据,如果OSPF在它进行传输的时候有高优先级的链路,我们就可以用高优先级的链路来传输这个应用的这些紧急数据。
OSPF支持一个或多个度量,如果只有一个度量被使用,那个会被认为是专有的,并且TOS不会被支持。如果有多于一个度量被使用,三个IP TOS位(延迟、吞吐量throughput、可靠性位)可以产生的八种组合,通过为每个组合使用一个单独的度量(即使用单独的路由表)TOS可以选择性的支持每种组合。例如:如果IP TOS位定义了一个低延迟、低吞吐量但是高可靠性的组合,那么OSPF会基于这个TOS设定,来计算一个通向所有目的地的路由。
IP子网掩码包含在每次目的地的发布中,并且也支持变长子网掩码。通过使用变长子网掩码,一个IP网络可以被分成不同大小的子网。这为网络管理提供了额外的网络配置扩展性。

OSPF路由协议(一)

一、背景知识
OSPF是IETF的IGP工作组专门为IP网络开发的一个路由协议。OSPF产生于19世纪80年代,由于RIP已经不能使用网络的快速增长。
OSPF有两个主要的属性:第一个是这个协议是开放的,OSPF的定义被发布在RFC1247。第二个是OSPF是基于SPF算法的。SPF算法有时被叫做Dijkstra算法。
OSPF是一个链路状态路由协议,它发送LSAs(Link-State Advertisements)给所有其他在同一等级区域的路由器。OSPF的LSA中的信息包括:经过的接口、使用的度量以及其他的一些变量。随着OSPF路由器积累链路状态信息,它们使用SPF算法计算出到每个节点的最短路径。
作为一个链路状态路由协议,OSPF与其他例如RIP、IGRP一类的距离矢量路由协议明显不同,运行距离矢量算法的路由器将全部或部分的路由表作为路由更新,发送给它的邻居们。

二、路由等级(Routing Hierarchy)
不像RIP,OSPF可以分等级的进行操作(即将网络划分为不同的等级)。在这个分级系统内最大的实体是自治系统AS。AS是一系列网络的集合,这里网络分享公共的路由策略,并且被统一管理。OSPF是一个AS内部的路由协议(即内部网关路由协议)。但是OSPF也可以从别的自治系统接收路由信息或者将路由信息发送到别的自治系统。
一个AS可以分为一系列的区域,区域是相邻的网络以及这些网络上的主机构成的集合。具有多个端口的路由器可以同时处于多个区域中。这些处于多个区域中的路由器叫做边界路由器,它们为每个区域单独维护着一个拓扑数据库。
拓扑数据库实质上是对所有路由器和网络相互关系的完全描绘。这些拓扑数据库包含了收集到的所有LSA信息,一个拓扑数据库中包含的信息都是来自同一区域内的所有路由器。因为在同一区域内的路由器分享相同的信息,这些信息确定了拓扑数据库。
域这个词有时被用于描述分享同一拓扑数据库的路由器所在网络的一部分。大部分情况,域可以与AS交换使用。
一个区域内部的拓扑结构对外而言是不可见的。通过保持区域拓扑的独立性,OSPF减少了很多路由流量,与AS不分区域相比。
根据源和目的在相同区域或者不同区域,产生了两种类型的OSPF路由,区域内路由是指源和目的在相同的区域内。区域间路由指源和目的在不同的区域内。一个OSPF骨干负责在区域间发布路由信息。骨干是由所有边界路由器、不完全包含在任何一个区域内的网络以及它们附带的路由器组成。如上图,就是一个多区域网络互联的示例。

在上图中,路由器4、5、6、10、11和12组成了骨干。如果在区域3中的主机H1向给区域2中的主机H2发送一个数据包。这个数据包首先发送给路由器13,路由器13将包向前发送给路由器12,然后再传递给路由器11,接着顺着骨干到达区域边界路由器10,然后可以通过两个区域内路由器9和7,最终将数据包传递给主机H2。
其实骨干区域本身也是一个OSPF区域。因此所有的骨干路由器使用相同的过程和算法来管理骨干区域中的路由信息。骨干区域拓扑也是对所有区域内的路由器不可见的。
我们也可以这些定义区域:骨干区域并不是直接相连的。在这种情况下,骨干区域的连接性,必须通过虚拟连接连进行保证。在任意骨干路由器之间配置虚拟连接,并将其连接到非骨干区域,最后实现与他们直接相连相同的效果。
运行OSPF的边界路由通过EGP学习外部路由,例如EGP或者BGP。

EIGRP路由

EIGRP基于四个基本的概念:邻居表、拓扑表、路由状态和路由标记。
一、邻居表
当一个路由发现了一个邻居,它就会就会将邻居的地址以及接口信息作为一个条目存储到邻居表中。每一个协议模块都会有一个单独的邻居表。当一个邻居发送Hello包时,路由器就会设置一个保持时间,这个时间是用来判断发送Hello包的邻居是否可达或可用的依据,如果在规定的时间内没有收到Hello包,就会判断为超时,则DUAL就会认为网络发生了改变。
邻居表中的条目也会被RTP使用。序号被用来匹配数据包的回应,通过查看从邻居哪里收到的最新的数据包序号,就可以判断哪些包是错序的。每一个邻居会有一个传输列表用于排列数据包以防止可能的重传。邻居表中的条目也会有一个计时器来确定重传间隔。
二、拓扑表
拓扑表中包含了邻居路由器所发布的所有目的地址。协议独立模块负责更新这个表,并且这个表被用于DUAL 进行路由计算。拓扑表中的每个条目包含了目的地址以及一系列曾经发布过这些目的地址的邻居。对于每个邻居,条目中都会记录邻居所发布的度量值(这个度量值是邻居存储在它的路由表中的度量值)。这里有一个所有距离矢量协议都必须遵守的规则:邻居路由器所发布到达某个目的地址的路由信息,那么它必须使用这个路由进行数据包的传递(即这条路由必须是这个路由用于发送数据包的路由)。
路由器用来到达某个目的地址的度量也与目的地址相关。这个路由器在路由表中使用并且发送给其他路由器的度量,是它从它的邻居中汇总出来最好的路由开销(即每个路由器中路由表的度量值都是到达某个目的地址的最好值)。
三、路由状态
拓扑表中关于某一地址的条目只能有两种状态:主动和被动。当路由器不需要进行重计算时,处于被动状态;需要重计算时,处于主动状态。如果有可行的继任者,那么该目的地址的条目就不会处于主动状态,这样就避免了重计算。
当某一目的地址没有可行的继任者的时候就会发生重计算。路由器通过发送询问数据包给它的邻居来开始进行重计算。如果某个邻居有到达目的地址的可行的继任者,那么它就会发送一个回复给路由器;如果邻居也没有,它就会继续询问它自己的邻居直到找到一个可行的继任者。当一个目的地址处于主动状态时,路由器不能修改路由表中关于该目的地的信息。当路由器收到某个邻居路由器关于这个目的地址的回复以后,拓扑表中关于这个目的地址的的条目变为被动状态,路由器就会根据拓扑表中的信息选这个一个继任者。
四、路由标识
EIGRP支持域内和域外路由。域内路由来源自一个EIGRP自治域内部。因此,被配置运行EIGRP的直连的网络被认为是域内的路由,并且这些信息在EIGRP自治系统内部进行传播。域外路由是指那些从另一个路由协议中学习到的、被当做静态路由添加进路由表的路由信息。这些路由被单独的添加了它们的来源标识。
域外路由被用下面的这些信息进行标识:
1、重发布这些路由的EIGRP路由器的路由器ID
2、目的地址的自治系统号
3、配置管理标识
4、域外协议的ID
5、域外协议的度量
6、默认路由的标志位
路由标识允许网络管理员自定义路由和可扩展的策略控制。路由标识在自治系统间传输时特别有用。这样可以为在内部使用EIGRP的AS之间的路由交换,提供一种基于策略的分层的路由类型。

EIGRP包类型
EIGRP使用下列包类型:Hello包和acknowledgment包、更新包以及询问包和回复包。
Hello包用于邻居发现/恢复的组播,不需要回应进行确认。一个回应包(是指需要对其进行回应的Hello包)是一个没有数据的Hello包(是用来请求回应号的?)。用于回应的数据包包含一个非0的回应号并且一般是用单播地址进行发送。
更新包用于汇集目的的可达性。当发现了一个新邻居,单播更新包会发送给那个邻居,从而使那个邻居能够构建自己的拓扑表。在其他情况下,比如链路花费改变,更新包会使用组播。更新一般都是可靠传输的。
请求和回复数据包一般都是组播。回应数据包都是可靠传输的
询问和回复数据包一般是在一个目的地址没有可行继任者的情况下发送的。询问数据包一般都是多播。回复数据包作为询问数据包的结果发送给询问者,来告诉询问者:我这里有可行的继任者,不要进行路由的重计算。回复数据包是单播,作为询问数据包的响应。询问数据包和回复数据包也都是可靠传输的。

2008年12月29日星期一

EIGRP简介

一、背景
增强型内部网关路由协议(Enhanced Interior Gateway Routing Protocol EIGRP)是IGRP的增强版本。这使得EIGRP能够更好的适应复杂的网络环境。EIGRP在协议中整合了部分链路状态协议的功能。EIGRP采用弥散更新算法(DUAL)提高了路由计算的能力。DUAL能使EIGRP判断一个路径是由环路的邻居还是无环路的邻居提供的(即:DUAL能帮助EIGRP避免环路的产生)。此外,EIGRP能够自己发现备用的路径,而不是等待其他路由器的路由更新。

EIGRP和IGRP相互之间可以无缝衔接。通过自动的路由重发布,可以很轻松的在IGRP网络内部署EIGRP路由。此外,EIGRP会把IGRP路由视为外部路由,并且网络管理员可以自定义这些路由。


二、EIGRP的功能和特性
EIGRP收敛迅速、支持变长子网掩码、支持路由的部分更新(仅更新发生了改变的部分路由表)、支持多种网络层协议。
运行EIGRP的路由器会存储它所有邻居的路由表,这样它就能迅速的计算出替换路由。如果没有合适的替换路由存在,EIGRP会请求它的邻居帮它找一个合适的替换路由,这些请求会不断传递下去,直到找到合适的路由。
对变长子网掩码的支持,使得EIGRP能够自动在网络边界汇总,此外,EIGRP也可以在任意的端口汇聚到任意的网络边界(即:不一定非要汇聚到某一类网络,也可以汇聚到10.0.0.0/22这样)。
EIGRP不会周期性的更新,而是只有在某条路由的度量发生改变的时候才会产生针对该条路由的更新。并且这些更新会被限制,而只会使需要更新的路由器产生更新(类似VTP修剪)。由于这两个功能,EIGRP比IGRP占用更少的带宽。
EIGRP能够支持AppleTalk、IP和Novell NetWare。EIGRP(在采用AppleTalk的网络中)能够将从RTMP(Routing Table Maintenance Protocol)学习到的路由进行再发布进EIGRP网络;在IP网络中,EIGRP能够从OSPF、RIP、IS-IS、EGP或者BGP中学习到的路由进行再发布进EIGRP网络;在Novell网络中,EIGRP也可以将从Novell RIP或者SAP中学习到的路由再发布进EIGRP网络中。
注:Intermediate System-Intermediate System IS-IS;Exterior Gateway Protocol EGP;Border Gateway Protocol BGP;Service Advertisement Protcol SAP。

三、EIGRP所采用的关键技术
为了更好的提高路由能力,EIGRP采用了四项关键技术:邻居发现/恢复、可靠的传输协议RTP、弥散更新算法有限状态引擎(DUAL finite-state machine)以及协议独立模块。
邻居发现/恢复机制能够使路由器动态的学习到在其他路由器上直连的网络。当邻居无效或者不可达时,路由器也能够及时的发现。这种机制是通过定期发送的Hello包来实现的(这种Hello包占用很小的带宽)。只要路由器能收到邻居发送的Hello包,那么就认为这个邻居是可用的,这两个路由器之间就可以交换路由信息。
可靠的传输协议RTP负责将EIGRP包传递给所有的邻居,它可以发送多播包和单播包。为了提高效率,只有特定的EIGRP包才会使用可靠传输。在一个像Ethernet这样的多播网络中,没有必要单独给每个邻居发送可靠的Hello包。由于这些原因,EIGRP发送的Hello包中会包含一个指示:接收到Hello包的路由不需要对这个包进行回应。其他类型的包,比如路由更新包,则会要求进行回复。当没有收到回应包时,EIGRP会继续发送多播包,这样会提高在多种线路速度网络中,加快收敛。
弥散更新有限状态引擎负责将从路由器所有邻居哪里收集来的信息进行路由计算的任务。DUAL使用距离信息来选择高效没有环路的路径,并且会选择要插入基于可行继任者(feasible successor)的路由表的路由信息(路由表中的是successor,是feasible successor 中的优胜者,具有最好的度量)。feasible successor是到达目的地具有最小花费而且不会产生环路的路径的下一跳路由器。当邻居的度量改变或者网络拓扑发生改变的时候,DUAL会测试可行继任者,如果找到了一个,DUAL就使用这个路由,从而避免了重新计算路由。如果没有可行继任者存在,那么就重新计算路由,这也也会重新产生一个继任者(successor)。虽然重新计算不会是很大的运算,但是毕竟对收敛时间会有影响,因此应该尽量避免不必要的计算。
协议独立模块分别为某个网络层的协议进行服务。比如IP-EIGRP模块,负责传送和接收使用IP协议封装的数据包,IP-EIGRP模块也负责解析EIGRP包并且为DUAL的计算提供信息。IP-EIGRP模块会要求DUAL进行路由的选择,并将选择结果存到路由表中,该模块也负责将从其他IP路由协议中学到的路由进行再发布。

2008年12月28日星期日

RIP 路由更新包的格式

一、RIPv1路由更新包的格式

command:占一个字节,用于标记这是一个请求或是一个回应数据包。请求数据包会告诉路由器发送部分或全部的路由表;回应数据包标明这是一个周期性的路由更新包或是一个路由更新请求的回应。回应数据包中含有路由表中的条目(部分或全部)。复合RIP(Multiple RIP)包被用于从大型路由表中提取信息
version nubmer:占一个字节,用于确定RIP协议的版本,可以用来区分潜在的可能不相容的版本
zero:占两个字节,这个部分没有被RFC1058 RIP使用,只是为RIP的后续开发预留,默认填充0
address-family identifier(AFI):占两个字节,用于标识使用的地址类型,RIP被设计用于可以承载多种不同协议的路由信息。每一个条目有一个地址类型标识,来区分不同的地址类型,IP地址的AFI为2
IP address:占四个字节,确定目的IP地址
metric:到达目的IP地址的度量


二、RIPv2路由更新包格式
command:占一个字节,与RIPv1相比没有改变。主要用于分辨是请求还是回应
version:用于确定RIP的版本,这里值为2
unused:值设为0

address-family identifier(AFI):用于标识地址的类型。与RIPv1相比,如果消息中第一个表项的AFI为0xFFFF,那么这个表项的其余部分包含的是认证信息,目前这个认证只能是简单的密码认证。(即,每次路由更新时都要进行密码验证,消息中的第一个包是用来密码验证的)
route tag:用于区分路由是通过RIP学习到的还是通过其他的路由协议学习到的
IP address:确定该条目的IP地址
subnet mask:包含该条目的子网掩码,如果置0,则标明该条目没有子网掩码
metric:标识到达目的地需要几跳,即到达目的地址的度量值

RIP简介

一、背景
RIP协议是路由协议中存在时间最长的协议之一,RIP使用距离向量来比较得出到达目的地址的最佳路径,现在的开放标准协议RIP(有时也被叫做IP-RIP)是通过两个文档定义的:RFC1058和STD56。后来随着网络的增大,IETF意识到以前的RIP已经不能适应新的情况,于是发布了RFC1388和RFC1723描述了RIPv2来适应新的需求。RIPv2每次路由更新能够携带更多的信息,而且可以携带子网掩码,还可以使用简单的认证来保证网络安全。

二、RIP路由更新
RIP周期性的发送路由更新或者当网络拓扑改变时发送更新(几种路由协议都可以在网络拓扑发生改变时发送更新,只是计算最佳路由的方法不一样,一种类是根据距离和方向,一种是根据链路的状态)。当一个路由器接收到包含某一条目的改变的更新包时,它就会更新自己的路由表进而影响新的路由。路径的度量值是按1递增的,通过下一跳来显示发送者要发送的数据应该通向的下一个点。RIP路由只管理到达某一目的地的最佳路径信息(即包含最小度量的路径的信息)。
当一个路由更新了它的路由表以后,它会立刻通知网络上的路由器:网络发生了改变,这个更新是独立于一般的周期性的RIP路由更新(即,在路由发生改变后,会立刻发送路由改变的更新,而不是等待周期性的更新)。

三、RIP路由度量
RIP使用单一的路由度量(跳数)来计算源与目的网络之间的距离,每经过一跳,跳数会增加1。当一个路由器接收到一个到达某目的地址的路由更新条目(当这是一个新的路由表项,或者是旧的,但是发生了改变的路由表项)的时候,路由器会将路由更新信息中显示的计量值加1,然后加入到自己的路由表中。路由更新发送者的IP地址被当作下一跳(原文是:The IP address of the sender is used as the next hop)(被当做要到达目的路由,下一跳所要到达的地方。因为路由更新的内容是:我知道到达某个目的地址的路径,经过我就可以,以后有到达哪里的数据包就把包发给我;与发送数据包向区别,路由更新是从目的地址所在的路由开始发送路由更新,而发送数据报则是从源地址所在的路由器,向目的地址所在的路由器发送。)

四、RIP维持其稳定性的功能
RIP使用最大跳数来防止路由环路的产生,最大跳数为15,大于等于16的跳计数则被认为是网络不可达。这也限定是使用RIP路由协议的网络的规模(路由中毒)。
此外,RIP也包含一些在其他路由协议中也具有的维持稳定性的功能,比如说水平分割(split horizon)、保持关闭(holddown)等一些方法来防止环路、路由频繁变化(翻动)以及一些不正确的路由传播等情况的发生,从而保持网络的稳定性。

五、RIP计时器
RIP使用数目众多的计时器来控制RIP协议的工作。包括:一个路由更新计时器,路由失效计时器和一个路由擦除计时器。路由更新计时器为周期性的路由更新计时。默认设置为30秒(当每次计时器被重新设置时,会在30秒后面附加一小段随机时间,这样做主要是为了防止所有路由器在同一时间进行路由更新,从而造成网络拥塞)。每个路由表项有一个路由失效计时器,当路由失效计时器到期时,该条路由会被标记为不可用,但是会继续留在路由表中,直到路由擦除计时器到期才会将该条目从路由表中删除。

Linux基本命令

一、文件操作命令
ls 显示当前目录的文件列表
ls -al 显示当前目录的文件列表的详细信息,包括隐藏文件
cd dir 进入目录dir
cd 切换到用户的默认目录(主目录)
pwd 显示当前目录
mkdir dir 创建目录dir
rm file 删除file文件
rm -r dir 删除dir目录
rm -f file 强制删除file文件
rm -fr dir 强制删除dir目录,特别注意,慎用!!!
cp file1 file2 将file1复制为file2
cp -r dir1 dir2 将目录dir1复制到dir2,如果dir2不存在,就创建dir2
mv file1 file2 重命名file1,或者将file1移动为file2,如果file2是一个目录,那么就把file1移动到file2这个目录中。
ln -s file link 创建一个file文件的链接
touch file 产生或更新文件file
cat > file 将标准输出写入到file文件中
more file 显示文件内容,分屏
head file 显示文件的前10行
tail file 显示文件的最后10行
tail -f file 当文件增长时,显示文件的后10行和增长的内容

二、进程管理
ps 显示目前处于激活状态的在运行的进程
top 显示所有在运行的进程
kill pid 杀死进程号为pid的进程
kill all proc 杀死所有叫proc的进程,慎用!!!!
bg 列出所有被停止的或者在后台的进程,也可以用这个命令来恢复停止的进程(使用job号来恢复)
fg 将最新的job放到前台执行
fg n 将job号为n的进程放到前台执行

三、文件权限
chmod octal file 用于修改文件的权限,三个数字分别代表创建者、创建者所在的组以及其他人。

四、系统信息
date 显示当前日期和时间
cal 显示当月的日历
uptime 显示运行时间,运行了多久
w 显示谁在线
whoami 显示当前用户以什么用户登录
finger user 显示用户名为user的用户信息
uname -a 显示内核的信息
cat /proc/cpuinfo 显示CPU的信息
cat /proc/meminfo 显示内存的信息
man command 显示命令command的帮助信息
df 显示磁盘的利用情况
du 显示目录空间的使用情况
free 显示内存和置换空间的使用情况
whereis app 显示应用程序app的二进制文件或者源文件或者MAN页的位置信息
which app 显示应用程序app的目录信息

五、压缩
tar cf file.tar files 创建一个叫做file.tar的磁带归档,里面包含文件files(Tape ARchive 磁带归档 tar )
tar xf file.tar 将文件从file.tar中释放出来
tar czf file.tar.gz files 创建一个采用Gzip压缩方式的磁带归档
tar xzf file.tar.gz 使用Gzip释放该压缩文件中的文件
tar cjf file.tar.bz2 files 创建一个采用Bzip2压缩方式的磁带归档
tar xjf file.tar.gz2 使用Bzip2释放该压缩文件中的文件
gzip file 使用Gzip方式对文件file进行压缩,产生的压缩包名字为file.gz
gzip -d file.gz 将压缩包file.gz解压缩为文件file

六、网络
ifconfig 配置IP地址
ip route show 显示路由信息
route add 添加路由
ping host ping主机名为host的主机,并显示结果
whois domain 取得域domain的whois信息
dig domain 取得域domain的DNS信息
dig -x host 反向查询host的IP地址
wget file 下载文件file
wget -c file 继续一个停止了的下载

七、程序安装
从源文件安装:
1、首先要将得到的压缩包进行解压缩:tar xvzf package.tar.gz
2、进入packet目录:cd packet
3、运行configure文件:./configure
4、从源文件中创建可运行的二进制程序:make
5、安装创建好的二进制程序:make install (这里需要root权限)
6、清除安装过程中产生的不必要的文件:make mess
卸载时:make uninstall

dpkg -i pkg.deb 安装文件包pkg.deb,Debian系列的系统适用
dpkg -r package 删除一个安装过的文件包
rpm -Uvh pkg.rpm 安装文件包pkg.rpm,红帽系列的系统适用
rpm -e package 删除一个安装过的文件包

solaris常用命令(2)

一、翻译和查找
tr set1 sert2 将set1转换为set2(eg:echo "h" tr h j,将h转换为j,这个命令的输出结果为j)
sed 一个文本管理工具
grep pattern filename 寻找文件中包含pattern的行
grep -v pattern filename 寻找文件中不包含pattern的行
grep -i pattern filename 寻找文件中包含pattern的行,但是不区分大小写
find path condition 寻找路径以下所有符合条件的文件(包含路径下面的文件的子文件)
find path -inum n 用于寻找硬链接,例如寻找所有inode号为0的文件。
注:inode用于标记文件以及文件的其他一些属性,比如文件大小,拥有人一类的信息。文件系统中有唯一的inode号用于标识每个inode。我们也可以用inum对文件进行操作,可以使用ls -il 来查找文件的inum,在第一列显示的就是inum。
who 显示用户
who am i 显示真实的用户ID
id 显示有效的用户名&UID和组成员
look word 在/usr/dict/words中寻找word

二、网络
telnet hostname [port] 远程连接某个主机
ftp hostname 使用FTP协议连接某个主机
ssh hostname [port] 使用SSH连接某个主机
ifconfig 配置IP地址
route add 添加路由

三、进程以及进程控制
ps 显示主机中正在运行的进程
prstat 显示一直占用CPU的进程(iterating 反复)
command & 在后台运行command
jobs 显示jobs列表,即用jobs号显示进程
fg [%n] 恢复在前台被挂起的进程,n是进程的job号
bg [%n] 恢复在后台的被挂起的进程,n是job号
stop %n 挂起后台进程,n是job号
kill %n 杀掉job号为n的进程
kill n 杀掉进程号为n的进程
kill -9 n 终止进程号为n的进程,一般用在kill n 不能起作用的情况
sleep n 休眠n秒

2008年12月27日星期六

solaris常用命令(1)

一、Shell命令
passwd 修改密码
logout 结束虚拟会话

二、文件层次(File Hierarchy)
cd dir1 进入目录dir1
ls 列出当前目录中的文件
ls -l 列出当前目录中文件的详细信息
mkdir dir1 创建dir1目录
rmdir dir1 删除目录dir1
cp f1 f2 将f1复制为f2
mv f1 [f2...] dir1 将f1 f2等文件移动到dir1
mv dir1 dir2 将dir1重命名为dir2
rm filename 删除filename或移动filename
ln file1 name 产生一个叫name的file1的硬链接
ln -s file1 name 产生一个叫name的file1的软链接
pwd 当前目录的路径(print wroking directory)

三、获取帮助
man name 查看命令name的帮助手册
man -k subject 查看帮助手册中与subject相关的内容
man -s# subject 查看帮助手册的#分类中与subject相关的内容,#为分类号
man -s# Intro 查看帮助手册的#分类的简要介绍

四、文件类型和列表
file filename 对文件进行分类
strings filename 显示文件中的任何ASCII码字符串
cat filename 将文件内容输出到标准输出
more filename 将文件内容分屏显示
head filename 显示文件的头10行
head -n filename 显示文件的头n行
tail filename 显示文件的最后10行
tail -n filename 显示文件的最后n行
tail -f filename 重复地显示文件的最后10行(recursively)
cut 从文本中摘录文字或一段区域
wc filename 计算文件中的行数、词数或者字母数
diff f1 f2 寻找两个文件的不同处
diff3 f1 f2 f3 寻找三个文件的不同处
sort filename 根据文件名的首字母排序
uniq 报告或者过滤重复的行

五、重定向
STDIN 标准输入,一般是指从键盘的输入
STDOUT 标准输出,一般是指在屏幕上输出的内容
STDERR 标准错误输出,一般也是在屏幕上输出。(显示出错信息)
comm > file 将comm的标准输出,输出到file中。
comm 2> file 将来自comm的错误输出,输入到file中
comm >> file 将comm的标准输出,附件到file的末尾。(前面的命令,重复执行的话,会将先前的输出覆盖掉)
comm1 comm2 将comm1的输出,作为comm2的输入
mkfifo name 产生一个叫name的管道
mknod name p 产生一个叫name的管道

六、文件安全
chmod mode filename 修改文件的安全设置
chown user [:group] filename 修改文件的拥有人[或者拥有者所属组]
chgrp group filename 修改文件所属的组
umask 设置的你创建的所有文件或目录的默认安全设置(用反掩码的形式,可以理解为反掩码)

solaris安装软件包

我们可以通过CD,通过网络或者从网上下载软件来进行安装,我们也可以将常用的软件拷贝到/var/spool/pkg目录下面。

一、从CD-ROM安装软件
1、首先要挂载CD-ROM
2、用命令添加或者安装一个GNU压缩包
#pkgadd -d /cdrom/cdrom0/Solaris_9/Product SUNWgtar
其中:
-d /cdrom/cdrom0/Solaris_9/Product是文件的目录
SUNWgtar是文件名

二、将一个文件包添加到spool目录下并且安装
1、将文件包复制到/var/spool/pkg目录下
#pkgadd -d /cdrom/cdrom0/Solaris_9/Product -s /var/spool/pkg SUNWgtar
其中:
-d /cdrom/cdrom0/Solaris_9/Product是文件包的目录
-s /var/spool/pkg是我们用来存储文件的目录
SUNWgtar是文件名
2、安装文件
#pkgadd SUNWgtar

三、安装下载的文件
1、如果文件是.bz2格式的压缩文件,我们首先应该用bunzip2命令来解压缩。
#bunzip2 Packagename.bz2
注:使用这个命令的话,解压缩完成后,原始的Packagename.bz2文件会被自动删除。可以使用bunzip2 -k来解压缩,这样会保留原始文件。
2、安装文件
#pkgadd -d Packagename

管理账号的solaris命令

useradd 添加一个用户账号
usermod 修改一个用户账号
userdel 删除一个用户账号
useradd -D 设置一个默认设置的账号
password -r files -l 注销一个用户账号
password -r files 修改用户密码
groupadd 添加一个组
groupmod 修改在一个组中的用户
groupdel 删除一个组

一、useradd
useradd [ -c comment ] [ -d dir ] [ -e expire ] [ -f inactive ] [ -g group ] [ -G group [, group...]] [ -m [ -k skel_dir ]] [ -u uid [ -o]] [ -s shell ] login

useradd -D [ -b base_dir ] [ -e expire ] [ -f inactive ] [ -g group ]

二、usermod
usermod [ -u uid [ -o ] ] [ -g group ] [ -G group [ , group ... ] ] [ -d dir [ -m ] ] [ -s shell ] [ -c comment ] [ -l new_logname ] [ -f inactive ] [ -e expire ] login

三、userdel
userdel [ -r ] login

四、password
passwd [ name ]
passwd -r files [ -egh ] [ name ]
passwd -r files -s [ -a ]
passwd -r files -s [ name ]
passwd -r files [ -d -l ] [ -f ] [ -n min ] [ -w warn ] [ -x max ] name
-r files 表示在/etc文件夹下面存储账号信息,也可以用-r nis等。name是登陆用的账号
-l为锁定账号

五、groupadd
/usr/sbin/groupadd [-g gid [-o]] group
group为组名,gid为组ID。

六、groupmod
/usr/bin/groupmod [ -g gid [ -o ]] [ -n name ] group


七、groupdel
/usr/sbin/groupdel group


注:login为用户登陆时的字符串,即用户名。

solaris管理用户和用户组-文件

根据策略的不同,用户账号和组的信息可以存储在本地的/etc文件夹下面,也可以使用名字服务或目录服务进行存储:
1、NIS+名字服务以表格的形式存储
2、NIS名字服务以映射的形式存储
3、LDAP目录服务信息被存储在数据库索引文件中
用户账号的大部分信息存储在passwd文件中,密码信息以如下形式存储:
1、使用NIS或NIS+时,存储在passwd文件中
2、使用/etc文件夹存储时,密码存储在/etc/shadow文件中
3、使用LDAP时,存储在人员容器(people container)中
使用NIS+或LDAP时,可以设置密码老化,但是NIS不可以。
当使用NIS、NIS+和/etc文件夹时,组信息存储在group文件中。对LDAP而言,存储在组容器(group container)中。

一、passwd文件
文件中的各项用冒号隔开,如下:
username:password:uid:gid:comment:home-directory:login-shell
例如:
kryten:x:101:100:kryten series 4000 mechanoid:/extport/kryten:/bin/csh
注:comment注释
默认的passwd文件中,包含了为一些标准的守护设立的文件,例如printing、network administration或者端口监控等。

二、shadow文件
文件中的各项用冒号隔开,如下:
username:password:lastchg:min:max:warn:inactive:expire
例如:
rimmer:86kg/mnt/dgu:8882:0::5:20:8978
其中:
password密码,不过是加密过的
lastchg主要记录上次修改的时间,数值为从1970年1月1日到上次修改之间的天数
min修改密码的最小时间间隔,设置为0或大于0的话,激活密码老化。
max密码可用的最大天数间隔
warn在密码过期前多少天,对用户进行警告
inactive该用户可以与系统进行交互的时间,即在多久之后该用户自动锁定
expire一个绝对时间,当到达时用户无法继续登录。从1970年1月1日开始算。。。

三、group文件
文件中的各项依然是用分号分隔,如下:
group-name:group-password:gid:user-list
例如:
bin::2:root,boot,daemon
用户列表中,各个用户之间用逗号分隔。
默认的group文件包含许多诸如打印、网络管理以及电子邮件一类的系统服务的组。许多组在passwd文件中也有对应的条目。

2008年12月26日星期五

solaris管理用户和用户组-基本概念

一、用户名
User name 即login name 用于使用户登录进他们自己的系统。

二、用户标识号
User ID Number,每个用户名对应一个User ID Number,用户标识号是系统用来识别每个用户所拥有的文件以及目录等。
UID可以取0-2147483647之间的任意整数。
其中:
0-99 用于root、daemon、bin、sys等一类的系统用账户。
100-2147483647 用于普通用途的用户
60001和65534 用于匿名用户
60002 用于不被信任的用户
注:一般情况下,root的UID为0,daemon的UID为1。尽量不要使用某个删除了的账号的UID,因为系统可能对该UID有一些限制。所以尽量使用一个新的UID,以免造成不必要的麻烦。
此外:大于60000的UID和GID不能使用系统的某些功能,因此在建立UID时避免使用太大的UID。

三、UNIX Groups
组是分享文件以及系统资源的用户的集合。每一个组必须有一个组名、一个组ID以及一些属于改组的用户。组ID是给系统用的。。。
组有两类,一种是primary group ;一种是secondary group。每个用户必须属于一个主组,此外最多可以属于15个备用组。主组是系统用来标识用户创建的文件的。
用户可以使用groups命令来查看属于的组,每个用户只能属于一个主组。用户可以通过使用newgrp来改变自己的主组(即从自己的备用组中,选一个变成自己的主组。)
当创建用户的时候,必须为用户选择一个主组,或者使用默认的主组staff(group 10),主组必须是事先存在的。如果主组不存在,我们可以用GID来标识这个用户所属的组(GID是一直存在的,但如果没创建组的话,组名是不存在的),我们不将用户名添加到主组,因为这样会使组员列表太大,我们使用UID;在添加到备用组时,只能把一个用户添加到组名和GID都存在组中,不能像主组那样只用GID。

四、用户密码
我们可以为用户指定一个密码,或者指定用户在初次登录时设置密码。
在/etc/default/passwd文件中的PASSLENGTH用于指定密码的长度,默认为6。
密码的前六位中,至少要有两个字母,并且至少要有个一个数字或特殊字符。
通过配置/etc/policy.conf可以将密码的最大长度增加到大于八个字符。

五、用户目录
用户目录是分配给用户的,用来存储用户私有文件等的一个分区。用户目录的大小取决于用户所创建的文件等的大小。
用户目录可以设置在本地系统中也可以设置到一个远程服务器上,为了统一,通常将用户目录创建为/export/home/username。在一些大型站点,可能需要将用户目录存储到服务器上。我们可能会使用/export/home/homeN这样的命名方式,为各个用户的目录进行备份。
不管用户的目录放在那里,用户通常通过/home/username这个挂载点来访问他们的目录。
为了便于在网络上使用用户目录,在引用时都要使用$HOME而不是像/export/home/username这样的引用(绝对路径与相对路径的使用)。

六、名字服务
如果管理的站点很大,我们应该考虑使用LDAP、NIS一类的名字或目录服务,这样可以使我们集中管理大量的用户名,而不用将这个用户资料存储到各个系统的/etc文件下。此外,当用户在站点之间迁移时,也不用在每个系统上更新变更,而且使用名字服务也便于我们统一管理。(类比IP地址与域名的使用)。

七、用户工作环境
在有了一个用户目录后,用户还需要一个他们能够使用各种资源进行工作的环境。当用户登录进系统时,初始化文件(initialization files)会决定用户使用的工作环境,而这些文件是由用户的启动脚本来定义的,例如C、Korn和Bourne脚本。
一个很好的管理策略是可以让用户自己定义初始化文件,例如在用户目录中放置的login、.cshrc、.profile等。
注意:不要使用诸如/etc/profile或者/etc/.login一类的系统初始化文件来管理一个用户工作环境,因为这些目录是在系统本地的,不便于集中管理。

solaris常用网络文件的配置

一、 /etc/hostname.interface

Interface是网卡的型号,有hme、ce等。hme是百兆网卡,ce为千兆网卡等等。后面跟一个数字,第一个百兆网卡为hme0,第二个为hme1等等。
文件的内容是这块网卡的名字,如Sunrise、Sunny。
#more /etc/hostname.le0
Sunrise
# more /etc/hostname.hme0
Sunny

二、/etc/hosts文件
系统名与IP地址的映射
与/etc/hostname.interface 协同工作,配置本机网卡地址
# more /etc/hosts
127.0.0.1 localhost loghost
172.16.255.1 Sunrise
172.18.255.1 Sunny
注:系统名不是机器名,机器名是唯一的,要更改机器名,用命令:hostname。
有了/etc/hostname.interface和/etc/hosts两个文件,系统就知道如何配置网卡了,如第一个百兆网卡的名字是Sunny,其对应的地址是172.18.255.1。

三、/etc/netmasks文件

将网络的IP地址与网络地址联系一起,用于划分子网
如果是标准网段,则不需要配置
要配一个地址:172.16.255.1掩码为:255.255.255.0,则在/etc/netmasks文件中写:172.16.255.0 255.255.255.0

四、ifconfig命令

检测网络端口状态
#ifconfig -a
配置网络端口地址
#ifconfig le0 172.16.255.1 netmask 255.255.255.0
配置网络端口状态
#ifconfig le0 up/down
配置网络端口是否可用
#ifconfig le0 plumb/unplumb

五、/etc/services文件

网络服务协议的端口号
网络协议的服务类型
#cat /etc/inet/services
ftp-data 20/tcp
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail
sunrpc 111/udp rpcbind
sunrpc 111/tcp rpcbind


每个TCP/IP应用层服务如(FTP、Telnet)都在传输层有一个端口号。/etc/services文件包含了每个能识别出的服务协议所对应的静态端口号。应用应使用唯一分配的端口号向传输提供者和远程对等实体标识自己。
文件中每一项都由服务名及其相关的端口号、传输协议提供者组成。有些服务可以在TCP和UDP上都可以运行。这时,此服务被列出两次。

六、/etc/inetd.conf文件

# cat /etc/inet/inetd.conf
ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd
telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd
login stream tcp nowait root /usr/sbin/in.rlogind in.rlogind
talk dgram udp wait root /usr/sbin/in.talkd in.talkd
...

solaris并不是让每种服务的守护进程都在自己的端口上等待请求,而是将代表各个服务守护进程等待请求的任务交给一个叫inetd的服务进程。这样就可以大大减少对系统资源的占用。只有当超级服务进程发现一个服务请求时,它才调用该服务的守护进程。/etc/inetd.conf配置文件允许inetd在启动时决定自己将代表哪些服务等待服务请求。如果一种服务的守护进程没有包含在inetd.conf文件中,那么当inetd接收到该服务的请求时,会把该请求丢弃。
文件的字段:
service_name 这是文件/etc/services中列出的服务的标志符。
socket_type 用来标志使用的数据传输服务的类型。
proto 标识传输协议的名字。是UPD和TCP
flags 可以被设为"等待"和"非等待"。如果被设为"等待" 状态,inetd在恢复监听端口上的其他请求时,必须等待服务协议释放将其连接到网络的连接。"非等待"可以使inetd立即监听其他的请求。大多数TCP协议的采用"非等待"方式,而UDP采用"等待"方式(等待情况下,inetd必须等服务协议释放连接,然后才能监听端口;而非等待情况下,inetd只负责进行服务请求的转接)。
user 表示调用服务的用户名。
server_pathname 表示inetd在响应相关服务请求时必须调用的 服务程序的完整路径名。
Args 该域包括服务的程序所使用的命令行参数。即以程序名开 始,然后跟随用户设置的参数。

七、/etc/defaulrouter文件

配置缺省网关
防止不必要的路由进程
适用于只有一个路由器通向其它网段
单一路由占用较小的路由表资源
该文件保存了缺省路由得信息。如果系统安装时没有该文件,用户可以自己创建的。文件内容是缺省路由的地址。
#cat /etc/defaultrouter
172.16.255.254

八、/etc/gateways文件

路由表文件
net gateway metric
dest. net 目标网段
router 下一跳路由器的地址
count 跳数

九、 /etc/resolv.conf文件

记录DNS服务器的地址和域名
关键字:
domainname nameserver
# more /etc/resolv.conf
nameserver 172.16.255.3
domainname sunrise.com.cn

十、/etc/nsswitch.conf文件

记录主机名的搜索顺序等信息

solaris系统网络配置

我们用ifconfig命令来配置solaris的网络接口。下面是配置一个新安装的网卡的步骤(在root权限下):
一、挂载网卡
#ifconfig hme0 plumb
我们可以使用ifconfig -a 命令来查看该设备是不是正确的被挂载并且可以配置IP地址。如果出现下面的显示,则证明已经正确的被挂载:
hem0:flags=842mtu 1500
inet 0.0.0.0 netmask 0
ether 3:22:11:6d:2e:1f

二、配置IP地址并且激活网卡状态
#ifconfig hme0 192.9.0.106 netmask 255.255.255.0 up
此时我们再使用ifconfig -a 应该可以看到以下内容:
hem0:flags=842mtu 1500
inet 192.168.0.106 netmask 255.255.255.0 broadcast 192.168.0.255
ether 3:22:11:6d:2e:1f

我们也可以在文件/etc/netmasks 中为IP地址定义掩码。
如果没有接口被配置,我们使用ifconfig -a的话只能看到127.0.0.1这个本地回环测试接口。

三、配置虚拟接口
通过虚拟接口的配置,我们可以在一个物理接口上配置多个IP地址。虚拟接口的命名为:hme0:1、hme0:2依次类推。
配置虚拟接口:
#ifconfig hme0:1 plumb
#ifconfig hme0:1 193.168.0.2 netmask 255.255.255.0 up

此时我们再使用ifconfig -a命令就可以看到下面的输出:
hem0:flags=842mtu 1500
inet 192.168.0.106 netmask 255.255.255.0 broadcast 192.168.0.255
ether 3:22:11:6d:2e:1f
hem0:flags=842mtu 1500
inet 193.168.0.2 netmask 255.255.255.0 broadcast 193.168.0.255
ether 3:22:11:6d:2e:1f


四、IP-forwarding
IP forwarding命令可以让我们将对某个端口或某个URL的请求重定向到一个特定的IP地址。
如果系统在启动时检测到多个网卡,则ip forwarding会自动激活。
我们可以在文件:/etc/rc2.d/S69inet中看到相关的信息。
我们可以通过下面的命令来取消ip forwarding:
#ndd -set /dev/ip ip-forwarding 0

五、路由配置
在配置了网卡和IP地址后,我们还需要配置路由。
我们可以为特定的地址配置路由,例如:
#route add -net 10.0.0.0 -netmask 255.0.0.0 172.40.30.1 1
如果目的IP地址没有用上面示例中那样被配置,那么系统会使用默认路由。
我们在/etc/defaultrouter文件中定义默认路由。这个文件在启动时会被/etc/rc2.d/S69inet文件读取,并将默认路由添加到路由表中。
当然也可以使用routeadd命令来添加默认路由,但是一旦系统重启,该添加的默认路由就是丢失,为了永久的修改默认路由,我们应该在/etc/defaultrouter中添加一个条目。
#route add default 205.100.255.2 1
#route change default 205.100.255.2 1

2008年12月25日星期四

一些电商英文缩写的解释(转载)

原文地址:http://blog.xiaoxiao.com.cn/2008/12/25/some-english-abbreviation-about-ecommerce.html
  当你听到“PRD”、“MRD”、“ASP”、“ROI”等这些名词而手足措时,下面一些解释(均来自于互联网,版权未知)应该可以让你了解具体的含义,以后争取不断更新这个总结,有关于电商类的,也有关于产品类的。

MRD

  Market Requirements Document,市场需求文档。获得老大的认同后,产品进入实施,需要先出MRD,具体来说要有更细致的市场与竞争对手分析,通过哪些功能来实现商业目的,功能/非功能需求分哪几块,功能的优先级等等。实际工作中,这个阶段PD可能的产出物有Mind Manager的思维图,Excel的Feature List等。

  市场需求文档(MRD)重点放在为一个被提议的新产品或者现有产品的改进定义市场需求。与BRD指出商业问题和解决这些问题的解决方案不同,MRD更深入提议解决方案的细节。它包括一些或者所有这些细节:

a. 解决商业问题所需要的特色
b. 市场竞争分析
c. 功能和非功能需求
d. 特色/需求的优先级
e. 用例

  MRD通常是由拥有产品经理,产品营销经理或者行业分析师头衔的人撰写的。MRD通常是一份连续的5-25页Word文档,或者正如之后描述那样在一些机构中甚至更长。

BRD

  Business Requirements Document,商业需求文档。这是产品声明周期中最早的问的文档,再早就应该是脑中的构思了,其内容涉及市场分析,销售策略,盈利预测等,通常是和老大们过的ppt,所以也就比较短小精炼,没有产品细节。

  商业需求文档重点放在定义项目的商业需求。BRD要能说出客户碰到的一个或多个商业问题,并且通过公司的产品能够解决这些问题。接着建议一个方案 —— 通常是新产品或者现有产品的改进来解决这些问题。BRD也可能包括一个高级的商业案例,例如收益预测,市场竞争分析和销售/营销策略。BRD通常是由拥有产品经理,产品营销经理或者行业分析师头衔的人撰写的。在小公司,可能由高级主管或者甚至创始人撰写。BRD通常是一份连续的1-3页Word文档,或者不超过10页的Powerpoint文档。

PRD

  Product Requirements Document,产品需求文档。进步一细化,这部分是PD写得最多的内容,也就是传统意义上的需求分析,我们这里主要指UC(use case)文档。主要内容有,功能使用的具体描述(每个UC一般有用例简述、行为者、前置条件、后置条件、UI描述、流程/子流程/分支流程,等几大块),Visio做的功能点业务流程,界面的说明,demo等。Demo方面,可能用dreamweaver、ps甚至画图板简单画一下,有时候也会有UI/UE支持,出高保真的demo,开发将来可以直接用的那种。

  产品需求文档(PRD)重点放在为一个被提议的新产品或者现有产品的改进定义市场需求。与MRD侧重于从市场需要角度看需求的不同,PRD侧重于从产品本身角度看待需求。通常在特点和功能需求上更深入细节,并也可能包括屏幕截图和用户界面流程。在那些MRD不包括具体需求和用例的机构中,PRD就包含这些具体内容。PRD通常是由拥有产品经理,行业分析师或者产品分析师头衔的人撰写的。PRD通常是一份连续的20-50页Word文档,或者针对复杂产品甚至更长。

  提醒:一些机构将这里描述的MRD和PRD合并成一个文档,并称最后的文档为MRD。在这种情况下,MRD包括本段描述的内容,也包括上一段描述PRD的内容,并且可能超过50页。

FSD

  Functional Specifications Document,功能详细说明。有一点像“概要设计”,这步就开始往开发衔接了,产品UI、业务逻辑的细节都要确定,细化文档并保持更新。相应的,有很多内容,比如表结构设计,要由项目经理来编写了。

  功能规格文档(FSD)把焦点集中在实现,定义产品功能需求的全部细节。FSD可能通过一张张的截屏和一条条功能点来定义产品规格。这是一份可以直接让工程师创建产品的文档。与MRD和PRD侧重于以市场需要和产品角度看需求不同,FSD把重点放在了以表格形式定义产品细节,再让工程师实现这些细节。FSD也可能包括完整的屏幕截图和UI设计细节。FSD通常是由拥有产品分析师,工程领导或者项目经理头衔的人撰写的 – 作者通常属于工程部门。通常一个连续几十页的Word或类似文档。

PSD

  Product Specifications Document,产品规格文档(PSD)是一个较不流行的缩写,但是在有这样一个文档的机构中,它大体和上面描述的功能规格文档(FSD)相同。

SRS

  Software Requirements Specification,软件需求文档,软件需求文档(SRS)是另一较不流行的缩写,在创建SRS的机构中,它在内容和细节上和上面描述的PRD或FSD有些想像。

ROI

  Return On Investment,投资回报。原本是会计学概念,早期用来判定投资工厂或购买铁路相关的成本是否合理,现被广泛使用在各个领域。ROI的结果通常用百分比来表示,即投入产出比,简单来说就是企业所投入资金的回报程度。ROI计算公式为:收益/投资×100%或者ROI=(成本降低+收入增长)/总成本。相关的术语:资金回收期,IRR(内部收益率)等等。

  投资报酬率,计算公式为:ROI = (1 + g) * n / PER。

  其中,g代表企业未来n 年平均获利成长率。PER表示本益比。若个别企业的ROI大于同业平均投资报酬率,则该企业值得投资。

CPA

   Cost Per Action,次行动的费用,即根据每个访问者对网络广告所采取的行动收费的定价模式。对于用户行动有特别的定义,包括形成一次交易、获得一个注册用户、或者对网络广告的一次点击等。

ASP

  Average Selling Price,公司某一类型产品或全部产品的平均销售价格(或称出厂价格)。公式为:销售额÷出货量。

  平均售价是分析预测制造业公司销售收入和毛利率的重要指标,是投资者需要密切跟踪和计算的经营数据。在销量不变的情况下,平均售价提高可以增加销售收入和毛利率,在销量下降的情况下,如果公司能提高平均售价可以降低销售收入和毛利率下滑的程度,当然,最好的情况是价升量增,销量和售价都出现增长。公司产品平均售价提升主要来自于产品结构的改善,如彩电生产企业近年来产品平均售价增长就是因为高价格的平板电视销售比重显著提升。所以,把握制造业公司业绩增长的两项最重要的因素就是产品销量和平均售价的变化。

2008年12月23日星期二

UNIX系统中TCP/IP协议的配置

一、系统的初始化问题
任何一个主流UNIX都有一个"祖父"进程,称为"init"。在UNIX系统中,init进程创建其他所有进程,其中包括用户shell及网络进程。

1、init进程及/etc/inittab文件
Unix系统由两部分组成:文件及进程。

在Unix系统中,所有其他进程都由init进程并发创建。最终,所有的进程都可以通过它们的父进程追溯到init进程。


上图说明了init进程与其他进程的链接关系。

因为初始化进程是系统启动过程的最后一步,所以在此之前所有的文件系统都已经经过了检测,并且磁盘都已被加载,init进程决定进入哪一种用户模式(单用户或多用户)。某些Unix系统使用/etc/inittab文件作为init进程的配置脚本。
注:对于大多数主流UNIX,第三运行级启动的网络进程包括internet守护进程(inted)、NFS、DNS及Sendmail。可以通过查看inittab文件来确认。
二、rc系列脚本
为了创建并运行子进程, init进程将运行一系列启动脚本,我们称之为rc系列脚本。这些脚本启动所需要的网络进程,从而Unix系统不再是一个"孤立的系统"。
eg: /etc/rc.d/rc3 可以通过查看对应的文件来查看每个运行级所启动的服务。rc3文件中列出了在第三运行级时所启动的服务。我们可以通过S##或K##来判断那些守护进程被该文件启动(K表示杀死,S表示启动)。其后的序列号表示某个特定的启动或停止顺序。同时,这些脚本还标明了当守护进程初启时,采用那些属性。
需要注意的是:启动脚本和停止脚本并不是总成对出现的。
注:并不是所有Unix系统的启动脚本都存放在相同的目录下,某些系统可能将它们放在/etc、/etc/rc或其他系统指定的位置。

三、配置文件
为了使网络正常工作,用户必须注意配置文件。在Unix系统中,有一些非常重要的配置文件需要特别注意:
/etc/inetd.conf
/etc/services
/etc/protocols
/etc/hosts.equiv
/etc/resolv.conf
/etc/exports
其他Unix系统可能会包含别的配置文件,这因操作系统的不同而不同。
1、在/etc/protocols文件中定义网络协议
为了定义运行在Unix系统上的网络协议,用户必须在/etc/protocols文件中给出说明。大部分的协议都可以很好地工作在Unix系统中,并且用户不需要手工添加所有的协议,系统将在启动时为用户完成上述工作。
2、在/etc/hosts文件中标识主机
对于一些本地系统,用户可能需要定义一些主机,以便用户在不需要域名服务器(DNS)提供服务的情况下,而仅靠主机名就可以找到主机,为了做到这一点,需要定义一个/etc/hosts文件。
最基本的/etc/hosts文件如下:
127.0.0.1 localhost loopback
以上定义了localhost或loopback,它们是用户当前使用的主机的缺省主机名。127.0.0.1为localhost的缺省IP地址。
增加其他主机的语法格式如下:
IP地址 主机名 别名
在增加其他主机时,需要列出主机的IP地址,对应于IP地址的主机名及任意用户需要的别名。下面是一个/etc/hosts的示例:
# a sample /etc/hosts file
127.0.0.1 localhost loopback
1.2.3.4 wednesday.addams.com mymachine
1.2.3.4 pugsley.addams.com yourmachine
在上例中,如果某个用户远程登陆到本地主机,它将登录到pugsley.addams.com。通过使用别名,用户不需要敲入完整的域名就可以访问目的主机。(类似DNS,用于本机的域名解析。)
注意:在/etc/hosts文件中,如果主机也在本地网中,填写主机名时,不需要写完整的域名,仅填写机器名即可。
3、/etc/services文件
为了确定用户的UNIX系统提供那种类型的TCP/IP服务,必须在系统中设置适当的服务。完成上述工作有两种方法:修改/etc/services文件或修改inetd配置文件。
/etc/services文件为网络服务如FTP、Telnet、时间服务器、名字服务器、SecureShell(安全Shell)及finger等指定特定的端口。
大部分服务所对应的端口都是众所周知的特定端口,如FTP服务器端口为23,Telnet服务的端口为21等。这些服务所对应的端口号均小于1024。
/etc/services文件中也包含一些不太通用的网络服务。/etc/services文件的语法格式如下:
网络服务 端口号/tcp或udp
eg: telnet 23/tcp
首先用户必须定义网络服务类型(如Telnet、echo、SMTP),然后指定端口号,最后指明该服务使用TCP还是UDP。
4、/etc/inetd.conf文件
在UNIX系统中,许多网络服务由Internet超级守护进程inetd启动。为了使inetd守护进程知道该启动那些服务,它需要读取配置文件inetd.conf,该文件通常放在/etc目录下。
注意:因为inetd可以启动其他网络服务,但是在任何时候都使用inetd并不是一个好主意,因为它将降低整个网络服务的性能。例如:Secure Shell因为其加密解密过程而丧失了一部分性能。
对大多数网络守护进程,inetd守护进程可以用来"看护"其他网络守护进程,因为inetd守护进程可以监听所有的socket,而其余网络守护进程只能监听特定的端口。(socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。)
这样可防止大多的守护进程等待一个绑定socket,同时也可以避免socket随机进入。从某种意义上说,inetd可看做公司的安全守卫,仅让那些拜访特定人的来访者进入。这使得维护系统安全更方便,同时,可以更有效地控制流量(。带宽)
即:inetd是监视一些网络请求的守护进程,其根据网络请求来调用相应的服务进程来处理连接请求。它可以为多种服务 管理连接,当inetd接到连接时,它能够确定连接所需的程序,启动相应的进程,并把socket交给它(服务socket会作为程序的标准输入、输出和错误输出描述符)。使用inetd来运行那些负载不重的服务有助于减低系统负载,因为它不需要为每个服务都启动独立的服务程序(inetd可以直接处理某些简单的服务。)。
因为inetd不知道用户需要运行那些网络服务,所以必须在/etc/inetd.conf文件中定义。/etc/inetd.conf中网络服务的格式如下:
网络服务名 socket类型 协议 标识 用户 服务路径名 参数
例如,对于FTP守护进程,其格式如下
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
ftp服务守护进程使用的socket类型为stream,以根用户权限运行,服务器路径为/usr/sbin/tcpd,参数为int.tcpd -l -a。注意,ftp服务并未指明标识,如果某种服务不指明标识,该选项将被跳过。
注意:在缺省情况下,大多数网络守护进程都用#注解。这表示除非用户已非常确信自己的修改,否则不要运行这些服务。这主要是基于安全方面的考虑,因为某些服务容易使用户获取额外的访问权限或导致系统崩溃。
注意:守护进程通常以nobody或root用户权限运行。当使用root权限运行时,要非常小心、
如果用户对/etc/inetd.conf文件做了任何修改,如注解了某个守护进程或增加了某个守护进程,都需要发送一个HUP信号重启inetd守护进程,如:
#killall -HUP inetd
注意:inetd是通过rc系统启动的。inet_enable选项默认设为NO,但可以在安装系统时,由用户根据需要通过sysinstall来打开。
inetd.conf则是inetd的配置文件。inetd.conf告诉inetd监听那些网络端口,为每个端口启动那个服务。在任何的网络环境中使用linux系统,第一件要做的事就是了解一下服务器到底要提供那些服务,不需要的服务应该被禁止掉,最好卸载掉。查看/etc/inetd.conf文件,了解一下inetd提供那些服务。用加上注释的方法(在一行的开头加上#号),禁止任何不需要的服务,在给inetd进程发一个SIGHUP信号。
5、在/etc/networks文件中设置网络
仅有少数系统使用/etc/networks文件标识系统所在的网络。这将有助于用户组织其系统连入的网络。
6、DNS客户与/etc/resolv.conf
为了获得DNS名字解析功能,用户需要正确设置DNS客户端,要完成这一工作,需要修改/etc/resolv.conf文件。
在/etc/resolv.conf文件中,用户需要定义域名、域名服务器(主控域名服务器或主控域名服务器和辅助域名服务器)及其他必须的指令。
一般情况下,这将允许用户的系统实现域名查询,如将www.example.com转换成IP地址1.2.3.4
domain example.com
nameserver 1.2.3.1
nameserver 1.2.3.254
search
注意:即使/etc/resolv.conf指明了DNS,用户仍需要检查设置是否正确。用户可以使用nslookup、dig或其他工具检验设置是否正确。

TCP/IP通信会话的逻辑顺序与任务

按完全的最小分割,这些事件包含如下任务:
1、数据必须从它的应用向下传给一个通信进程(称为一个协议protocol)。
2、通信协议必须为通过许多类型网络的传输准备应用数据。这通常意味着数据必须被分割为更多可管理的块。
3、分段的数据必须包装在一个数据结构中,以便于通过网络传送到某个指定设备。这意味这数据必须被包装成某种形式,而这种形式所包含的信息应该可以使得任何网络上的计算机设备可以识别出数据包来自何方、要到哪里去。该结构可能是一个帧、一个数据包或者一个单元,这与使用何种协议有关。
4、为传输需要,这些帧和数据包必须被转换成物理位流。这些位流可以被转换成光纤网(如FDDI)上的光脉冲或者通过电子网络传输的电子信号状态(如以太网,或者其他任何以电信号通过金属导线传输的网络。)
到达目的地或者接收端机器后,这个过程被反过来。

另外,在通信会话过程中,还需要其他功能,这些功能使得源端和目的端的计算机通过协同努力可以保证数据完全到达,这些功能包括:
1、将传输数据流规范化,以保证接收机器和网络不会拥塞。
2、利用某种算法检查接收到的数据,以保证数据在传输过程中没有损坏。
3、对没有到达的数据包或者到达时损坏的数据包进行协调重发。
4、最后,数据的接收方必须将各段数据重新组合成接收端应用程序认识的格式。

从接收端应用的角度来看,接收到的数据应与发送方应用发出的数据应该完全一样。换句话说,两个应用所表现出来的应该是两者之间直接通信,这就是所谓的逻辑链接(logical adjacency)。

网关、网桥、路由器以及自治系统

一、网关是能执行路由功能和协议转换的机器。
二、网桥是连接两个或多个使用相同协议网络的机器
三、路由器是在网络中转发报文的机器

网关是唯一进行协议转换的设备。此外网关也可以进行文件格式的转换和处理加密解密。

网桥可以简单的认为是两个或多个网络之间的链路。网桥处理从一个LAN到另一个LAN的数据报路由,网桥能同时处理许多LAN,但它们必须使用相同的协议。

路由器的功能是把报文转发到其他目的地。当有可选路由至目的地时,一些路由器能执行协议转换,就像网关一样。路由器和网关的区别是路由器对LAN而言是内部的,而网关指向LAN的外部。

自治系统是指其连接的局域网结构对互联网的其他部分不可见。通常有一个指向这个局域网的网关并且所有到那个网络的流量都要经过网关。这样把局域网内部结构对互联网络的其他部分隐藏起来,既简化了数据报处理也增强了安全性。

数据链路层与传输层在保证数据完整性方面的区别

这里指的是OSI模型来讲:

数据链路层
(更加详细的参看:http://www.ee.zsu.edu.cn/network/newpage37.htm)
在发送方,数据链路层负责将指令、数据等包装到帧中,帧是数据链路层生成的结构,它包含足够的信息,确保数据可以安全地通过本地局域网到达目的地。
成功发送意味着数据帧要完整无缺地到达目的地。也就是说,帧中必须包含一种机制用于保证在传送过程中内容的完整性。
为确保数据传送完整安全到达,必须要做到两点:
1、在每个帧完整无缺地被目标节点收到时,源节点必须收到一个响应。
2、在目标节点发出收到帧的响应之前,必须验证帧内容的完整性。
有很多情况可以导致帧的发送不能到达目标或者在传输过程中被破坏或不能使用。数据链路层有责任检测并修正所有这些错误。
数据链路层的另一个职责是重新组织从物理层收到的数据比特流。不过,如果帧的结构和内容都被发出,数据链路层并不重建一个帧。相反,数据链路层会缓存到达的比特流直到这些比特流构成一个完整的帧。

传输层
传输层提供类似数据链路层所提供的服务,传输层的职责也是保证数据在端端之间完整传输,不过与数据链路层不同,传输层的功能是在本地LAN网段之上提供这种功能,它可以检测到路由器丢弃的包,然后自动产生一个重新传送请求。
传输层的另一项重要功能就是将乱序收到的数据包重新排序,数据包乱序有很多原因。例如:这些包可能通过网络的路径不同,或者有些在传输过程中被破坏,不过什么情况,传输层应该可以识别出最初的包顺序,并且在将这些包的内容传递给会话层之前要将它们恢复成发送时的顺序。

注:数据链路层只是用来检测、纠正从物理层生成帧的过程中产生的错误,是用于本地LAN的点到点传输的错误纠正(detect and possibly correct errors that may occur in the Physical Layer。注:是possibly,无法保证全部纠正错误)。
传输层是用来检测从网络层开始,产生的各种错误的纠正。是用于端到端(发送端到接收端)的传输的错误纠正。

可以理解为:两者均为检测下层可能出现的错误,这个均为自动进行并要求重传。与由于上层协议要求重传 要相区别(例如:QQ传输文件失败,重新传送,不是由于OSI模型自动进行保证文件传输正确的功能)

三种网关协议简介

一、网关-网关协议(GGP,Gate-to-Gate Protocol)
核心网关为了正确和高效地路由报文需要知道Internet其他部分发生的情况,包括路由信息和子网特性。当一个网关处理重负载而使速度特别慢,并且这个网关是访问子网的唯一途径时,通常使用这种类型的信息,从而使网络中的其他网关能裁剪交通流量以减轻网关的负载。
GGP主要用于交换路由信息。
注:不要与路由信息(包括地址、拓扑和路由延迟细节)和做出路由决定的算法相混淆。
路由算法在网关内通常是固定的且不被GGP改变。
核心网关之间通过发送GGP信息,并等待应答来通信,之后如果收到含特定信息的应答就更新路由表。
GGP被称为向量-距离协议。要想有效的工作,网关必须含有互联网络上有关所有网关的完整信息。否则,计算到一个目的地的有效路由将是不可能的。因为这个原因,所有的核心网关维护一张Internet上所有核心网关的列表,这是一个相当小的表,网关能容易地对其进行处理。

二、外部网关协议(EGP,Exterior Gateway Protocol)
外部网关协议用于在非核心的相邻网关之间传输信息。非核心网关包含互联网络上所有与其直接相邻的网关的路由信息及其所连机器的信息,但是它们不包含Internet上其他网关的信息。
对绝大多数EGP而言,只限制维护其服务的局域网或广域网信息。这样可以防止过多的路由信息在局域网或广域网之间传输。EGP强制在非核心网关之间交流路由信息。
由于核心网关使用GGP,非核心网关使用EGP,而两者都应用在Internet上,所以必须有某些方法使二者彼此之间能够通信。Internet使任何自治(非核心)网关给其他系统发送“可达”信息,这些信息至少要送到一个核心网关。如果有一个更大的自治网络,常常认为有一个网关来处理这些可达信息(?注:如果自治系统太大,使用个网关来汇总和处理这些内部的路由信息?)。
和GGP一样,EGP使用一个查询过程来让网关清楚它的相邻网关并不断地与其相邻者交换路由和状态信息。EGP是状态驱动的协议,意思是说它依赖于一个反映网关状态的状态表和一组当状态表项发生变化时必须执行的一组操作。

三、内部网关协议(IGP,Interior Gateway Protocol)
内部网关协议用于在一个域中交换路由选择信息,如路由选择协议RIP和开放最短路径优先OSPF。OSPF是与OSI的IS-IS协议十分相似的内部路由选择协议。在区域的边界,边界路由器将一个域与其他域相连。这些路由器使用外部路由选择协议EGP(Exterior Routing Protocol)交换路由选择信息。外部网关协议EGP为位于自治域边界的两个相邻周边路由器提供一种交换消息和信息的方法。对于EGP的替代品BGP(Border Gateway Protocol),它被用于提供改进性能,如指定路由选择策略的能力。

WEB服务器基本术语

1、WEB服务器
WEB服务器是在互联网上使用HTTP协议提供文档信息(WEB页面)的计算机。术语WEB服务器可以指计算机(web服务器软件、硬件的结合)也可以单指WEB服务器软件包本身(例如ApacheWEB服务器)。
2、浏览器
浏览器是WEB的客户端程序。常见的浏览器包括lynx、Netscape Communicator、Opera、及IE等。
3、URL
URL是用于指定WEB页面的全局地址。
4、服务器ROOT
服务器ROOT是计算机上WEB服务器所在的位置。在缺省情况下,所有日志、配置文件及守护进程及其他支持文档均位于服务器root下。
例如:/usr/local/apache或c:\netscape\suitspot\https-my server
5、文档ROOT
文档ROOT是WEB服务器上WEB页面存放的位置。该目录可以使用URL访问到
6、端口
TCP/IP服务使用端口建立连接及传输信息。在缺省情况下,HTTP使用80端口,它也可以被配置成使用0~65535的任何一个端口。其他常用的端口有telnet (23)、 SMTP电子邮件(25)及FTP(21)。
7、虚拟服务器
大多数WEB服务器都有能力表示多个域。这一功能通过虚拟主机实现。在虚拟服务器中,WEB服务器可服务多个站点。通常,虚拟WEB服务器用于Internet服务提供商ISP,以防止为每一个用于建立单独的WEB服务器。
8、安全套接字层SSL
SSL由网景公司开发,该协议可使数据在WEB安全传输。SSL使用公钥加密技术加密需要传递的数据。
9、MIME--多用途互联网邮件扩充
MIME使WEB服务器与浏览器可交换多种格式的文件,除了HTML或ASCII码格式外,还可交换微软WORD文档和图像等数据。
主流的WEB服务器:Apache、Microsoft IIS、Netscape Enterprise

URL统一资源定位符

URL(uniform resource locator):统一资源定位符,是用于完整描述internet上网页和其他资源的地址的一种标识方法。
一个URL示例:http://www.w3c.org/portocols/index.html
Protocol://(协议)

Servername.domain(服务器名.域)

Directory/(目录)

File(文件)


在上述示例中: 协议是HTTP ;全称域命名为www.w3c.org ;目录名为protocols ;文件为index.html


注:大多数WEB服务器都配置为可自动提供缺省主页。在大多数情况下,缺省主页为index.html,其他可能的缺省主页为:home.html、default.html、home.htm及index.htm。使用这一属性,URL:http://www.w3c.org/protocols/将返回protocols目录下的index.html文件。
其他常见的URL为:

ftp://服务器域名/目录/文件 通过匿名FTP请求文档

ftp://用户名@服务器域名/目录/文件 使用用户名访问FTP请求文档

telnet://服务器域名 使用telnet访问服务器

news://新闻服务器域名/新闻组 请求访问usenet新闻组


用户也可以使用URL向服务器传递数据。典型应用为向服务器方函数传递参数。

例如: http://服务器域名/目录/文件/file.html?用户名=Jamison&uid=300 此URL向file.html主页传递一对参数:用户名Jamison和UID 300。

有时,需要在URL中包含特殊字符如空隔或斜杠(/)。此时,这些特殊字符必须重新编码以避免服务器出现问题。编码过程(有时指16进制编码)包括将特殊字符用其16进制的数取代。

例如:假设用户需要在URL中列出用户全名: http://服务器域名/目录/file.html?用户名=Neal%20Jamison 在示例中,Neal和Jamison间的空隔由与空隔等价的16进制的数取代。在URL中传递的信息通常使用通用网关接口(CGI)程序处理。


主流的WEB服务器:Apache、 IIS(internet information server)


http协议使Web服务器和浏览器可以通过Web交换数据。它是一种请求/响应协议,即服务器等待并响应客户方请求。HTTP不维护与客户方的连接,它使用可靠的TCP连接,通常采用TCP80端口。客户/服务器传输过程可以分为四个基本步骤:

1、浏览器与服务器建立连接

2、浏览器向服务器请求文档

3、服务器响应浏览器请求

4、断开连接

HTTP是一种无状态协议,它不维护连接的状态信息。


HTTP/1.1 为了使服务器与客户端(web brower)通信称为可能,HTTP协议建立了一种由请求和响应消息组成的WEB语言。

1、客户请求

客户请求包含以下信息:请求方法、请求头、请求数据


请求方法是用于特定URL或WEB页面的程序。下面是可用的请求方法: 方法 描述

GET 请求指定的文档

HEAD 仅请求文档头

POST 请求服务器接收指定文档作为可执行的信息

PUT 用从客户端传送的数据取代指定文档中的内容

DELETE 请求服务器删除指定页面

OPTIONS 允许客户端查看服务器的性能

TRACE 用于测试---允许客户端查看消息回收过程


头信息是可选项,它用于向服务器提供客户端的其他信息。
头 描述

Accept 客户端接收的数据类型

Authorzation 认证消息,包括用户名和口令

User-Agent 客户方软件类型

Referer 用户获取的WEB页面 如果客户采用某种方法获取数据(如post),数据就放在头(head)之后;否则客户机等待从服务器传来的响应。


2、服务器响应

服务器响应包括以下关键部分: 状态码 响应头 响应数据
HTTP定义了多组返回给浏览器的状态码

响应头向客户方提供服务器和(或)请求文档的信息。所有的头均以空行结束。

方法 描述

Server WEB服务器信息

Date 当前日期/时间

Last Modified 请求文档最近修改时间

Expires 请求文档过期时间

Content-length 数据长度(字节)

Content-type 数据MIME类型

WWW-authenticate 用于通知客户方需要的认证信息(如用户名,口令等) 如果有客户方请求的数据,数据放在响应头之后,否则服务器断开连接。
MIME与WEB

多用途互联网邮件扩充(Multipurpose internet Email Extension MIME),它是一种多用途网际邮件扩充协议,最早应用于电子邮件,但后来也应用到浏览器。服务器会将它们发送的多媒体数据的类型告诉浏览器,而通知手段就是说明该多媒体数据的MIME类型,从而让浏览器知道接收到的信息那些是MP3文件,哪些是Shockwave文件等等,服务器将MIME标志符放入传送的数据中来告诉浏览器使用那种插件读取相关文件。

当WEB浏览器与服务器建立连接时,它们协商MIME类型。浏览器向服务器发送它所能接收的MIME类型,这部分信息位于请求头标中。服务器通知客户方它发送的数据包含的MIME类型。
MIME类型 描述

text/plain 纯ASCII码文本

text/html HTML文本

image/gif GIF图像

image/jpeg JPEG图像

application/msword Microsoft Word video/mpeg MPEG视频 audio/wave Wave音频

application/x-tar Tar压缩数据

例如:text是指是文本文件,plain是指文本的格式。image指明是图像,gif指明图像的格式。application是指是应用程序,msword指明是word。video指明是视频,mpeg指明视频的格式。audio指明是音频文件,wave指明格式。

解决TCP/IP协议中遇到的问题的常用方法

常用应用程序:主要为UNIX下的命令,WINDOWS下可能不同
ifconfig----提供网卡的基本配置信息。通常用来检查错误的IP地址、不正确的子网掩码或错误的广播地址。
arp----以太网地址/IP地址的转换工具。通常用来检测局域网IP地址配置错误。
netstat----提供多种信息。通常用于显示网络接口、网络SOCKET及网络路由表的统计信息。
ping----检测远程主机是否可达。该工具也可用来显示报文丢失的统计信息及报文传送时间。
nslookup----提供DNS名字服务的信息。
dig----提供名字服务的信息,与nslookup类似。
ripquery----提供系统接收或发送RIP更新报文的信息。它是gated软件包的一部分。但用户不需要运行gated守护进程,当系统运行RIP时,就可以使用此程序。
traceroute----提供从本地系统到远程节点的路由信息。每一跳的信息均被显示。
etherfind----分析主机与网络交换的报文信息。ehterfind实际上是TCP/IP协议分析工具,它可以检查报文的内容,包括报头。在SUNOS操作系统中,该程序称为tcpdump

解决网络访问故障
没有响应或不能连接等错误消息表明网络故障出现在协议的底层。如果测试指出此类网络故障则集中测试路由与网络接口。使用ifconfig、netstat及arp命令测试网络层访问。
网络不可达消息说明路由有问题。如果仅本地主机的路由表出错,则很容易发现并解决。
首先使用netstat -nr 及grep 命令检查路由表中是否有到达目的主机的有效路由。 如果netstat命令说明有正确的路由或有缺省路由,则说明问题不在路由表。 此时使用traceroute,跟踪到达目的地的整个路径。如果netstat没有返回路由信息,说明本地路由表出错,根据系统采用静态路由还是动态路由决定解决方法:
1、如果系统采用静态路由,使用route add命令添加所需路由,大多数系统的静态路由基本上都使用缺省路由。因此,丢失的可能是缺省路由。使系统每次启动时添加所需的路由是彻底解决问题的好方法。
2、如果使用动态路由,确定路由程序(gated)是否正确运行,如果没有运行正确的路由守护进程,重新启动它并指出正确的路径。路径可以使用户发现导致守护进程异常终止的原因。 如果路由守护进程正确运行,并且本地系统通过RIP路由信息协议接收路由更新数据,则使用ripquery检查由RIP提供者接收的路由更新报文。
如果本地路由表及RIP提供者都正确,则问题有可能出现在距本地机较远的主机上。远程路由问题可导致"无响应"及"网络不可达"错误。
但是"网络不可达"并不说明一定是路由问题,也有可能是本地主机与远程主机间的其他错误导致网络不可达。可以用traceroute命令帮助用户定位这些错误。(如果traceroute接收到端口不可达消息,则表明它到达目的主机,但是端口不可达)
注:ICMP在不同类型网关上具体实现时的BUG及通过网络的报文路径的随机性可能会导致一些奇怪的输出。因此用户不需要自己看traceroute的输出。
traceroute输出中重要的部分为:报文是否到达目的主机?如果没有,在哪儿停止? 当用户应用返回"unknown host"消息,说明存在名字服务器问题。名字服务器故障通常使用nslookup或dig等工具诊断。(nslookup有三个重要的特性可以帮助我们解决远程域名服务器故障:使用NS查询定位远程域的主服务器;使用ANY查询获取远程主机的所有记录;使用nslookup的ls及view命令浏览远程域的所有项。)
当解决远程服务器故障时,直接使用NS查询主服务服务器,不要查询非主服务器。如果问题有间歇性,查询所有的主域名服务器并比较所得结果。对于同一查询返回不同的结果会引起间歇性名字服务器问题。ANY查询返回主机的所有记录。仅知道简单信息就可以解决许多问题。
例如:如果查询返回MX记录但没有A记录,则很容易理解用户为什么不能Telent到远程主机。大多数主机可用mail访问,但不支持其他服务。许多用户不了解这一点,而使用不恰当的方式访问远程主机。
如果管理员不能获得用户提供的主机名的任何信息,很有可能主机名出错。使用nslookup的ls命令显示远程域的问题件,并将它重定向到某个文件中。然后使用nslookup的view命令浏览该文件,寻找与用户提供的主机名类似的域名。许多问题都是由错误的主机名引起的。 dig是与nslookup类似的工具。dig通常为单行命令,而nslookup为交互会话应用。

一、解决网络接口层问题
这一层的问题可分为以下四类:
1、物理连接问题
2、DHCP客户端没有分配IP地址。因为可能返回给用户大量的消息所以比较明显。在UNIX中可以使用ifconfig确信获得了IP地址。
3、ARP问题。如果地址解析协议工作不正常,用户就不能将IP地址解析为MAC地址。ARP应用,可以帮助用户检查地址解析是否正确。 4、网络中IP地址冲突

二、解决网络层问题
网络层负责报文的路由。因此,在网络层,仔细检查IP地址、子网掩码及缺省网关是否正确。除了配置外,问题还可能出在路由表或本地主机远程节点间的路由器上。
IP地址配置问题 :

1、IP地址错误:使用不正确的地址,客户端不能与其他任何TCP/IP主机通信,因为网络地址不正确,客户方发送的任何报文都将路由到错误的地址。
2、子网掩码错误:子网掩码只决定出去的报文是否需要路由,因此子网掩码配置错误的主机仍可以接收消息,然而当它发送返回消息时,消息将只在本子网内,而不会通过路由器到达其他子网。(因为它错误的认为一些报文的目的地址仍然在同一子网内,因此不会通过路由器)
3、默认网关错误:如果默认网关配置错误,则它只可与本地主机通信,而不能连接远程节点;主机可以接收来自子网以外的报文,因为默认网关只影响报文的发送。然而,当主机试图响应远程节点的报文时,由于网关配置错误,将不能正确发送响应报文,导致网络连接错误。

三、解决TCP和UDP问题
传输层很少出现问题。如果用户可以使用PING命令,说明传输层工作正确。在这一层唯一可能发现的问题与TCP窗口尺寸有关,该问题将导致通信速度缓慢(打开注册表查找WindowsSize项,记住其值,并将该项删除,系统将自动重设窗口尺寸。)。
1、socket问题 如果用户正确配置了IP地址及协议,并且到远程节点的路由正确,仍需要在正确的端口运行需要的服务。如果用户确认端口正确,可以使用netstat命令检查端口接收的数据。
2、Service文件 在%systemroot%\system32\drivers\etc目录下的service文件中列出了大部分服务使用的端口号,以供系统初始时使用。如果某个服务有问题,用户应首先检查此文件中服务是否使用正确的端口,如果服务未列出,用户必须手工加入,使系统知道使用那个端口提供此项服务。

四、解决应用层问题
在应用层中,用户可能会碰到两类问题:NETBIOS问题和名字解析问题。其中最常见的是名字解析问题,它影响Socket应用及NETBIOS应用。
名字解析问题 若用户正确配置TCP/IP并且协议安装正确且可正常工作,但连接中仍有问题则很可能是名字解析问题。当用于想要连接网络资源----如映射某服务器的网络驱动器----它们通常使用域名而不是IP地址。当使用域名建立连接时,必须首先将域名解析为IP地址。 检查名字解析的IP地址是否正确,如果名字不能解析为IP地址或解析不正确,用户就不能使用名字建立连接,除非使用IP地址。
用于连接的主机名有两类:分配给NETBIOS主机的NETBIOS名字,如WINDOWS系统;分配给非NETBIOS主机的名字,如UNIX服务器。 总的来说,当使用MICROSOFT网络连接网络共享、文件打印或应用服务器时,使用NETBIOS名;当执行TCP/IP应用,如使用FTP或WEB浏览器时,使用主机名。
注:NETBIOS network basic input/output system :主要用于数十台计算机的小型局域网。NETBIOS协议是一种在局域网上的程序可以使用的应用程序编程接口API。为程序提供了请求低级服务的同一的命令集,作用是为了给局域网提供网络以及其他特殊功能,几乎所有的局域网都是在NETBIOS协议的基础上工作的。 系统可以利用WINS服务、广播LMHOST文件等多种模式将NETBIOS名解析为相应的IP地址,实现信息通讯,所以在据网内部使用NETBIOS协议可以方便的地实现消息通信及资源的共享。微软的客户机/服务器网络系统都是基于NETBIOS的。

SNMP协议

SNMP并不是单个协议,它由三个协议组成,这三个协议用于网络管理。组成SNMP协议的三个协议及功能如下所示:

1、管理信息库MIB:包含状态信息的数据库 management information base

2、管理信息的结构与标识SMI:定义MIB的入口 structure of management information

3、简单网络管理协议SNMP:受管理的对象与服务器间的通信方法

受SNMP管理的设备可与位于网络某处的SNMP服务器通信。设备与服务器有两种通信方式:投票与中断。

投票是由服务器按照一定的时间间隔询问被管理设备的当前状态或统计信息。

在基于中断的SNMP系统中,当受管理的设备出现异常时向服务器发送消息。

通常,我们将投票与中断结合使用以弥补各自的缺陷,我们称这种组合方式为直接自陷投票(trap-directed polling),服务器定时统计或在管理员指导下统计设备信息。同时,每个受管理的设备在某种条件发生时产生中断消息,中断发生的条件比纯粹的中断驱动系统要严格。

例如,如果用户使用中断SNMP,路由器负载每增长10%都向服务器报告。如果使用直接自陷投票SNMP,用户可以从投票中获得路由器的负载,并且当路由器负载增加很快时,将向服务器发送中断消息。当服务器接收到此中断消息后,如果需要的话,可进一步查询设备的详细信息。

SNMP服务器软件包可与SNMP代理通信、传输或请求一系列不同类型的信息。通常由服务器向代理请求统计信息,包括处理的包数量、设备的状态与设备类型相关的特殊信息等(如modem失效连接的次数)及处理器的负载。 服务器也可以向代理发送指令以修改数据库(MIB)中的项。服务器也可以设置代理方的阀值或条件,当代理超过阀值或满足条件时向服务器发送中断信息,如CPU负载达到90%。 虽然服务器与代理间的通信内容趋向于抽象,但通信本身以非常直接简单的方式完成。如:服务器发送"当前负载",代理返回"75%"。代理从不向服务器发送数据,除非产生中断消息或收到服务器请求,这意味着在没有进行投票或产生中断消息时,系统可能存在潜伏的问题。


一、MIB management information base

每个受管理的SNMP设备均维护包含统计信息及其他数据的数据库,我们称之为MIB。MIB的每一项包含一种信息:对象类型、语法、访问字段及状态字段等。MIB的项通常由协议规定,并且严格遵守抽象语法规则1(ASN.1)的格式。

1、对象类型为项的名称,通常为简单的名字。

2、语法是一个值字段,通常为字符串或整型,并不是所有的MIB的项均包含值字段。

3、访问字段用于定义项的访问权限,通常有以下四类:可读、可读/写、只可写或不可访问

4、状态字段包含指示值,标明MIB项是否为命令、可选或作废。命令表示受管理的设备必须执行该项;可选表示受管理的设备可以选择执行该项;作废表示不执行。

目前执行的MIB有两种,MIB-1和MIB-2,两者结构不同。


二、使用SNMP

SNMP被用于非同步客户/服务器应用,受管理的设备或SNMP服务器软件都可产生消息,根据需要等待响应。这些消息或响应由具体的网络软件(如IP)打包并处理。

SNMP在TCP/IP中使用UDP协议作为其消息传输协议。UDP端口161可接收除自陷外的所有消息,自陷消息由162号端口接收来自服务器的消息。代理通过UDP161号端口接收来自服务器的消息。

SNMPv1支持以下五种服务器与代理间的操作:

get----用于获取MIB项的值

get-next----用于遍历MIB项

get-response----get的响应

set----用于修改MIB的项

trap----用于设置中断条件

当发送请求时,SNMP项的某些字段为空,以便客户方填充并返回给服务器。这是一种在一个块内传送问题和答案的有效方法,避免了通过复杂的查询方法寻找与请求对应的结果。

例如:在get命令中,类型和值字段为空,客户方填充这两个字段后(除非请求失败,否则返回错误消息)将消息返回给服务器。

SNMPv2在v1的基础上增加了一些新的功能,对于服务器来说,最方便的命令是get-bulk操作,它使客户方在一条信息中发送大量MIB项的信息(v1则需要多条get-next操作才可完成相同功能)。此外,v2比v1有更强的安全性,可防止入侵者监视受管理的设备的状态。SNMPv2既支持加密也支持认证。因此,V2远比V1复杂,也没用V1应用广泛。

SNMP支持代理管理,即包含SNMP代理和MIB的设备可以与安装有SNMP代理软件的设备进行通信。基于代理的管理可以将设备的MIB放在客户方的内存中,通过连接远程机器对设备进行管理。

例如:通过代理管理打印机,将打印机的客户方SNMP软件及MIB放在代理工作站中,通过代理工作站对打印机进行管理。

基于代理的管理可以减轻负载过重的设备的工作量。

SNMP的不足:最主要的是UDP的可靠性,因为UDP是无连接机制。因此,不能对消息进行过滤,这有可能导致接收消息的软件负载过重。最后一点不足是SNMP从某种程度上说仍然使用投票方式,这将消耗大量的带宽。

网络管理的将来属于OSI网络管理标准:通用管理信息服务(CMIS)及通用管理信息协议(CMIP),它们建立在TCP/IP之上。IAB发布了基于TCP/IP的通用管理信息服务与协议CMOT作为TCP/IP及OSI管理的标准。 SNMP及CMOT都使用网络管理者与网络设备(如工作站、网桥、路由器等)交换信息。主管理工作站与不同的管理进程通信获取网络的状态信息。SNMP及CMOT的体系结构都将收集的信息以某种方式存储以便供其他协议读取。 SNMP管理者处理所有使用SNMP的设备间的通信和软件。支持软件提供用户接口,使网络管理员可观察整个系统的状态及单个设备的状态,并可监视特定的网络设备。


三、在UNIX和LINUX上安装SNMP

大多数UNIX系统本身包含客户和服务器软件。客户软件通过SNMPD守护进程执行,当在网络上使用SNMP时,客户方软件就始终执行。通常SNMPD守护进程在程序启动时运行。这主要决定于RC系列启动文件。当SNMP启动时,守护进程读取配置文件。对于大多数SNMP代理,SNMPD读取文件下:/etc/inet/snmpd.conf ;/etc/inet/snmpd.comm ;/etc/inet/snmpd.trap 文件所处的目录根据UNIX版本的不同而不同,用户需要检查文件系统以得到正确的位置。


snmpd.conf文件包含四个系统MIB对象。在大多数情况下,这些对象在安装时设置,但用户也可以修改对象的内容。在许多snmpd.conf文件中,用户需要填入用户及位置字段(它说明系统的用户及位置),但descr及objid字段不需作修改。snmpd.conf文件定义的变量及相应的MIB变量如下: descr----sysDescr

objid----sysObjectID

contact----sysContact (contact 联系 接触)

location----sysLocation (location 位置,区域,场所)


snmpd.comm(community)文件提供认证信息及可访问本地数据库的主机列表。远程主机访问本地SNMP数据的权限由snmpd.comm文件指定。snmpd.comm文件每一行包含三个字段:组织名称、远程主机的IP地址及组织的访问权限。权限可以是READ只读、WRITE可读写及NONE禁止访问三种形式,可读写表示可修改该MIB数据而不是文件系统。 eg:public 0.0.0.0 read


snmp.trap文件为当发生自陷时,需向哪些主机发送消息。snmpd.trap文件的示例如下: superduck 129.0.0.3 162 snmpd.trap文件的每一行包含三个字段:组织名称、IP地址及发送自陷消息的UDP端口。


四、SNMP命令

UNIX提供一组基于SNMP的命令,使网络管理员可获得MIB的信息或SNMP设备的信息。确切命令依赖于具体的实现,但大多数SNMP系统都支持下列命令:
命令 描述

getone 使用SNMP get命令获取变量的值

getnext 使用SNMP

getnext命令获取下一个变量的值

getid 获取sysDescr、sysObjectID及sysUpTime的值

getmany 获取一组MIB变量的值

snmpstat 获取SNMP数据结构

getroute 获取路由信息

setany 使用SNMP

set命令设置变量的值

大多数SNMP命令都需要参数指明设置或读取变量

HTTP状态代码及定义

Web服务器响应浏览器或其他客户程序的请求时,其应答一般由以下几个部分组成:一个状态行,几个应答头,一个空行,内容文档。下面是一个最简单的应答:

引用内容:
HTTP/1.1 200 OK
Content-Type: text/plain
Hello World

状态行包含HTTP版本、状态代码、与状态代码对应的简短说明信息。

在大多数情况下,除了Content-Type之外的所有应答头都是可选的。但Content-Type是必需的,它描述的是后面文档的MIME类型。虽然大多数应答都包含一个文档,但也有一些不包含,例如对HEAD请求的应答永远不会附带文档。有许多状态代码实际上用来标识一次失败的请求,这些应答也不包含文档(或只包含一个简短的错误信息说明)。

当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字代码。状态代码可以指明具体请求是否已成功,还可以揭示请求失败的确切原因。

常见的 HTTP 状态代码及其原因:

200 - 成功。 此状态代码表示 IIS 已成功处理请求。

304 - 未修改。 客户端请求的文档已在其缓存中,文档自缓存以来尚未被修改过。客户端使用文档的缓存副本,而不从服务器下载文档。

401.1 - 登录失败。 登录尝试不成功,可能因为用户名或密码无效。
401.3 - 由于 ACL 对资源的限制而未获得授权。 这表示存在 NTFS 权限问题。即使您对试图访问的文件具备相应的权限,也可能发生此错误。
403.1 - 执行访问被禁止。 下面是导致此错误信息的两个常见原因:
1、您没有足够的执行许可。例如,如果试图访问的 ASP 页所在的目录权限设为“无”,或者,试图执行的 CGI 脚本所在的目录权限为“只允许脚本”,将出现此错误信息。若要修改执行权限,请在 Microsoft 管理控制台 (MMC) 中右击目录,然后依次单击属性和目录选项卡,确保为试图访问的内容设置适当的执行权限。
2、您没有将试图执行的文件类型的脚本映射设置为识别所使用的谓词(例如,GET 或 POST)。若要验证这一点,请在 MMC 中右击目录,依次单击属性、目录选项卡和配置,然后验证相应文件类型的脚本映射是否设置为允许所使用的谓词。
403.2 - 读访问被禁止。验证是否已将 IIS 设置为允许对目录进行读访问。另外,如果您正在使用默认文件,请验证该文件是否存在。
403.3 - 写访问被禁止。 验证 IIS 权限和 NTFS 权限是否已设置以便向该目录授予写访问权。
403.4 - 要求 SSL。禁用要求安全通道选项,或使用 HTTPS 代替 HTTP 来访问该页面。
403.5 - 要求 SSL 128。禁用要求 128 位加密选项,或使用支持 128 位加密的浏览器以查看该页面。
403.6 - IP 地址被拒绝。您已把您的服务器配置为拒绝访问您目前的 IP 地址。
403.7 - 要求客户端证书。您已把您的服务器配置为要求客户端身份验证证书,但您未安装有效的客户端证书。
403.8 - 站点访问被拒绝。您已为您用来访问服务器的域设置了域名限制。
403.9 - 用户数过多。与该服务器连接的用户数量超过了您设置的连接限制。 注意:Microsoft Windows 2000 Professional 和 Microsoft Windows XP Professional 自动设置了在 IIS 上最多 10 个连接的限制。您无法更改此限制。
403.12 - 拒绝访问映射表。 您要访问的页面要求提供客户端证书,但映射到您的客户端证书的用户 ID 已被拒绝访问该文件。
404 - 未找到。 发生此错误的原因是您试图访问的文件已被移走或删除。如果在安装 URLScan 工具之后,试图访问带有有限扩展名的文件,也会发生此错误。这种情况下,该请求的日志文件项中将出现“Rejected by URLScan”的字样。

500 - 内部服务器错误。 很多服务器端的错误都可能导致该错误信息。事件查看器日志包含更详细的错误原因。此外,您可以禁用友好 HTTP 错误信息以便收到详细的错误说明。
500.12 - 应用程序正在重新启动。 这表示您在 IIS 重新启动应用程序的过程中试图加载 ASP 页。刷新页面后,此信息即会消失。如果刷新页面后,此信息再次出现,可能是防病毒软件正在扫描 Global.asa 文件。
500-100.ASP - ASP 错误。 如果试图加载的 ASP 页中含有错误代码,将出现此错误信息。若要获得更确切的错误信息,请禁用友好 HTTP 错误信息。默认情况下,只会在默认 Web 站点上启用此错误信息。
502 - 网关错误。 如果试图运行的 CGI 脚本不返回有效的 HTTP 标头集,将出现此错误信息。

为了增强32位地址空间使用效率所采用的方法

历史上,不同类IP地址之间的巨大差异已经浪费了大量的地址。举例来说:一个中等规模的公司需要300个IP地址。一个C类地址(254个地址)不够用。使用两个C类地址,提供的地址有富余,但这样一来,一个公司就有两个不同的域,增加了路由表的尺寸---每一个地址空间需要一个路由表项(即使它们属于同一个组织)。 另一种选择是,B类地址提供了所有需要的地址,而且在一个域内。但这样却浪费了65234个地址,当一个网络有多于254个主机时就提供一个B类地址,这样的情况太常见了,因此,B类地址比其他地址更容易耗尽。

为了解决上面出现的问题。采用了大量的IP扩充工作主要用于改进32位地址空间的使用效率,三个重要的扩充:

1、子网掩码 subnet mask

2、可变长子网掩码 VLSM

3、无类域间路由CIDR

这三个扩充用于解决不同的问题,是非常不同的机制。

子网掩码,无论是固定长度还是可变长度,用于在一个物理网络中划分成多个逻辑网络。(比如可以将一个B类地址划分成不同的子网分配给不同的公司使用,而不需要给每个公司分配一个B类地址。例如上面的例子。解决路由表项太大的问题可以用CIDR解决)

CIDR用于使路由器更有效地汇聚不同网络地址成单一的路由表项。

这两种机制不是互相排斥的,两者应该结合使用。

一、子网的出现
注:当同一个地区出现多隔网络时,例如有多个公司时,我们可以给每个公司分配一个某类的地址,但是这样IP的使用效率相当低下,会有很多浪费。而且路由表项也会扩大,因为每个网络都会需要自己的路由表项。

另一种解决方法是分层的组织这些网络,并在他们之间路由。从Internet的角度来看这些具有多个网络的地方可以被看做一个网络。可以给他们一个共享的IP地址范围(例如一个A类地址范围),然后为了区分不同的网络,再给他们分配自己唯一的子网号。(互联网是树状的,是一层一层延伸下去的,可以将任何一层再继续细分下去,可以将任何几层看成是一层。) 子网的划分将原来的两层模型(网络号、主机号)转变为现在的(网络号、子网号、主机号)

分子网的方法对IP地址结构有很大的扩充,但是它还受到一个基本的限制:整个网络只能有一个子网掩码。因此,当用户选择了一个子网掩码(也就意味着每个子网内的主机数确定了)之后,就不能支持不同尺寸的子网了。任何对更大尺寸子网的要求意味着必须改变整个网络的子网掩码。为了解决这个问题,我们采用了VLSM,每个子网可以采用不同的掩码,但他们必须有相同的网络前缀(即网络号必须相同) (采用VLSM可以更加适应不同企业的要求,分配也更加灵活和方便,减少了IP主机地址的浪费,对IP地址空间进行灵活的子网化) 子网化的网络只能采用单一的掩码,而VLSM可以采用不同的掩码。(理论上来说,子网中还可以继续划分子网的,从Internet的角度来看,是不会有任何改变的,是属于网络域内部路由的事情。是域内的事情。)

二、CIDR无类域间路由

CIDR可以用网络前缀来代替这些类。前缀可以是任意长度,这允许CIDR根据网络的大小分配网络地址空间,而不是在预定义大的网络空间中作裁剪。每一个CIDR网络地址和一个相关位的掩码一起广播,这个掩码识别了网络前缀的长度。

CIDR的特性:

1、消除地址分类

2、强化路由汇聚(CIDR使任何符合CIDR规范的路由器能更有效地汇聚路由信息。换句话说,路由表中的一个表项能够表示许多网络地址空间。这就大大减少了在任何互联网络中所需路由表的大小,使网络有更好的扩展性。不用为每一个网络建立一个路由表项)

3、超网化(超网化就是把一块连续的C类地址空间模拟成一个单一的更大一些的地址空间。如果得到足够多的连续C类地址,就能重新定义网络和主机识别域中位数的分配情况,模拟一个B类地址。)

华为路由器基本配置命令

一、系统视图下
display version 显示版本信息
display current-configuration 显示当前配置
display interfaces 显示当前接口信息
display ip route 显示路由信息

sysname huawei 更改主机名
super password huawei 设置口令

interface serial 0 进入接口视图

link-protocol hdlc 绑定HDLC

user-interface vty 0 4 进入用户界面视图模式

debugging hdlc all serial0 显示所有信息
debugging hdlc event serial0 调试事件信息
debugging hdlc packet serial0 显示包的信息

二、端口视图模式下
ip address 192.168.0.1 255.255.255.0 配置IP地址
undo shutdown 激活端口

三、用户界面视图模式下
authentication-mode password 设置认证模式为密码认证
set authentication-mode password simple huawei 设置认证密码
user privilege level 3 设置特权等级

四、静态路由配置
ip route-static {interface number next hop }[value] [reject blackhole]
其中:value为路由的优先级别,范围0-255;reject(reject拒绝,丢弃)指明为不可达路由;blackhole指明为黑洞路由。

五、RIP路由配置
rip 设置RIP路由,并进入路由视图模式下
network 10.0.0.0 设置交换路由网络
network all 设置与所有网络交换
summary 设置路由聚合

六、访问控制列表
acl [match-order configauto] 默认前者顺序匹配,并进入访问控制列表配置视图
rule [normalspecial] {permit deny } [source source-addr source-wildcard any]
eg:
acl 10 进入访问控制列表10配置视图
rule normal permit source 10.0.0.0 0.0.0.255

2008年12月22日星期一

华为交换机的配置文件管理

配置文件为一个文本文件,其格式如下:
以命令格式保存;为了节省空间,只保存非缺省的常数;命令的组织以命令模式为基本框架,同一命令模式的命令组织在一起,形成一节,节与节之间通常用空行或注释行隔开(以#开始的为注释行);以end结束。
display saved-configuration 显示起始配置
display current-configuration 显示当前配置
当用户完成一组配置后,需要验证配置是否正确时,可以执行display current-configuration命令来查看当前生效的参数,虽然用户已经配置,但如果这些参数所在的功能没有剩下,则不予显示;对于某些正在生效的配置参数,如果与缺省的工作参数相同,也不予显示。
配置文件的显示格式与保存格式相同。

一、保存当前配置
save
当完整一组配置并且已经达到预定功能时,应该将当前配置文件保到flash memory 中。

二、擦除flash memory 中的配置文件 !!!慎用
reset saved-configuration
一般在以下情况下会使用该命令
1、以太网交换机软件升级后,flash memory中的配置文件可能与新版本的软件不匹配,此时可以用reset命令擦除旧的配置文件。
2、将一台一斤使用过的以太网交换机应用于新的环境,原有的配置文件不能适应新环境的需求,需要对以太网交换机重新配置,这时可以擦除原配置文件,恢复出厂配置。
3、当flash memory中的配置文件遭到破坏,如加载了错误的配置文件等。

三、显示系统信息
display diagnostic-information 显示系统信息
display version 显示系统版本

四、复位交换机
reboot

五、设置以太网交换机域名(即hostname)
sysname huawei 设置以太网交换机域名为huawei
undo sysname 恢复以太网交换机域名为缺省值

华为交换机VLAN配置的相关知识以及配置命令

参考文章地址:http://tech.itzero.com/2006/1105/3520.html
一、基础知识:
1、untag 标识的是普通的以太网报文,这些报文不包含VLAN信息。
2、tag 标识的是添加了VLAN tag头信息的以太网报文。
3、802.1Q VLAN封装方式。带有802.1Q的帧是在标准以太网帧上插入了4个字节的标识,其中:2个字节的协议标识符(TPID),当前置0x8100的固定值,标明该帧带有802.1Q的标记信息;2个字节的标记控制信息(TCI),包含三个域:priority域,占3bits,标识报文的优先级,取值为0到7,7为最高优先级;规范格式指示符(CFI)域,占1bit,0标识规范格式,引用于以太网,1为非规范格式,应用于Token Ring;VLAN ID域,占12bits,用于标识VLAN的归属。

二、以太网端口的三种链路类型:Access Hybrid Trunk
Access类型的端口只能属于一个VLAN,一般用于访问。
Hybrid类型的端口可以接收和发送多个VLAN的报文,可以用于交换机间的连接,也可以用于访问。
Trunk类型的端口可以接收和发送多个VLAN的报文,一般用于交换机之间的连接。
注意:Hybrid端口和Trunk端口在接收数据时处理方法是一样的。在发送数据时,Hybrid端口可以允许多个VLAN的报文发送不加tag,而Trunk只允许缺省VLAN的报文发送时不加tag。

这里的缺省VLAN:
Access端口只属于一个VLAN,所以它的缺省VLAN就是它所在的VLAN,我们不用设置。
Hybrid端口和Trunk端口属于多个VLAN,我们需要设置缺省VLAN ID。缺省情况下,Hybrid和Trunk端口的缺省VLAN为VLAN1。如果设置了端口的缺省VLAN ID,当端口接收到不带VLAN Tag的报文后,则将报文转发到缺省VLAN的端口;当端口发送带有VLAN Tag的报文时,如果该报文的VLAN ID与端口缺省的VLAN ID相同,则会去掉VLAN Tag,然后再发送该报文,如有报文的VLAN ID与端口缺省的VLAN ID不相同:Trunk端口会直接发送,而Hybrid端口则会根据端口的设置来确定那些那些VLAN进行untag再发送,那些VLAN直接发送。

三、交换机接口出入数据处理过程
注:这里的出入是站在交换机的角度来看,进入交换机的为接收报文。
注:这里的PVID 是指缺省VLAN (Pvid Vlan)的ID;思科的缺省VLAN称为Native Vlan。
注:在交换机内部,是不可能出现不带VLAN ID的报文的。
Access端口:
1、接收报文:收到一个报文,判断是否有VLAN信息,如果没有则打上端口的PVID(即tag),并进行交换转发;如果有,则直接丢弃。
2、发送报文:将报文的VLAN信息剥离,直接发送出去。即untag。这里不可能出现不带VLAN信息的报文。
Trunk端口:
1、接收报文:收到一个报文,判断是否有VLAN ID,如果没有则打上端口的PVID,并进行交换转发;如果有则判断该Trunk端口是否允许该VLAN的数据进入,如果允许,则进行转发,如果不允许则丢弃。
2、发送报文:比较端口的PVID和要发送的报文的VLAN信息,如果两者相等则剥离VLAN信息(untag)再发送;如果不相等则直接发送。
Hybrid端口:
1、接收报文:收到一个报文,判断是否有VLAN信息,如果没有,则打上端口的PVID,并进行交换转发;如果有VLAN信息,则判断该Hybrid端口是否允许该VLAN的数据进入,如果允许,则转发,如果不允许,则丢弃。(注:此时端口上的untag配置是不用考虑的,untag配置只在发送报文时起作用。)
2、发送报文:首先判断该VLAN在本端口的属性(使用display interface 即可以看到那些VLAN是untag,那些VLAN是tag),如果是untag则剥离VLAN信息然后再发送,如果是tag则直接发送。

注:Hybrid端口可以允许多个VLAN的数据不带tag,而802.1Q的Trunk只能是PVID VLAN。

四、VLAN的配置
VLAN配置包括两步:首先创建VLAN;然后给VLAN指定端口。
命令介绍:
创建/删除VLAN
vlan vlan-id 进入VLAN视图或者创建并进入VLAN视图
undo vlan vlan-id 删除已存在的VLAN
注:VLAN-ID取值为1-4095,当HGMP处于开启状态时,VLAN 2407被系统保留,不能被用户创建或删除。当HGMP处于关闭状态时,无此限制。
为VLAN指定端口,在VLAN视图下
port interface_list 为指定的VLAN添加端口
undo port interface_list 为指定的VLAN删除端口
注:当输入的端口已经包含在指定VLAN中时,再次向该指定VLAN加入该端口时,将提示出错;HGMP不启动情况下,初始状态所有端口都属于VLAN1 。
其他命令:
display vlan [vlan-id] 显示VLAN相关信息
stp {enable disable} 开启/关闭生成树,默认为关闭。
stp priority 4096 设置交换机的优先级
stp root {primary secondary} 设置交换机为根或根的备份
stp cost 200 设置交换机端口的花费。注:在端口视图下!
port hybrid pvid vlan 设置hybrid端口的PVID。注:在端口视图下!
port hybrid pvid 删除hybrid端口的PVID,改用缺省PVID(即VLAN1)。注:在端口视图下!
port hybrid vlan vlan_id_list untagged 设置需要untag的VLAN列表。注:在端口视图下!

此外我们还可以在端口模式下,指定该端口所在的VLAN
port access vlan vlan_id 将当前接口加入到指定VLAN
port trunk permit vlan {ID ALL} 设置Trunk允许的VLAN
port trunk pvid vlan vlan_id 设置Trunk端口的PVID
注:以上三个命令均在端口视图下。

华为交换机QoS配置命令

QoS的配置包括两步:1、使能全局QoS;2、配置端口优先级。注意必须先使能全局QoS,才能配置以太网交换机端口的优先级。

一、使能/关闭全局QoS
在全局视图下:
qos weight 使能QoS并配置权值
undo qos 关闭QoS
注:weight为QoS的权值,取值范围为1-10。在使能全局QoS的时候,需要指定一个权值,假设权值取值为5,则在拥塞发生的时候,高优先级的端口上通过报文的字节数与低优先级端口上通过报文的字节数之比为5:1。缺省情况下,QoS处于关闭状态;使能QoS而没有配置权值时,权值缺省为5。

二、设置端口的优先级
在端口视图下:
priority 设置以太网端口为高优先级
undo priority 恢复以太网端口的优先级为缺省值
注:在缺省状态下,以太网端口处于低优先级。端口只有两种优先级,一种是默认优先级,一种是高优先级,在发生拥塞时,经过高优先级的口的流量会按照权值优先通过,不管有几个高优先级的端口。

三、查看
display qos-info 显示QoS相关信息

人生的图画

华为交换机MAC地址表管理

一、配置单播地址表项
mac-address {dynamic permanent static} mac_address interface {interface_type interface_num interface_name} 添加MAC地址表项
undo mac-address {dynamic permanent static} mac-address interface {interface_type interface_num interface_name} 删除地址表项
其中:static是静态表项,不会老化,交换机复位丢失;permanent为永久表项,交换机复位不丢失。mac-address采用H-H-H的形式。在删除动态地址表项时会同时把学到的地址表项删除。

二、设置MAC地址表老化时间
mac-address timer {aging age no-aging}

三、恢复MAC地址表的老化时间为缺省值
undo mac-address timer aging
注:age为MAC地址表的老化时间。取值范围为0到1000000,单位为秒;取0表示不老化。缺省情况下,MAC地址表的老化时间为300秒。

四、配置组播地址表项
multicast id {0 1} multi_mac interface_list 添加/修改组播MAC地址表项
undo multicast id {0 1} multi_mac interface_list 删除组播地址表项
其中:0标识第一个组播地址表项,1表示第二个组播地址表项。本例中只支持两个组播地址表项。

五、地址表管理显示和调试
display mac_address [mac_address] [[static permanent dynamic] {interface {interface_type interface_num interface_name all}}]显示MAC地址表信息
display mac-address aging-time 显示MAC地址表的老化时间

华为交换机基本命令介绍

一、建立连接后即进入用户视图,只完成查看运行状态和统计信息的简单功能。键入system-view进入系统视图

二、视图种类
用户视图 提示符
系统视图 提示符[Quideway]
用户界面视图 提示符[Quideway-ui-aux0]
VLAN视图 提示符[Quideway-vlan1]
以太网端口视图 提示符[Quideway-ethernet0/1]

三、设置用户分级密码
用户分为参观级别和监控级别,使用super命令可以切换到监控级别的用户。
super password huawei 设置切换用户级别的密码为huawei
undo super password 取消切换用户级别的密码
密码大小写敏感,忘记密码后要与代理商联系。

四、命令行常见的错误提示
没有查找到命令
没有查找到关键字
参数类型错误
参数值越界
输入命令不完整
输入参数太多
输入参数不明确

五、HGMP Huawei Group Management Protocol
实现多设备的集中管理。HGMP Server在管理设备上实现,主要是提供人机命令输入接口、控制维护命令的显示,同时提供一定的数据结构以存储其下挂的多台以太网交换机的相关信息。HGMP Client则主要要求根据管理设备下发的维护和查询命令做出相应的处理,同时保证与管理设备之间的通信。
hgmp enable 开启HGMP
hgmp disable 取消HGMP
注:某些型号的交换机必须通过特定的端口与SERVER连接。

六、默认情况下,华为交换机的终端通信参数为9600bit/s、8位数据位、1位停止位、无校验和无流控,并且选择终端类型为VT100。

七、进入端口视图
interface {interface_type interface_num interface_name}
其中:interface_type 为端口类型;interface_num为端口号,采用槽位编号/端口编号的格式;interface_name为端口名,采用端口类型+端口号(槽位编号/端口编号)的格式。
在端口视图下:
shutdown 关闭端口
undo shutdown 打开端口
negotiation-auto 设置以太网端口为自动协商方式
speed{10 100} 设置以太网端口速率
duplex{full half} 设置以太网端口的双工状态
flow-control 设置以太网端口的流量控制
undo flow-control 恢复以太网端口流量控制的默认状态,缺省状态下以太网端口对报文不进行流量控制
注:以太网端口的速率和双工状态必须同时设置才能生效,只设置其中一项将不会起作用。汇聚端口不能设置双工、速率模式。缺省状态下,端口的速率为自协商方式,双工状态为自协商方式。

八、以太网端口汇聚(与TRUNK区别,TRUNK是VLAN中设置的)
link-aggregation 设置以太网端口汇聚
undo link-aggregation 取消以太网端口汇聚
汇聚端口始终为打开模式,不能被shutdown;汇聚端口不能是镜像端口,反之亦然。

九、以太网端口镜像配置
可以通过一条命令配置镜像端口和被镜像端口:
mirroring-port interface_list [observing-port {interface_type interface_num interface_name}]
也可以通过两条命令来配置:
monitor-port {interface_type interface_num interface_name}配置镜像端口
mirroring-port interface_list 配置被镜像端口
undo monitor-port 删除镜像端口
undo mirroring-port {interface_list} 删除被镜像端口
端口列表:{interface_type interface_num interface_name ...} [to {interface_tpye interface_num interface_name ...} ]
注意:在配置的时候必须先配置镜像端口,再配置被镜像端口;删除的时候刚好相反,必须先删除被镜像端口,再删除镜像端口。否则会不成功。
镜像和被镜像端口是端口的两个状态,删除时不会导致端口shutdown。

十、display命令
display {interface_type interface_num interface_name}显示端口的所有信息
reset 清除所有端口的统计信息
display monitor 显示以太网镜像端口的设置
display link-aggregation 显示以太网端口汇聚信息

如何选择WAN连接类型(翻译笔记)

原文地址:http://articles.techrepublic.com.com/5100-10878_11-5033247.html

当设计一个WAN连接时,最大的挑战就是如何选择一个合适的WAN连接类型。我们常选择的连接类型主要有三种:
1、电路交换连接
2、包交换连接和分组交换
3、专线
每一种连接方式都有它们各自的优点和缺点,本文主要粗略的介绍各种连接方式在带宽、可用性、花费以及易管理性方面的特性。
一、电路交换Circuit-switched connections
电路交换是最流行的WAN连接方式,通过专用的电子线路进行数据流和数据报的传输,电话公司通常使用电路交换技术来提供异步拨号和ISDN服务。
二、异步拨号Asynchronous dial-in
电话拨号网络通过使用电交换技术来提供异步拨号服务(此外还提供我们所熟悉的电话服务),异步拨号技术提供了一种低带宽、易管理、高效、性价比高而且在全球任何地方都可以使用的解决方案。
三、综合业务数字网络ISDN
综合业务数字网络是一种用来传输声音、数据、视频的数字电交换技术。在北美传输速率可以达到1.54Mbps(T1),在欧洲传输速率可以达到2.048Mbps(E1)。ISDN对传输媒介的带宽要求很低,相对的花费也比较低,但是在可用性方面有限制,在配置和技术支持方面也比异步传输技术要复杂。
四、包交换和分组交换Packet-switched or cell-switched connections
包交换和分组交换技术是在一条公共链路上建立的一种点到点连接。这种连接比异步拨号和ISDN连接要贵。但是与专线相比,包交换和分组交换能够使用很低的花费提供高带宽。常用的包交换技术有:帧中继、X.25;分组交换技术有:ATM。
五、帧中继Frame Relay
帧中继是最流行的一种包交换技术。通过对多种网络协议的支持,它能提供一种可扩展、高带段的网络连接方式。帧中继根据承诺信息速率来收费(CIR),CIR是服务提供商所能保证提供的信息速率。CIR越高,收费也越高。帧中继的设计和维护相当复杂,需要专家级的网络工程师来负责。(帧中继所提供的带宽是基于所有用户不会同时传输数据来进行设计的,类似银行。)
六、X.25
X.25是十九世纪七十年代设计的一种数据链路层的包交换协议。它的设计初衷是通过一条干扰率很高(noisy analog)的线路进行数据传输,因此这个协议自身有错误检测机制,以今天的标准来看,由于错误检测报头的存在,使得X.25所能提供的带宽很低。但是如果你必须在一个干扰率很高而且包含古老的设备的网络中进行WAN连接的选择,那么X.25也是一种不错的连接方式。
七、ATM
ATM是一种相当高速的连接方式。ATM是一种多路访问的分组交换技术,分组交换提供面向连接而且传输的是可靠的固定长度的分组(guaranteed delivery of fixed-length cell)。ATP支持的速率可以达到OC-192(10Gbps),这使得可以通过ATM来传输声音、视频、数据等高带宽的应用。当然ATM既然有如此高的性能,它的价钱也是相当高的。
八、专线Dedicated connections
专线是一种永久固定的点到点串行连接。专线可以穿过公共链路,提供高达T3(44.736Mbps)的连接速率。永久固定的专线一旦确定,就不需要用来确定通信两端的额外开销。由于能够提供高速连接而且不需要的额外的开销来控制通信,因此对那些需要7*24小时高带宽通信的公司来讲,这是一种非常合适的WAN连接方式。当然,费用也是比较高的。


决定选择何种WAN连接方式是相当困难的任务。正确的分析WAN流量的类型和需求是完成这个任务的关键。

Cisco IOS 常用配置命令

一、设置密码
router(config)#enable password cisco
该密码主要用于从用户模式登陆到特权模式下。可以用show running-config查看。
router(config-line)#password cisco
该设置的密码主要用于通过consol、VTY、AUX端口连接时需要输入的密码。可以使用show running-config查看。
此外CISCO还提供一种更高级别的密码,使用show running-config只能查看到加密后的口令。
对应的是:enable secret cisco和secret cisco。

二、设置登录时显示的提示信息
router(config)#banner exec #This is an exec banner#
router(config)#banner login #This is a login banner#
router(config)#banner motd #This is a motd banner#
其中:# 是分隔符,两个#之间的文字为提示内容,可以自定义,比如也可以使用字母a等。

三、配置静态路由
router(config)#ip route 192.168.0.0 255.255.255.0 10.0.0.1
其中192.168.0.0 是目的网段,255.255.255.0 是目的网段掩码,10.0.0.1是下一跳地址。
此外我们还可以给静态路由打上标签:
router(config)#ip route 192.168.0.0. 255.255.255.0 10.0.0.1 tag 321
对静态路由打标签用于路由再发布时区分。

四、配置RIP
router(config)#route rip
router(config-router)#network 172.168.0.0
router(config-router)#network 192.168.1.0

五、配置EIGRP
router(config)#router eigrp 1
router(config-router)#network 172.168.0.0
router(config-router)#network 192.168.1.0
确保使用该协议的所有路由器配置的EIGRP后面的自治系统号相同。这里自治系统号为1。

六、配置OSPF
router(config)#router ospf 1
router(config-router)#network 172.168.1.0 0.0.0.255 area 0
这里的1表示的是该OSPF的本地进程号。可以不同。但是区域号必须相同,这里是0。

七、配置BGP
路由器1:
router1(config)#router bgp 65535
router1(config-router)#network 172.15.170.0 mask 255.255.255.0
router1(config-router)#neighbor 192.168.55.1 remote-as 65500
router1(config-router)#no synchronization
路由器2
router2(config)#router bgp 65500
router2(config-router)#network 192.168.55.0 mask 255.255.255.0
router2(config-router)#neighbor 175.15.170.1 remote-as 65535
router2(config-router)#no synchronization
首先启用BGP协议,要注意标明自治系统号,这里分别为65535和65500;然后将一个网络标识为本地网络并加入到BGP表中;然后再确立BGP邻居这里主要远端自治系统号要输入对端的自治系统号。

高达小剧场 ∩ω∩

数据库选择--桌面数据库和服务器数据库

数据库可以分为两种:桌面数据库和服务器数据库。
桌面数据库主要面向单用户的应用,一般部署在个人电脑上。相对价格比较便宜。
数据库服务器主要面向大规模应用,一般部署在服务器上。相对价格比较贵。
在选择数据库之前,首先要分析我们的需求,通过以下几个问题的回答,我们可以对我们的需求有一个大概的了解:
1、谁使用数据库?数据库承载什么样的应用?
2、数据修改的频率?谁负责修改数据?
3、谁负责对数据库提供技术支持?
4、数据库运行在什么样的硬件上?以及以后是不是会对硬件进行扩展?
5、谁负责管理数据?
6、是不是支持对数据库的网络访问?以及什么级别的网络访问?
一、桌面数据库
桌面数据库提供了一个简单的、相对便宜的解决方案,主要应用于不是很复杂的数据存储以及数据管理。比如我们常见的Microsoft Access 就是一种桌面数据库。
桌面数据库的优点:
1、桌面数据库比较便宜,这个主要是相对数据库服务器来讲。
2、桌面数据库操作简单,不需要掌握很多的数据库知识就可以操作。
3、桌面数据库支持网络发布。
二、服务器数据库
服务器数据库主要应用于大规模的数据存储以及数据管理。比如:Microsoft SQL Server,Oracle 以及DB2等。
服务器数据库的优点:
1、灵活性,服务器数据库能处理各种各样的数据管理问题,而且提供API。Oracle 可以支持多种操作系统。
2、强大的执行能力,能够在多种速率的处理器上运行,以及高速数据处理以及容错存储等能力。
3、伸缩性,可以从容应对用户和数据的高速增长。