有时候,当我孤独地坐着等待生命大门关闭时,一种与世隔绝的感觉就会像冷雾一样笼罩着我。远处有光明、音乐和友谊,但我进不去,命运之神无情地挡住了大门。我真想义正词严地提出抗议,因为我的心仍然充满了热情。但是那些酸楚而无益的话语流溢在唇边,欲言又止,犹如泪水往肚里流,沉默浸透了我的灵魂。然后,希望之神微笑着走来对我轻轻耳语说:“忘我就是快乐。”因而我要把别人眼睛所看见的光明当作我的太阳,别人耳朵所听见的音乐当作我的乐曲,别人嘴角的微笑当作我的快乐。

发布新日志

  • 软件测试职业发展方向

    2012-08-21 21:29:31

       原贴 :http://www.17testing.com/k/Testing/2011-3/1726.html


    软件测试职业发展方向

    2011-3-8 13:58:13【作者】 17Testing Editor 【进入论坛】
    本文关键字

    软件测试职业发展方向,大体上可以分为管理路线、技术路线、管理+技术路线。
    测试初级阶段:
      测试工程师,属于软件测试职业生涯的初级域,其适用范围是入行软件测试3年内的常规测试从业者,其主要工作内容是按照测试主管(即直接上司)分配的任务计划,编写测试用例、执行测试用例、提交软件缺陷,包括提交阶段性测试报告、参与阶段性评审等。
    管理+技术路线:
      首先是常规路线,这条发展路线要求管理与技术并重,因为软件测试的行业特点决定了这个因素:测试工程师向上晋升到测试主管、测试经理、测试总监,直至咨询域的更高方向!
       测试主管是企业项目级主管,对于中小型软件公司也可以是企业级主管,属于中级发展域,适用范围是2到5年职业经验的测试从业者。其工作内容是根据项目经 理或测试经理的计划安排,调配测试工程师执行模块级或项目级测试工作,并控制与监督软件缺陷的追踪,保证每个测试环节与阶段的顺利进行。严格来说,这个级 别更多属于测试的设计者,因为企业的测试流程搭建是由更高级别的测试经理或相关管理者来做的,测试主管负责该流程的具体实施;而更多的工作,是思考如何对 软件进行更加深入、全面的测试。测试主管比较有创造性的工作内容就是测试设计,而恰恰很多公司忽略了或没有精力来执行此工作内容!应该说,在一个企业里做 了3年左右测试工作的人员,很容易晋升到该职位,而之所以晋升,是与个人测试技术的过硬、测试方法的丰富,加上对测试流程的监控力与执行力的职业素质息息 相关!
      测试经理是更高级别的测试管理者,属于高级测试方向域。对于大中型软件公司,该职位尤为重要,并且对其职业要求也比较高,一般适合4 到8年的测试从业者,在管理与技术能力双双比较成熟的情况下,可以结合具体环境晋升到该级别。测试经理负责企业级或大型项目级总体测试工作的策划与实施。 测试经理除了需要统筹整个企业级或项目级测试流程外,还要对于不同软件架构、不同开发技术下的测试方法进行研究与探索,为企业的测试团队成员提供指导与解 决思路,同时还要合理调配不同专项测试的人力资源(如业务测试工程师、自动化测试工程师、白盒测试工程师、性能测试工程师),对软件进行全面的测试;另 外,一些企业里,测试经理还需要与客户交流与沟通,负责部分的销售性或技术支持性工作。
      测试总监,属于常规发展路线的最高域,该职位一般在大 型或跨国型软件企业,或者专向于测试服务型企业有所设立,一般设立测试总监的企业,该职位都相当于CTO或副总的级别,是企业级或集团级测试工作的最高领 导者,驾驭着企业全部的测试与测试相关资源,管理着企业的全部测试及质量类工作。而其职业要求,也是技术与管理双结合。
      
      技术路线:
    技术路线中级域:
      技术路线,划分为三个半方向,分别是自动化测试工程师、白盒测试工程师、性能测试工程师和认证测试工程师;前三者适用于通用软件测试领域,认证测试工程师乃嵌入式测试领域职位,至少目前仅出现在嵌入式领域。
      自动化测试工程师,定义在功能测试范畴,指通常所说的依靠自动化测试工具进行软件黑盒测试的工程师。从大环境讲,自动化测试是软件测试执行阶段的必然趋势,社会对于软件测试的认可度以及对自动化测试人才的需求必将日益增加。
       白盒测试工程师,定位于在软件测试周期的单元测试阶段对软件进行的代码级测试的人,包括代码走读、代码功能与逻辑测试、代码内存泄漏检查、代码运行效率 检查、代码测试覆盖率分析等。如果说,自动化测试只是依靠脚本语言完成测试脚本编写与调试的过程(因为自动化测试工程师的工作重点不在编写脚本),对于自 动化测试工程师的技术要求要相对偏低的话,那么白盒测试工程师就要对大型程序开发语言的完全掌握,因此其技术要求相对偏高!
      性能测试工程 师,即在系统测试阶段、功能测试后对软件系统性能指标进行采集分析和运行效率检测的人。在一个尽量压缩的测试流程里,功能测试可以手工进行,白盒测试可以 不做,但是性能测试必须要做,除非该软件非网络类软件即单机版软件!软件测试,从宏观上可以划分为三个大方面:功能测试、性能测试、安全性测试,功能测试 说明软件做对了,功能测试+性能测试说明软件做好了,三者结合起来说明软件做的非常好!安全测试暂且抛之不提,这是下一个发展域的内容,但是为了把软件做 好,为了真正保证软件的质量,性能测试绝不容忽视;只因目前很多企业由于时间、成本、人力条件的限制,暂且不做性能测试。性能测试工程师相对来说,是三个 技术路线里技术要求最高的,因为软件的性能瓶颈归根结底落实到代码的运行效率这个问题上,因此性能测试要做好,性能测试工程师起码要懂开发;而为了发现性 能问题,要懂软件开发架构;为了定位性能问题,要懂操作系统、网络协议、应用服务器乃至数据库的原理与使用;为了最终解决性能问题,要根据定位的问题有针 对性的对代码、操作系统、网络架构、服务器、数据库进行优化!当然性能测试是一个系统工程师,绝对不是一两个人的事情,对于常规性能测试工程师,具备定位 性能问题的能力即可。
    技术路线高级域:
      进入技术路线的高级域,根据中级域的四个路线,可以细分成五个路线,分别是资深自动化测试工程师、资深白盒测试工程师、资深性能测试工程师、安全性测试工程师、标准化工程师,这些高级技术类人才完全与常规测试经理平齐,属于软件测试职业发展高级域。
       资深自动化测试工程师由自动化测试工程师晋升而来。如果说常规自动化测试工程师只是负责自动化测试脚本本身的设计与开发,那么资深自动化测试工程师的工 作内容就是自动化测试这项工作的实施!也就是说,录制脚本-添加验证点-回放脚本只是最初始的自动化阶段,要在企业实施自动化测试,要有资深自动化测试工 程师来设计数据驱动,开发测试框架,甚至一些企业内部自主开发小型测试工具(而非商业工具)的先例,这些也都是建立在资深自动化测试工程师具有深厚的技术 底蕴后,主导其他人员协调完成的事情。
      资深白盒测试工程师,其工作内容包含常规白盒测试工程师的内容,除此之外,要协助测试经理或测试总监 攻关测试方法与技术性难题,因此其技术水平更加雄厚。如果常规白盒测试工程师是停留在某种程序设计语言类型的代码级测试,那么资深白盒测试工程师就要脱离 程序设计语言本身,结合不同架构、多种开发技术交互的情况下,寻找代码测试方法,并具有对代码优化的能力。
      资深性能测试工程师,来源于常规性能测试工程师,按照常规性能测试工程师的技术要求,资深性能测试工程师应该具备性能测试整体方案的设计能力,以及软件系统性能问题定位和性能优化的能力!除此之外,也要对主流的软件开发模式下的应用系统具有敏锐的洞察意识和感知意识。
       安全性测试工程师,其实从性能测试工程师衍生出来,因为只有具备性能测试经验的人,才对软件的开发模式、实现架构和技术本身充分了解,才会感知和预见软 件系统存在的安全漏洞,加上其本人是测试出身,才知道如何通过系统漏洞尝试攻击软件系统,达到测试的目的。目前国内软件行业对于安全性测试的认识尚未清 晰,该职业也更没有普及,一般只限于军事类、机密类、防病毒类或其他高安全性软件的测试工作中。
      技术路线专家域:
      在技术路线, 向上继续提升的方向,我们称之为“技术专家”;如果说前面描述的技术职位的所涉范围都定位在企业内部,即企业级资深性能测试工程师,那么技术专家,我们可 以看作是领域级专项人才!随着软件测试行业的职位不断细化,每个人在自己擅长的领域走向深入,都可以成为该领域的技术专家,技术专家在自已经营的领域里, 具有个人独到的见解和深厚的技术实力,而这类人才可以不再从事具体的测试工作,而是提供行业性测试技术咨询、培训等,为软件测试整体行业的发展,起到了鲜 明的带头作用。

      管理方面:
    管理方面中级域:
      从事了1到3年左右的常规测试工程师,在经过对个人性格特点剖析后,如果认为自己是一个倾向于“高管理-低技能”的类型,那么想要实现自己的职业提升,可以向中级发展域的配置管理工程师、质量保证工程师、业务测试工程师转型。
       配置管理(SCM)与质量保证(SQA)同是CMM中的关键过程域(KPA),也同是现代软件工程里的必要角色,与软件测试同属软件开发团队的重要组成 部分。只因这两个角色在软件工程里的人员配比数量相对较少,还不如软件测试这样规模化乃至于形成行业,而最多是一个职业;另外一个社会现象是,企业很少直 接从社会直接招聘配置管理工程师和质量保证工程师,而通常的做法是从企业内部的现有测试员工队伍里选拔,而转型后的测试工程师,就成为SCM或SQA。分 析其原因,我们可以感知,SCM、SQA与软件测试工程师都是关注于软件质量的相似职位,社会对于配置管理、质量保证的定义和工作内容并未普及,与其直接 从社会招聘“0”基础的人来培养,倒不如从软件测试人员里升华!一般来说,这两种职位的上报对象是项目经理或相同级别管理者。
      转型后的配置 管理与质量保证工程师,一定要转变一个意识,那就是常规测试工程师的工作范围很大一部分(不是全部)只限于测试流程,而配置管理和质量保证的工作范围是面 向整个软件开发流程,二者的职业要求都非常重视软件工程知识体系的建立和软件开发总体流程的实施能力。由于配置管理工程师除了企业配置管理流程的搭建与实 施外,一般会涉及配置管理工具的管理与维护,而质量保证工程师更多的工作是软件开发流程的控制与维护,故而配置管理对技术的要求稍高于质量保证。
       业务测试工程师,定义为面向行业类软件业务逻辑与工作流测试的人员。当前软件开发类型,很大一部分是行业类软件的应用,如ERP、SCM、CRM、 OA、电信、金融、财务、嵌入式、通信、手机、游戏……这就要求从事行业类软件测试的人员具备行业背景、业务知识,熟练该行业工作流程。从社会上出现的很 多对此类经验要求的测试工程师招聘信息中,我们更加肯定这种趋势;所谓存在即是道理,既然社会上有了需求,那么就可以作为个人发展的方向。而另外一个特点 是,业务测试工程师的工作内容主要是黑盒测试,属于功能范畴,因此对技术要求不大,设置一些大型行业类软件公司的业务测试工程师薪资丰厚,但是完全可以不 懂技术,因为它的工作性质决定了不需要懂很多的技术!他们甚至连软件的界面测试都不做——交给常规测试工程师实施,而完全关注软件的业务性和易用性,由于 其深厚的行业背景,可以为软件的在正式发布前提出很多建设性的意见,而这些建议正是软件开发商提高产品易用性、增加用户满意度、开拓市场、创造利润的关键 因素之一!
    管理方面高级域:
      当管理路线的中级域方向继续上升至高级域,就分别到达配置管理经理、质量保证经理、产品经理、业务专家。
       如果说配置管理工程师、质量保证工程师更加侧重于配置管理流程、质量保证流程的实施与日常管理维护,那么配置管理经理、质量保证经理就是更侧重于配置管 理流程、质量保证流程的建立与改进。一般在中小软件企业,可能没有这两个角色,而全部的配置管理或质量保证工作都由工程师担当;但是大中型软件企业对资深 配置管理经理、资深质保经理求贤若渴。软件系统越庞大,软件开发团队规模就越庞大,软件开发流程中出现问题的几率就越高,高效管理软件开发流程,不断改进 软件质量,是每个软件公司在技术上没有顾虑后的下一个急需攻破的难关!
       业务专家,属于行业内咨询、顾问的角色,已经几乎脱离了测试工作本身,而更多为企业的产品需求分析、设计、开发、测试等各个环节提供指导工作,其目的也是提高软件的易用性和稳定性,减少后期不必要的需求变更。该职位也同样在目前热点行业的大中型软件企业有所设立。
      产品经理,这个职位在很多企业有所设立,可以说它是质保经理的派生,只是它更侧重于软件在产品化之前的质量监控工作,包括软件开发流程、软件测试等技术与管理的各个方面。
    管理方面咨询域域:
    管 理路线的最高发展域是咨询域,与技术路线的专家域类似,在配置管理、质量保证、软件产品化、行业领域达到高深造诣的人才,他们有丰富的从业经验、深厚的管 理底蕴,具有对软件工程高瞻远瞩的慧眼和胆识,往往供职在专业的咨询与培训公司,提供IT业管理类咨询与培训的服务,推动着软件行业的前进。国内外很多为 软件企业进行CMM咨询和实施的公司里,就是这些人才的大本营之一!
     

    电话:0512-69172201 62620800-756/784/820
    点击咨询 在线咨询 点击咨询
    公交路线:18、118、126、141、168、205、27、52、518路国际科技园下;26路星海街南下

  • 共享Ubuntu samba安装步骤使用

    2012-08-21 18:13:37

    共享Ubuntu samba安装步骤使用

    http://os.51cto.com/art/201001/176444.htm

    2010-01-07 13:31 佚名 CSDN 我要评论(0) 字号:T | T
    一键收藏,随时查看,分享好友!

    安装Ubuntu samba和smbfs:sudo apt-get install samba smbfs 建立共享目录:sudo mkdir /home/[username]/[foldername] 设置目录权限:sudo chmod 777 /home/[username]/[foldername]

    AD: 51CTO云计算架构师峰会 抢票进行中!

    samba还是比较常用的,我就对Ubuntu samba进行了研究,在这里对大家讲述Ubuntu samba安装步骤,希望对大家有用。Linux系统的文件或目录的共享功能是非常强大,而且是非常灵活的,其对权限的控制可以做到非常的细致,当然如果 你是通过命令行方式进行设置的 话,那么对于刚接触linux系统的用户来说将是一件十分头痛的事。

    但如果你所处的网络环境对安全要求不高的话,那么只要简单的几个步骤就可以建立一个 linux系统下的共享文件夹了。下面以Ubuntu为例分步骤说明:

    安装Ubuntu samba和smbfs:sudo apt-get install samba smbfs
    建立共享目录:sudo mkdir /home/[username]/[foldername]
    设置目录权限:sudo chmod 777 /home/[username]/[foldername]
    设置目录共享:sudo vi /etc/samba/smb.conf
    找到:security = user 改为:security= share

    在文档最后加上:
    [Share]
    path = /home/[username]/[foldername]
    public = yes
    writable = yes

    重启服务:sudo /etc/init.d/samba restart
    注:上面的[username]为linux系统下用户目录,[foldername]为文件夹名称,使用的时候注意替换。
    好了现在你在你的windows终端上可以使用\\ip\share的方式访问linux系统的共享文件夹了。
    内容来自: 脚本之家 www.jb51.net

    步骤1:Ubuntu下安装Ubuntu samba
    #apt-get install samba
    #apt-get install smbfs

    步骤2:添加linux用户
    #useradd user1 //添加用户名user1
    #passwd  user1 //给用户名user1添加密码
    #mkdir /home/user1 //建立user1的home目录,如果不用这个用户名来登陆linux,此步骤不是必需
    #chown -R user1:user1 /home/user1 //给user1的home目录设置好权限

    步骤3:给Ubuntu samba服务器添加用户
    说明:登陆Ubuntu samba的用户必须已经是linux中的用户
    #smbpasswd -a user1 //添加并给user1设置Ubuntu samba密码

    步骤4:smb.conf设置
    #cd /etc/samb //进入设置目录
    #mv smb.conf smb.conf.bak //做好备份,直接将系统默认配置文件改名
    #vim smb.conf //建立和配置smb.conf文件
    [global]
    workgrop=x1 //X1为你局域网中的工作组名
    server string=x2 //x2为你linux主机描述性文字,比如:samba server。
    security=user //samba的安全等级,user代表需要输入用户名和密码,改成share则不需要输入用户名和密码
    [x3] //方框号中的x3这个名字可以随便取,只是在win的网上邻居中显示的共享文件夹名
    path=/home/x4 //x4为你要共享的文件夹名,在共享前还要建立这个文件夹,并设好权限以便访问,下面会说明。
    valid users=user1 //这个x4共享目录只允许user1这个用户进入
    public=no //no表示除了user1这个用户,其它用户在进入Ubuntu samba服务器后看不见x4这个目录,如果为yes,虽然能看见x4这个目录,但除了user1这个用户能进入这个目录,其它人进不了。
    writable=yes //允许user1在x4目录中进行读和写操作,反之no//存盘退出
    #testparm //检查一下语法错误,比如拼错

    步骤5:建立共享目录
    #mkdir /home/x4
    #chown -R user1:user1 /home/x4 //因为是root建立的目录,其它用户只有读的权限,所还得把权限改一下。当然也可以简单的用#chmod 777 /home/x4。还有个问题就是共享里目录的文件如果有些能访问有些不能访问,那肯定也是权限的问题,进入/home/x4,直接#chmod 777 *来解决。

    步骤6:重启Ubuntu samba服务
    #/etc/init.d/samba restart
    Windows XP共享经典问题详细拆解文件共享、打印机共享……都是我们网络中经常需要使用的操作。但是在Windows XP中进行这类共享时,却经常出现一些问题,导致共享无法完成。

    一、无法找到共享内容
    当我们在“运行”中输入“共享计算机名(IP地址)”时,却弹出找不到的提示,这种情况下多是因为启用了默认的 Windows防火墙。对此,我们只需要右击“网上邻居”图标,打开属性窗口,然后再打开“本地连接”的属性窗口,切换到“高级”标签,单击 “Windows防火墙”处的“设置”按钮,然后在“例外”标签中选中“文件和打印机共享”选项即可。

    二、无法选择账户
    继续上一步的问题,在访问指定的共享文件夹时,弹出登录窗口,但是在该窗口中用户名处却只有 Guest,并且呈灰色状态不可修改其它用户。这是XP的验证方式不正确所导致的。对此,我们只需要进入控制面板,在“管理工具”中打开“本地安全策 略”,然后在左侧选择“本地策略—安全选项”,双击右侧的“网络访问:本地账户的共享和安全模式”,在打开的窗口中将其设为“经典—本地用户以自己的身份 验证”即可。

    三、默认来宾无法访问
    用户已经启用Guset了,但是却仍然无法访问共享内容。这时你可以继续打开本地安全策略,然后在左侧选择“本地策略”下的“用户权利指派”,双击右侧的“拒绝从网络访问这台计算机”,然后将其中的Guest账户删除即可。

    四、授权用户也不行
    在访问共享内容时,需要用户输入用户名和密码,但是用户输入已经授权的账号,但是却仍然登录失败。这时不防看看你的登录 账户是否为空密码,如果是空密码,那么则可以本地安全策略中,依次选择“本地策略—安全选项”,然后双击“账户:使用空白密码的本地账号只允许进行控制台 登录”,将其禁用即可。

    这只是在XP下共享应用中出现比较多的一些错误,其实导致这些错误的大多是因为设置上不合理所造成的,只要找到源头自然可以轻松解决。
    ——以上介绍Ubuntu samba安装。

  • 协议测试

    2012-08-20 20:02:06



    计算机网络协议测试技术分析

    原文网址 :http://www.nmgkjyjj.com/Article_Show.asp?ArticleID=3480

    [ 作者:杭成宝,樊月旺,李 华,叶新铭,王 佳 | 转贴自:本站原创 | 点击数:945 | 更新时间:2009-6-18 | 文章录入:imste   2008年 第 19 期 ]

    (1.内蒙古大学计算机学院,内蒙古 呼和浩特 010021;2.内蒙古财政厅信息中心,内蒙古 呼和浩特 010010)
    摘 要: 介绍了协议测试技术以及相关标准进展情况,着重介绍了协议一致性测试和互操作 性测试,分析了二者的差异,明确了它们之间的关系。便于进一步理解协议测试技术。
    关键词:协议测试;互操作性测试;计算机网络协议
    中图分类号:TP393  文献标识码:A  文章编 号:1007—6921(2008)19—0028—03
    1 引言 

    随着网络以及通信技术的快速发展,网络更加普及,协议测试也显的越来越重要。协议测试 技术的目的就是保证通信协议正确实现以及确保不同的通信设备之间可以正确互联。对于商 业测试而言协议测试技术非常具有实用价值,得到了广泛的应用。目前除了一致性测试有国 际标准外,其他测试技术还未有国际标准。故此协议测试技术的理论化、标准化工作有待深 入研究。本文在介绍协议测试技术的基础上重点探讨一致性测试和互操作性测试以及它们之 间的关系。
    2 协议测试技术介绍

    目前在测试领域测试方法分为3种:白盒测试、黑盒测试和灰盒测试。白盒测试通过每条语 句至少执行一次来全面检查整个程序代码,而黑盒测试只测试软件外部可以观察到的行为, 不涉及程序的内部结构。白盒测试的测试能力非常强,但是过程过于复杂,对被测软件要求 也很高。黑盒测试只关心被测软件的输入和输出,测试能力虽然弱了些,但是测试过程本身 相对简单,对被测软件要求也无特殊要求。灰盒测试是将白盒测试和黑盒测试结合起来形成 的一种测试方法,吸收了两种方法的优点。在通信测试中,协议测试仅仅是一种黑盒测试, 它并不检查协议代码,而是按照协议标准,通过控制观察被测协议实现或系统的外部行为对 其进行评价。协议测试技术包括四种类型的测试〔1〕:①一致性测试(Conformance Testing):检测协议实现本身与协议规范的符合程度;②互操作性测试(Interoperability Testing):基于某一协议检测不同协议实现间互 操作互通信的能力;③性能测试(Performance Testing):检测协议实现的性能指标(如数据传输速度、连 接时间、执行速度、吞吐量、并发度等);④健壮性测试(Robust Testing):检测协议实现在各种恶劣的环境下运行的能力(如 注入干扰报文、通信故障、信道被切断等)。

    在过去的通信发展中,国际标准组织主要关注协议一致性测试,故此一致性测试开展最早, 也形成了很多有价值的成果,而其他三种测试仅仅作为商业测试的手段来满足具体测试者的 需求。90年代国际标准化组织ISO制订的国际标准ISO/IEC 9646(ITU-TX.290系列)——“O SI协议一致性测试的方法和框架”,描述了基于OSI七层参考模型的协议测试过程、概念和 方法,相应标准见表1。另外,还有ETSI ETS 300 406“测试和规范方法;协议一致性测试 规范”。

    随着通信技术的发展,新的协议越来越复杂,协议一致性测试工作遇到了很多困难。在实 际测试中,一致性测试通过并不能保证互操作测试一定可以通过。所以互操作性测试相关研 究越来越受到重视。虽然互操作性测试目前还未制定国际标准,但是中国以及ETSI、ITU-T 、ISO等国际组织都开展了相应的研究工作,具体成果有:①ETSI TS 102 237“互操作测试方法和途径”;ETSI TS 202 237“互操作测试方法”;②ITU-T正在完善ITU-T Z.itfm“互操作测试框架和方法”;③ISO正在许多协议簇中增加互操作测试;④“中国通信行业标准YD/T1521-2006路由协议互操作性测试 方法”该标准主要是信息产业 部电信研究院、华为技术有限公司、中兴通讯股份有限公司参与起草,由中华人民共和国信 息产业部发布。

    互操作测试、性能测试和健壮性测试的研究对于商业测试具有非常实用价值,得到了广泛的 应用,然而其理论化、标准化的工作还有待深入研究。
    3 协议一致性测试与互操作性测试技术

    一个协议实现或系统能否通过一致性测试和互操作性测试是它能否与其它实现成功互连互通 的重要保障,因此对协议实现进行一致性测试和互操作性测试是非常重要的。
    3.1 协议一致性测试技术

    ISO/IEC 9646〔2〕对一致性定义如下:“一个一致性的实现应满足静态一致性需求 和动态一致性需求,并与协议实现一致性声明(Protocol Implementation Conformance St atements,PICS)中所声明的功能相符合。” 一致性测试主要是确定被测实现(Implement ation Under Test,IUT)是否与标准规定一致。通常利用一组测试案例序列,在一定的网 络环境下,对被测实现进行黑盒测试,通过比较IUT的实际输出与预期输出的异同,判定IUT 是否与协议描述相一致。一致性测试拓扑结构如图1。表现一致性测试的重要特征是:①被测系统(System Under Test,SUT)或被测实现定义测试边界;②测试由一个能够完全控制SUT和拥有观察SUT所有通信能力的专门测试系统实施;③测试在开方式标准接口上 执行,也就是说接口指定在协议级。

    根据ITU-T X.290系列ISO/IEC-9646定义的一致性测试方法,测试标准主要包括五部分:①测试套结构和测试目的(Test Suite Structure and Test Purposes, TSS&TP):由相关标 准而得。它们为每个测试提供一个非正式易读的描述,集中于测试意图而不是如何实现。他 们通常在协议层上定义;②抽象测试套(Abstract Test Suite, ATS):是测试例的集合,测试例通过测试描述语言(如 TTCN、XML)描述;③协议实现一致性说明(PICS):PICS说明被测实施的要求、能力及选项实现的情况;④协议实施附加信息(Protocol Implementation eXtra Information for Testing, PIXIT) :PIXIT提供测试必须的协议参数(例如特殊地址、计时器值等);⑤可执行测试套(Executable Test Suite, ETS):可以通过ATS简单快速的生成。协议一致性测试采用的工作流程如图2,其测试步骤如下: ①静态测试:测试仪读取PICS/PIXIT文件并根据协议标准进行静态测试,检查IUT参数说明 是否符合标准。②动态测试:测试仪根据PICS/PIXIT文件和ATS生成ETS,然后执行ETS对IUT进行激励/响应 测试。具体采用的测试类型包括:本地测试方式、分布式测试方式、协同测试方式和远程测 试方式。③测试报告:对测试执行产生的测试记录文件进行分析,按照测试报告描述规格生成一致 性测试报告。协议一致性测试报告记录了所有测试案例的测试结果:成功(PASS)、失败( FAIL)、不确定(INCONCLUSIVE)。 
    3.2 协议互操作性测试技术

    目前互操作性测试没有标准定义,通常用于研发阶段多厂商准正式测试或者运营商的选型测 试中。互操作测试评估被测实现与相连接相似实现之间在网络操作环境中交互能力,并且完 成协议标准中规定的功能,从而确定被测设备是否支持所需要的功能。

    在互操作测试中,被采用最多的形式是测试单位选择经一致性操作和互操作测试认可设备来 与被测设备进行互操作测试。互操作性测试拓扑结构如图3。表现互操作性测试的重要特征 是:①认可设备(Qualified Equipment, QE)和被测设备(Equipment Under Test, EUT) 来自不 同厂商(至少不同生产线)共同定义测试边界。二者可能是终端设备、网络设备或者应用软 件,也可能是一个单独设备或者若干设备组合;②互操作性测试基于用户期望的功能,并由用户控制并观察测试结果。用户(Test Driver) 可以是人工操作也可以是软件程序;③互操作性测试在功能性接口上执行和观察,也就是说接口没有指定在协议级而是功能级上 。这些接口包括人机接口(Man-Machine Interfaces ,MMIs)、协议设备接口(protocol ser vice interfaces)、应用程序接口(Application Programming Interfaces , APIs)。

    互操作测试过程除了测试使用规范、测试设备和测试驱动与一致性测试不同以外,其它基本 与一致性测试类似。互操作测试过程主要包括两个部分:①开发互操作测试规范过程,通常由互操作者根据测试功能要点进行制定。该过程主要包 括以下内容:指定抽象测试架构、准备互操作特征声明(Interoperable Features Statemen t, IFS)草稿、声明测试套架构(Test Suite Structure, TSS)、写测试目的、写测试例、IF S定案;
    ②测试过程,主要包括以下内容:准备测试、具体测试、测试报告。

    
    3.3 协议一致性测试与互操作性测试的比较

    一致性测试和互操作测试都是测试协议实现重要而有效的方法,在某种程度上可以相互验证 ,但二者并不是完全一样,主要差异在于〔7〕:

    ①测试目的不同,一致性测试是确定被测实现是否与标准规定一致,而互操作测试是确定被 测设备之间基于某一协议的交互能力;②测试对象不同,一致性测试的对象是设备或者系统。而互操作测试的对象是设备;③测试级别不同,一致性测试是在协议 级.而互操作测试是在功能级;④测试效果不同,一致性测试适用所有协议实现,而互操作测试主要适用于被测设备。

    实际测试中,一致性测试通过并不能保证互操作测试一定可以通过。具体原因表现在三方面 :①标准方面:标准中错误与含糊内容;标准本身的兼容性问题;②实施方面:人为错误(如编程错误);对于标准理解不同;标准本身允许不同选项;③技术方 面:通信网络使用不同流量策略;设备兼容性问题;设备配置问题。 

    互操作测试可以证实被测系统中不同设备之间的互操作能力,但不能证实设备是否符合标准 。一致性测试可以证实设备是否符合标准,但不能保证设备之间可以互相通信。故此,互操 作测试不可能替代一致性测试,在互操作测试前必须首先进行一致性测试。一致性测试和互 操作测试是互为验证、互为补充的关系,只有把两者合理地结合才能完成完整的协议测试 。


    4 结束语

    自90年代协议测试技术发展以来,协议测试技术得到了广泛的应用。随着计算机网络发展特 别是开放型异构网络的迅猛发展,协议测试理论和技术的研究将更加重要。协议测试并非本 文描述的那么简单,在实际测试中需要针对测试例研究测试算法和理论。我认为随着互操作 性测试优越性的体现,互操作性测试的研究将越来越重要。基于一致性测试与互操作性测试 的关系,将二者结合进行协议测试也有待进一步研究。
    [参考文献]
    [1] 毕军,史美林.计算机网络协议测试及其发展[J].电信科学,1996,(12):P5 1~P54.
    [2] Information technology——Open Systems Interconnection——Conformanc e testing methodology and framework——Part 1: General concepts[S]. ISO/IEC 96 46-1:1994.
    [3] Scott Moseley, Farbum Scotus, Steve Randall, Anthony Wiles, In Pursu it of Interoperability[J]. the International Journal of IT Standards and Stand ardization Research, Vol. 2, No.2.July-Dec 2004, P34~P48.
    [4] ETSI TS 102 237-1, Telecommunications and Internet Protocol Harmoniz ation Over Networks (TIPHON) Release 4; Interoperability test methods and approa ches; Part 1: Generic approach to interoperability testing[S].V4.1.1 (2003-12 ).
    [5] ETSI EG 202 237, Methods for Testing and Specification (MTS);Interne t Protocol Testing (IPT);Generic approach to interoperability testing[S]. V1. 1.2 (2007-04).
    [6] Laurent Vreck, “ETSI IPv6 Testing Activities[R]”. ISPA “New Bus iness with IPv6”——Brussels-October,2007.
    [7] 落红卫,协议测试技术分析——一致性测试与互操作测试[J].电信网技术 ,2007,(3):58-60.

    上一篇文章:计算机系统的防雷措施及通信系统的接地 下一篇文章:脉冲功率源计算机控制技术
    告诉好友 | 打印此文 | 关闭窗口

    杂志社介绍 | 刊物介绍 | 联系我们 | 友情链接 | 版权申明 | 联系nmkj | 管理登陆 | 蒙ICP备07002189号

    国内统一刊号: CN15-1189/N | 国际标准刊号: ISSN-1007-6921 | 国内邮发代号: 16-36

    刊社地址: 呼和浩特新城西街141号科技大厦B座 | 邮政编码: 010010

    电话: 0471-6282195 6280620 | 传真: 0471-6280741 china_lowkey

  • 转载:Linux下打开txt文件乱码问题解决方案

    2012-08-14 20:37:55

    Linux下打开txt文件乱码问题解决方案

    原文地址:http://hi.baidu.com/haoqit913/item/62906b2d7b465f2943634a4b

    背景:

    有人从windows下传给你文件,你收到之后,在linux下打开发现中文全是乱码,这时候是不是很郁闷呢?

    问题原因:

    由于window下txt文件的编码方式为gbk,而linux下txt文件(txt 扩展名在linux下只起到标记作用)的编码方式是utf8(可能其他文件也是哟)

    解决方案:

    在linux系统下,我们用iconv命令解决这个问题;

    我先演示一下,然后在详细讲解iconv命令的使用方法:

    Redhat/CentOs/fedora系列:

    $ su -c 'iconv -f gbk -t utf8 xxx.txt >xxx.txt.utf8'

    Ubuntu系列:

    $ sudo iconv -f gbk -t utf8 xxx.txt >xxx.txt.utf8

    好,至此,问题基本能够解决了。

    su -c 和sudo 都是不同发行版的获取root权限的方法,不需要多讲,

           --from-code, -f encoding #从源编码
           Convert characters from encoding
           --to-code, -t encoding #到目的编码
           Convert characters to encoding

    xxx.txt 源文件

    > 输出

    xxx.txt.utf8 目的文件(可重命名)

    下面我们说一下iconv 命令使用方法

    $ man iconv 或者 iconv --help

    可以查看具体的说明,英文的,没关系很简单,遇到不会的单词,网页版有道帮你结局(这一步很重要,这也是你今后独立解决问题的必经之路)

  • 读书笔记--软件测试(1)--软件测试与质量保证的区别及软件测试原则

    2012-02-21 21:24:46


    软件测试与质量保证的区别

    软件测试人员的一项重要任务是提高软件质量,但不等于说软件测试人员就是软件质量保证人员,因为测试只是质量保证工作中的一个环节。

    软件质量保证和软件测试是软件质量工程的两个不同层面的工作。

    ●质量保证(QA):质量保证的重要工作是通过预防、检查与改进来保证软件质量。QA采用“全面质量管理”和“过程改进”的原理开展质量保证工作。所关注的是软件质量的检查与测量。虽然在QA的活动中也有一些测试活动,但所关注的是软件质量的检查与测量。QA的工作是软件生命周期的管理以及验证软件是否满足规定的质量和用户的需求,因此主要着眼于软件开发活动中的过程、步骤和产物,而不是对软件进行剖析找出问题或评估。

    ●软件测试:测试虽然也与开发过程紧密相关,但关心的不是过程的活动,而是对过程的产物以及开发出的软件进行剖析。测试人员要“执行”软件,对过程中的产物---开发文档和源代码进行走查,运行软件,以找出问题,报告质量。测试人员必须假设软件存在潜在的质量问题,测试中所做的操作是为了找出更多的问题,而不仅仅是为了验证每一件事是正确的。对测试中发现的问题的分析、追踪与回归测试也是软件测试中的重要工作,因此软件测试是保证软件质量的一个重要环节。

    软件测试原则

    ●所有的软件测试都应追溯到用户需求。

    ●应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭。

    由于软件的复杂性和抽象性,在软件生命周期各个阶段都可能产生错误,所以不应把软件测试仅仅看作是软件开发的一个独立阶段的工作,而应当把它贯穿到软件开发的各个阶段中。在软件开发的需求分析和设计阶段就应开始测试工作,编写相应的测试文档。同时,坚持在开发的各个阶段进行技术评审和验证,这样才能在开发过程中尽早发现和预防错误,杜绝某些缺陷和隐患,提高软件质量。只要测试在生命周期中进行的足够早,就能够提高被测软件的质量,这就是预防性测试的基本原则。

    ●完全测试是不可能的,测试需要终止。

    ●测试无法显示软件潜在的缺陷。

    ●充分注意测试中的群集现象。

    ●程序员应避免检查自己的程序。

    ●尽量避免测试的随意性。

    应该从工程的角度去理解软件测试,它是有组织、有计划、有步骤的活动。

  • CMM流程

    2011-02-25 14:24:47

    CMM是指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,  英文缩写为SW-CMM,简称CMM

    一、CMM的基本框架 

    1.CMM的设计思想 

        任何软件开发和软件企业的发展都离不开软件过程,而软件过程必然要经历一个从不成熟到成熟,从不完善到完善的发展过程。它不是一朝一夕就能成功的,需要持续不断的对软件过程进行改进,才能取得最终的成效。CMM就是根据这一指导思想设计出来的。为此,模型必需满足如下四点对企业的指导作用: 

    1)为了正确和有序地引导软件过程活动的开展,要建立一个能够有效地描述和表示的软件过程的改进框架,使其能够对各阶段软件过程的任务和管理起指导作用。 

    2)以产品质量的概念和软件工程的经验教训为基础,指导企业控制开发、维护软件的生产过程和如何制定一套与之相适应的软件工程及管理体系。 

    3)指导软件企业通过判断自身当前的过程成熟度,针对软件质量和软件过程提高中最为关键的问题,来选择过程的提高策略。 

    4)引导企业将注意力放在具体的和经过努力可实现的目标上,并努力通过模型中提供的措施和手段去实现这些目标。 

    2.CMM的分级标准 

    1) 建立分级标准的作用 

    CMM模型描述和分析了软件过程能力的发展程度,确立了一个软件过程成熟程度的分级标准,如图2.1示。其作用: 

    ①一方面软件组织利用它可以评估自己当前所处的位置——过程成熟程度,并以此提出严格的软件质量标准和改进过程的方法和策略,通过不断的努力达到更高的成熟度。 

    ②另一方面该标准也可作为用户对软件企业的一种评价标准,使之在选择软件开发商时不再是盲目的和无把握的。 

    2)CMM的分级结构及其过程描述 

    ①初始级:软件过程的特点是无秩序或说无定规的,有时甚至是混乱的。软件过程定义几乎处于无章法、无步骤可循的状态,软件产品所取得的成功往往依赖于极个别人的努力和机遇。 

    ②可重复级:已建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。对类似的应用项目,有章可循并能重复以往所取得的成功。 

    ③已定义级:用于管理的和工程的软件过程均已文档化、标准化,并形成了整个软件组织的标准软件过程。全部项目均采用与实际情况相吻合的、适当修改后的标准软件过程来进行操作。 

    ④已管理级:软件过程和产品质量有详细的度量标准。软件过程和产品质量得到了定量的认识和控制。 

    ⑤优化级:通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续地对促进过程进行改进。 

    除第一级外,每一级都设定了一组目标,如果达到了这组目标,则表明达到了这个成熟级别,自然可以向上一更为成熟的高一级别迈进。CMM体系不主张跨级别的进化,因为从第二级开始,每一个低级别的实现均是更高级别实现的基础。 

    3.CMM各级的主要特性 

    前面已经反复提到,CMM标准共分五个等级,从第一级到第五级分别为:初始级、可重复级、定义级、管理级和优化级,从低到高,软件开发生产的计划精度越来越高,每单位工程的生产周期越来越短,每单位工程的成本也越来越低。需要提出的是,任何一个成熟度级别的关键过程域集都是本级描述的关键过程域集和所有下级的关键过程域集的并集。如3级的关键过程域就应有13个不同的域,其中7个是3级自己包含的,6个属于2级成熟度,而4级应有15个域。 

    这五个级别具体内容包括: 

    第一级:初始级(The Initial Level) 


    初始级的软件机构缺乏对软件过程的有效管理,其软件项目的成功来源于个人英雄主义而非机构行为,因此它不是可重复的。 



    第二级:可重复级(The Repeatable Level) 

    概述: 

    第二级软件机构的主要特点是:项目计划和跟踪的稳定性,项目过程的可控性和以往成功的可重复性。更具体的说: 

    机构建立了管理软件项目的策略和实现这些策略的过程。 
    新项目的计划和管理基于类似项目的经验。 
    过程能力的增强基于以各个项目为基础的有纪律的基本过程管理。 
    不同的项目可有不同的过程,而对机构的要求是具有指导项目建立适当管理过程的策略。 
    每个项目都确定了基本的软件管理控制,包括: 
    基于前面项目的经验和新项目特点,做出现实的项目承诺(如预算、交付期、软件质量等); 
    软件项目管理者要跟踪开支、日程、软件功能; 
    满足承诺的过程中的出现的问题要及时发现,妥善解决; 
    定义了软件项目标准,且机构确保其被遵守。 

    构成: 

    本级的关键过程领域(KPA)包括: 
    需求管理(Requirements Management) 
    客户的需求是软件项目的基础。软件需求管理的目的是在客户和软件项目之间达成对客户需求的一致理解。 

    软件项目计划(Software Project Planning) 
    为软件工程和项目管理建立一个合理的计划。 

    软件项目的跟踪和监督(Software Project Tacking and Oversight) 
    使管理者对实际的软件项目进展过程有足够的了解,以在项目效能偏离计划太多是采取有效措施。 

    软件子合同管理(Software Subcontract Management) 
    选择合格的分包商,并有效管理之。 

    软件质量保证(Software Quality Assurance) 
    对软件项目过程及其间生产的各个产品进行监管以保证最终软件质量。 

    软件配置管理(Software Configuration Management) 
    在整个软件生命周期里建立并维护软件项目的工作产品的完整性。 

    第三级:已定义级(The Defined Level) 

    概述 

    第三级的主要特征在于软件过程已被提升成标准化过程,从而更加具有稳定性、可重复性和可控性。处于第三级的企业具有如下一些特征: 

    机构采用标准的软件过程,软件工程和管理活动被集成为一个有机的整体。标准化的目的是使之可使管理者和技术人员有效工作。 
    有一组人员专门负责机构的软件过程,并且在机构中有培训计划来确保stuff和manager有知识和技能完成所赋予的角色。 
    标准的软件过程结合项目的特点即形成定义的软件过程,它包括一组集成的定义良好的软件工程和管理过程。 
    一个定义良好的过程包括就绪准则、输入、完成工作过程、验证机制、输出和完成准则。 
    在已建立的产品线上cost, schedule, functionality 均可控制,软件质量被加以跟踪。 
    过程能力体现在在机构范围内对一个定义的软件过程活动、角色和责任的共同理解。 

    构成 : 

    第三级主要处理以下的KPA: 

    机构过程关注(Organization Process Focus) 
    确立机构对于改进机构的软件过程能力的软件过程活动的责任。 

    机构过程定义(Organization Process Definition) 
    开发和维护一组有用的软件过程assets和提供一个用于定义定量过程管理的有意义的数据的基础 

    培训计划(Training Program) 
    开发个体的技能和知识以使他们能够更加有效的完成他们的角色 

    集成软件管理(Integrated Software Management) 
    基于业务环境和项目的技术需要,从机构的标准软件过程和相关的过程assets经过剪裁,将软件工程和管理活动集成为一个有机的定义的软件过程。 

    软件产品工程(Software Product Engineering) 
    一致地完成定义良好的工程过程。它描述了项目的技术活动,如需求分析,设计,编码和测试。 

    组间协调(Intergroup Coordination) 
    确立软件工程组主动介入其它工程组以便项目能更好满足客户要求的手段 

    同行评审(Peer Reviews) 
    早而且有效的排除软件工作产品中的缺陷。它可通过inspection,structured walkthrough等手段进行。 

    概括来说,第三级企业的重点是Engineering processes and organizational support。 

    第四级:已管理级(The Managed Level) 

    概述: 

    第四级的软件机构中软件过程和软件产品都有定量的目标,并被定量地管理,因而其软件过程能力是可预测的,其生产的软件产品是高质量的。具体地说,第四季的机构具有如下特征: 

    软件过程和产品有定量质量目标。 
    重要的软件过程活动均配有生产率和质量度量; 
    数据库被用来收集和分析定义软件过程的数据; 
    项目的软件过程和质量的评价有定量的基础; 
    项目的产品和过程控制具有可预测性。 
    缩小过程效能落在可接受的定量界限内的偏差; 
    可区分过程效能的有效偏差和随机偏差; 
    面向新领域的风险是可知并被仔细管理; 

    构成: 

    本级的关键过程领域包括: 

    定量过程管理(Quantitative Process Management) 
         定量地控制软件项目的过程效能。 

    软件质量管理(Software Quality Management) 
          定量了解项目软件产品的质量,并达到既定的质量目标。 

    第五级:The Optimizing Level 

    概述 


    概括来说,第五级的主要特点是技术和过程改进被作为常规的业务活动加以计划和管理。处于第五级的企业具有如下一些特征: 

    机构集中于连续的过程改进 
    具有标识弱点和增强过程的手段。 
    采用过程数据分析使用新技术的代价效益并提出改进。 
    项目队伍能够分析出错原因并防止其再次出现。 
    防止浪费是第五级的重点。 
    改进的途径在于已有过程的增量改进和使用新技术和新方法的革新 

    构成: 

    缺陷预防(Defect Prevention) 
    识别出错原因,防止错误再现(通过改变定义的软件过程) 

    技术变更管理(Technology Change Management) 

    识别有益的新技术(工具、方法和过程),并按有序的方式将其转移至机构之中。其重点在于在变化的世界中有效的完成革新。 

    过程变更管理(Process Change Management) 
    连续改进机构所采用的软件过程,以改进软件质量,提高生产率和减少产品开发时间 

    概括来说,第五级企业的重点是连续的过程改进。 

    4.CMM内部结构和特性简述 

        上面提到了CMM把软件开发组织的能力成熟度分为五个等级。除了第1级外,其他每一级均由若干关键过程域组成,每个关键过程域中规定了5种公共特性:执行约定、执行能力、实施活动、度量和验证的标准。换句话说,每一个关键过程域由若干关键实践活动所描绘,这些实践活动以5个公共特性进行归类,这些公共特性是关键实践描述的对象、也是基础和依据。CMM给每个关键过程规定了一些具体目标,按5个公共特性归类的关键惯例是按该关键过程的具体目标选择和确定的。如果恰当地处理了某个关键过程涉及的全部关键惯例,这个关键过程的各项目标就达到了,也就表明该关键过程实现了。这种成熟度分级的优点在于,这些级别明确而清楚地反映了过程改进活动的轻重缓急和先后次序。(关于关键过程域、关键实践、公共特性等概念后面会有详细解释) 

    二、CMM与软件过程可视性 

    1.软件过程的概念 

    软件过程是人们用于开发和维护软件及其相关产品的一系列活动、方法、实践和革新。其外部视图如P23页图2.2所示。 

    2.软件过程可视性的重要性与级别 

        软件工程和CMM都强调软件过程可视性的极为重要性,软件工程强调用软件开发方法来解决软件生产中的质量与效率的问题,而CMM则追求软件组织成熟度的不断提高,组织管理的不断进化来使软件质量、生产效率和生产周期得到明显的改善,二者不仅目标相同,而且都强调开发的可视性来支持开发管理。因此,软件过程可视性的提高,就成为提高软件开发组织成熟级别的关键。 

        软件过程的成熟度是可视的,在CMM中分成五级,反映了其不断改进和逐步完善的过程。 

        在初始级中,整个软件过程形同一团黑云,对管理人员和用户而言,只能看到项目的要求和结果,不能看到项目的进展状况和项目的软件过程,是否满足要求要到交付时刻才能知晓。 

        过度到可重复级,软件过程的可视性有所好转,开发分阶段进行,用一系列的黑盒表示。用户需求和阶段产品在一定程度上可以控制。管理人员可在若干关键点设置管理活动和检查质量并作出反应,用户也可通过关键点了解项目进展情况。 

        发展到已定义级,黑盒的内部结构逐步显示出来,组织拥有标准软件过程并用于各软件项目中。因此,各管理人员明确自己在过程中的管理责任和任务,并能预见可能的风险,为此作出一定的准备。由于已定义级的过程提供了很好的可视性,项目外的用户也能快速地得到较为准确的情况。 

        在管理级,管理者可以根据客观的度量,预见过程的经费支出和其他情况,定量地、有目标地做出决定。用户也能定量地理解过程的能力和所存在的风险。整个软件过程可以定量地指导和控制。 

        进化到优化级,人们可以很清楚地看到软件过程的内部结构。为了提高生产率和质量,组织上已经形成了有效地、不断地、系统地改进方法,并且制度化。对现有过程的认识,不仅仅考虑到过程的可能变化所产生的影响,而是能自觉地识别那些不够有效和可能出错的活动,加以改进与替换,达到更进一步的效果。管理人员有能力评估和定量跟踪变化的影响和效果,用户与开发组织关系良好。 

    三、CMM的阶梯式进化框架 

    1.进化框架 

        CMM为软件企业的过程能力提供了一个阶梯式进化框架,它采用分层的方式来解释它的组成部分,以适应不同成熟度企业的需要,如图2.4示。在第二至第五个成熟等级中,每个等级包含一个内部结构的概念,关于内部结构详细描述将在下面CMM内部结构的一栏中进行。 

    1)初始级 初始级的软件过程是混乱无序的,对过程几乎没有定义,项目的执行是随意的甚至是混乱的,项目的成功完全依赖个人的才能和经验,没有组织、标准、规程的保证,质量评判没有客观基准,管理方式属于反应式的。也许,有些企业制定了一些软件工程规范,但往往也是执行得不彻底。纵使有较好的执行,但若这些规范未能覆盖基本的关键过程要求,且执行没有政策和资源等方面的保证时,那么它仍然被视为初始级。初始级是混沌的过程。 

    2)可重复级  根据多年的经验和教训,人们总结出软件开发的首要问题不是技术问题而是管理问题。因此,第二级的焦点集中在软件管理过程上。一个可管理的过程则是一个可重复的过程,一个可重复的过程则能逐渐进化和成熟。第二级的管理过程包括了需求管理、项目管理、质量管理、配置管理和子合同管理五个方面。其中项目管理分为计划过程和跟踪与监控过程两个过程。通过实施这些过程,从管理角度可以看到一个按计划执行的且阶段可控的软件开发过程。 

        实现二级(可重复级)已经不简单了。对一个软件企业来说,达到二级的要求就基本上进入了规模开发,开始跳出作坊式的开发模式,能把一个项目的经验或好的方法重现在下一个项目中,基本具备了一个现代化软件企业的基本架构和方法,具备了承接外包项目的能力。可重复级是经过训练的软件过程,其等级标志是分工合同化,主要工作内容为管理各种开发文档。可重复级的软件过程能力可归结为:规则化的或说定规的。 

        从二级一直往上走,是不间断的改进过程。效率不断在提高,时间控制更严格,品质更有保证,管理更有序。可以逐渐具备承接跨地区、跨部门的大型项目的实力。 

    3)已定义级 已定义级建立了组织的标准软件过程且已文档化,它包括了软件工程和管理过程的所有方面,集成为一个标准一致的有机整体,提供给各个项目剪裁使用。 

        在第二级仅定义了管理的基本过程,而没有定义执行的步骤标准。在第三级则要求制定企业范围的工程化标准,而且无论是管理还是工程开发都需要一套文档化的标准,并将这些标准集成到企业软件开发标准过程中去。所有开发的项目均需依据这个标准过程,剪裁出项目适宜的过程,并执行这些过程。过程的剪裁不是随意的,在使用前需经过企业有关人员的批准。定义级是标准一致的软件过程,等级标志是流程程序化,主要工作内容是管理软件开发过程。 

    4)已管理级 在已管理级,软件产品和软件过程均建立了量化的指标和质量的指标,评价软件过程的产品(最终产品和中间产品)和质量,是企业评价计划的一部分。 

        第四级的管理是量化的管理,是可量化级,其软件过程具有精确的定义、连贯的评价方法。所有过程需建立相应的度量方式,所有产品的质量(包括工作产品和提交给用户的产品)需有明确的度量指标。这些度量应是详尽的,且可用于理解和控制软件过程和产品,量化控制将使软件开发真正变成为一种工业生产活动。管理级是可预测的软件过程,等级标志是记录表格化,主要工作内容是度量软件开发过程和产品质量。第四级软件产品是高质量的。 

    5)优化级 第五级的目标是达到一个持续改善的境界。所谓持续改善是指可根据过程执行的反馈信息来改善下一步的执行过程,即优化执行步骤。软件过程的不断改进成为整个企业的主要着眼点和前进的动力。如果一个企业达到了这一级,那么表明该企业能够根据实际的项目性质、技术等因素,不断调整软件生产过程以求达到最佳。优化级是可持续改进的软件过程,等级标志是资源最优化,主要工作内容是提高软件企业资源的利用水平。 

        从效果而言,在上述不同阶段,软件开发 生产的成熟程度给软件企业带来了完全不同的效果。第一阶段到第五个阶段,软件开发生产的计划精度越来越高,每单位工程的生产周期越来越短,每单位工程的成本越来越低。 

    2.成熟度级别进化 

        每一级向上一级迈进的过程中都有其特定的改进计划,具体情况如下。(各级的过程特征及其改进方向详见P27~P31相关表) 

    1)初始级的改进方向是:①建立项目过程管理,实施规范化管理,保障项目的承诺;②进行需求管理方面的工作,建立用户与软件项目之间的沟通,使项目真正反映用户的要求;③建立各种软件项目计划,如软件开发计划、软件质量保证计划、软件配置管理计划、软件测试计划、风险管理计划和过程改进计划等;④积极开展软件质量保证活动(SQA)。 

    2)可重复级的改进方向是:①不再按项目制定软件过程,而是总结各种项目的成功经验,使之规则化,把具体经验归纳为全组织的标准软件过程。把改进组织的整体软件过程能力的软件过程活动,作为软件开发组织的责任;②确定全组织的标准软件过程,把软件工程及管理活动集成到一个稳固确定的软件过程中,从而可以跨项目改进软件过程效果,也可以作为软件过程剪裁的基础;③建立软件工程过程小组(SPEG)长期承担评估与调整软件过程的任务,以适应未来软件项目的要求;④积累数据,建立组织的软件过程库及软件过程相关的文档;⑤加强培训。 

    3)已定义级的改进方向是:①着手软件过程的定量分析,以达到定量地控制软件项目过程的效果;②通过软件的质量管理达到软件的质量目标。 

    4)已管理级的改进方向是:①防范缺陷,不仅在发现了问题时能及时改进,而且应采取特定行动防止将来出现这类缺陷;②主动进行技术改革管理、标识、选择和评价新技术,使有效的新技术能在开发组织中实施;③进行过程变更管理,定义过程改进的目的,经常不断地进行过程改进。 

    5)优化级的改进目方向是:①保持持续不断的软件过程改进。CMM5级是优化级,之所以称之为优化级不是因为它比第4级更高,它强调的是一个持续不断的优化过程。如果你在某一个阶段停顿下来,那么不进则退,你就有可能会掉下去。 

    3.成熟度举例——软件成熟度企业与不成熟企业的一个侧影 

        大家都见过或听说过某些软件企业人才跳槽后的故事吧。的确存在这样的事情,这些软件企业当出现一些关键的开发人员跳槽离开后,进行中的项目便瘫痪了下来,甚至前功尽弃,已运行中的项目也难以继续维护,给企业造成很大的损失。这就是不成熟企业的一个特征。 

        而在CMM框架中,运用2级中的一个基本软件工程(KPA)就可以使员工自觉而规范地管理软件生产过程中所有的资源、阶段性产品、产品源代码、文件以及最终生成的产品。严格遵循这套管理方法,程序员写完一段代码,经过一定测试之后,一旦提交到某个公共地方时,这个东西就不是你的了,已经成为项目小组或者是整个企业的了,而且跟随着完善的文档控制。如果你想对它进行任何修改,都要按照规范的程序把它从公共区域提取出来。规范的过程控制,将软件企业由于人员流动带来的风险降到了最低,同时还促使他们养成良好的职业素养。 

    四、CMM的内部结构 

    1.内部结构组成 

        CMM为软件过程能力的提高提供了一条改进的途径。CMM由5个成熟度等级组成,每个成熟度等级有着各自的功能。除第一级外,CMM的每一级按完全相同的内部结构构成的,不同的成熟度等级反映了软件组织的软件过程能力和该组织可能实现预期结果的程度。 

        在CMM中,除第1级外,每个成熟度等级都标志了该级别的软件组织所具有的过程能力。每个成熟度等级(第1级除外)规定了若干不同的关键过程域,一个软件组织如果希望达到某一个成熟度级别,就必须完全满足关键过程域所规定的要求,即满足关键过程域的目标。每一个关键过程域都含有属于5种类别(公共特性)中的若干关键实践,通过实现这些关键实践来达到关键过程域的目标。 

    2.各构成要素描述 

    1)关键过程域(KPA):是指在有关基础设施的保证支撑下的一系列相互关联的操作活动,这些活动反映了一个软件组织改进软件过程时必须集中力量改进的几个方面。可以简单地说,关键过程域是互相关联的若干软件实践活动和有关基础设施的一个集合。换句话说,关键过程区域标识了达到某个成熟度等级时所必须满足的条件。在CMM中一共有18个关键过程域,分布在第二至五级中,每个关键过程域规定了一个(组)必须满足的目标,并由五个公共特性归类的若干关键实践活动描述实现之。 

    2)目标:是指某个关键过程域中的关键实践,它表示每一个关键过程域的范围、边界和意图。目标被用来判断一个组织或项目是否有效地实现了某个特定的关键过程区域所规定的内容,即目标确定了关键过程区域的界限、范围、内容和关键实践。 

    每一个KPA都规定了一组目标,若这组目标在每一个项目都能实现,则说明企业满足了该KPA的要求。若满足了一个级别的所有KPA要求,则表明达到了这个级别所要求的能力。例如,可重复级中需求管理关键过程域的目标是:在软件需求上建立、维护同用户的协议;软件项目计划关键过程域的目标则为:建立一个为开展和管理软件工程的合理设计;又如,软件项目跟踪和监控KPA的目标是:提供对实际进程的可见和监督,以便及时采取纠正措施。 

    3)公共特性:表征各种实践活动的分类,一共分为五类。这些特性(有时又称属性)有效地指出了一个关键过程域的实现范围、结构要求和实施内容。具体是: 

    ①执行约定(commitment to perform):又称实施保证,实施保证是企业为了建立和实施相应KPA所必须采取的活动,这些活动主要包括制定企业范围的政策和高层管理的责任。 

    ②执行能力(ability to perform):执行能力是企业实施KPA的前提条件。企业必须采取措施,在满足了这些条件后,才有可能执行KPA的执行活动。实施能力一般包括资源保证、人员培训等内容。 

    ③实施活动(actives performed):实施活动也叫执行活动,执行过程描述了执行KPA所需求的必要角色、任务和步骤。在五个公共属性中,执行活动是唯一一项由项目来执行相关的属性,其余四个属性则涉及企业CMM能力基础设施的建立。执行活动一般包括计划、执行的任务、任务执行的跟踪以及改进措施等。 

    ④度量和分析(measurement and analysis):度量分析描述了过程的度量和度量分析要求。典型的度量和度量分析的要求是确定执行活动的状态和执行活动的有效性。 

    ⑤验证实施(verifying implementation):验证实施是验证执行活动是否与所建立的过程一致。实施验证涉及到管理的评审和审计以及质量保证活动。实施验证活动可通过管理和软件质量保证进行核查。 

    4)关键实践(KP):是指关键过程域中的一些主要实践活动。具体就是指为达到关键过程目标,建立起那些对软件过程活动起关键作用的方针、规程、措施、标准、活动以及相关基础设施的实践。每个关键过程域由若干关键实践组成,通过这些关键实践来达到关键过程域的目标。一般情况下,关键实践描述了应该“做什么”,但并不规定“如何做”去达到这些目标。有关关键实践的举例: 

    例如:可重复级需求管理关键过程域中,记录和管理系统需求的策略的实践活动,就是一个关键实践(执行约定);建立分析责任和分配系统需求这一实践活动,也是该过程域的一个关键实践(执行能力);还有,分配需求、提供资源和资金以及开展需求培训(执行能力),也都是该过程域的一些关键实践活动。当然,该过程域还有度量需求管理活动状态(度量与分析)…… 

    在一些文献中使用了“关键惯例”、“优秀实践”等词。关键惯例与关键实践在概念上基本相同,只是“关键惯例”似乎更加突出了使用以往成功经验和成果之意。“优秀实践”也大概如此。 

    上面提到了CMM把软件开发组织的能力成熟度分为5个等级。除了第1级外,其他每一级由几个关键过程域组成。每一个关键过程域都由上述分为5种公共特性的实践活动予以描述。关键过程域的分类详见图2.7。它列出了四个成熟度等级的共18个关键过程域。 

    3.功能综述 

    从上面所示的结构模型可以看出,CMM包括两大部分“软件能力成熟度模型”和“能力成熟度模型的关键惯例”。“软件能力成熟度模型”主要是描述此模型的结构,并且给出该模型的基本构件的定义。“能力成熟度模型的关键惯例”详细描述了每个“关键过程方面”涉及的“关键惯例”。这里“关键过程方面”是指一组相关联的活动,也就是关键过程域;每个软件能力成熟度等级包含若干个对该成熟度等级至关重要的过程方面,它们的实施对达到该成熟度等级的目标起到保证作用。这些过程域就称为该成熟度等级的关键过程域。反之,非关键过程域是指对达到相应软件过程成熟度等级的目标不起关键作用。可以归纳为:关键过程域是互相关联的若干软件实践活动和有关基础设施的一个集合。而“关键惯例”是指使关键过程方面得以有效实现和制度化的作用最大的基础设施和活动,对关键过程的实践起关键作用的方针、规程、措施、标准、活动以及相关基础设施的建立。关键实践一般只描述“做什么”而不强制规定“如何做”。各个关键惯例按每个关键过程方面的五个“公共特性”【执行约定(对执行该过程的承诺),执行能力(执行该过程的能力),实施活动(该过程中要执行的活动),度量和分析(对该过程执行情况的度量和分析),验证实施(证实所执行的活动符合该过程)】归类,逐一详细描述。当作到了某个关键过程的全部关键惯例就认为实现了该关键过程,如果实现了某成熟度级别以及比其低级所含的全部关键过程就认为达到了该级。 

    CMM总结:五层结构图 

    我们看到,在第五级上,技术和过程的改进像普通商业活动一样有计划、有管理地进行。由于组织不断的致力于改进过程的能力,所以软件开发组织的能力可持续改进。这种改进不仅表现在对存在的软件过程逐步改进,不表现在采用新技术和新方法方面的革新。 

    画一个图吧:(CMM的五层结构图) 
              ----------------- 
             /   优 化 级     / 
            /      (5)       / 
            ----------------- 
                   ↑ 
                   | 不断改进的过程 
                   | 
              ----------------- 
             / 可 管 理 级    / 
            /      (4)       / 
            ----------------- 
                   ↑ 
                   | 能预见的过程 
                   | 
              ----------------- 
             /   确 定 级     / 
            /      (3)       / 
            ----------------- 
                   ↑ 
                   | 标准一致的过程 
                   | 
              ----------------- 
             /  可 重 复 级   / 
            /      (2)       / 
            ----------------- 
                   ↑ 
                   | 有纪律的过程 
                   | 
              ----------------- 
             /  初 始 级      / 
            /     (1)        / 
            ----------------- 
  • dhcp服务器安装及配置教程

    2011-02-25 11:01:01

    以下是引用片段:
    先说一下什么是“DHCP”有什么作用。

    1.1 DHCP是什么?
    动态主机分配协议(DHCP)是一个简化主机IP地址分配管理的TCP/IP 标准协议。用户可以利用DHCP服务器管理动态的IP地址分配及其他相关的环境配置工作(如:DNS、WINS、Gateway的设置)。

    在使用TCP/IP协议的网络上,每一台计算机都拥有唯一的计算机名和IP地址。IP地址(及其子网掩码)使用与鉴别它所连接的主机和子网,当用户将计算机从一个子网移动到另一个子网的时候,一定要改变该计算机的IP地址。如采用静态IP 地址的分配方法将增加网络管理员的负担,而DHCP可以让用户将DHCP服务器中的IP 地址数据库中的IP 地址动态的分配给局域网中的客户机,从而减轻了网络管理员的负担。用户可以利用Windows 2000 服务器提供的DHCP服务在网络上自动的分配IP地址及相关环境的配工作。

    在使用DHCP时,整个网络至少有一台NT 服务器上安装了DHCP服务,其他要使用DHCP功能的工作站也必须设置成利用DHCP获得IP地址。如图 1所示是一个支持DHCP的网络实例!

    一、DHCP服务器配置

    设置DHCP服务器的(TCP/IP)属性

    安装好DHCP 服务器

    授权DHCP

    授权成功,箭头变成绿色的

    新建作用域

    设置作用域名

    配置作用域地址范围

    指定要排除的IP

    设定租约期限

    配置服务器选项,它具有全局意义,对所有作用域有效

    设置全局选项的DNS服务项

    设置作用域的选项,它只对本作用域有效

    设置作用域的网关选项

    等所有设置完成后,再启动作用域,以防止客户机获取到不完整的信息

    以下为设置好的作用域参数

    由于还没有客户机获取IP,所以地址租约项为空

    二、客户机配置及验证

    设置TCP/IP属性为自动获取

    进入MSDOS状态,使用 ipconfig /release 命令释放IP

    使用 ipconfig /renew 命令获取IP,如图显示,获取成功,获取到地址池可用IP的第一个IP,可推论DHCP是按顺序分配IP的

    使用 ipconfig /all 命令详细查看客户机的TCP/IP信息,网关和DNS跟服务器设置的一样

    再次查看DHCP服务器的地址租约项,发现已经有了租约项目,就是刚才分配给客户机的IP

    三 、进一步配置和验证

    先在DHCP服务器上建立保留项,我们为刚才的客户机保留一个IP,192.168.1.88

    在客户机上先释放再获取IP,显示获取到我们刚才保留给它的IP

    四、DHCP相关配置参数的备份和还原

    选择备份

    选择备份路径,默认为 c:\windows\system32\dhcp\backup
    这种方法只能备份作用域的信息

    还需要通过备份注册表中的项来备份全局参数
    \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DHCPServer\Parameters

    将备份好的注册表项和开始的bankup档夹复制到需要还原的DHCP服务器上

    执行还原操作

    导入备份的注册表项

    查看DHCP服务器的各个项目,已经和正常状态一样了,还原成功

  • Windows 下DHCP服务器配置指南

    2011-02-25 10:49:50

    Windows 2003下DHCP服务器配置指南


        在企业网络中,网管员的重要工作之一就是如何有效的管理局域网内部的IP地址。计算机可以通过静态手工分配IP地址和DHCP服务器动态分配IP地址两种方式管理局域网IP地址,在局域网内机器不多和IP地址不会频繁改动的情况下,我们网管员朋友都会使用静态分配IP地址,这样做的好处是可以对用户的IP地址有统一的分配,便于记录用户的IP地址信息。今天,我们就以Windows 2003操作系统为例介绍DHCP服务器的高级配置技术,为网管员朋友合理有效的管理网络IP地址提供帮助。

        1、 备份、还原DHCP服务器配置信息

        在网络管理工作中,备份一些必要的配置信息是一项重要的工作,以便当网络出现故障时,能够及时的恢复正确的配置信息,保障网络正常的运转。在配置DHCP服务器时也不例外,Windows 2003服务器操作系统中,也为我们提供了备份和还原DHCP服务器配置的功能。

        第一步:打开DHCP控制台,在控制台窗口中,展开“DHCP”选项,选择已经建立好的DHCP服务器,右键单击服务器名,选择“备份”。(如图1)

     
    图1:选择要备份配置信息的服务器(点击看大图)

        第二步:这时便会弹出一个要求用户选择备份路径的选项。默认情况下,DHCP服务器的配置信息是放在系统安装盘的“windows\system32\dhcp\backup”目录下。如有必要,我们可以手动更改备份的位置。点击确定后就完成了对DHCP服务器配置文件的备份工作。(如图2)
    图2:选择要备份配置文件的位置

        第三步:当出现配置故障时,我们需要还原DHCP服务器的配置信息,右键单击DHCP服务器名,选择“还原”选项即可,同样会有一个确定还原位置的选项,选择我们备份时使用的文件夹单击“确定”按钮,这时会有一个“关闭和重新启动服务”的对话框,选择“确定”后,DHCP服务器就会自动恢复到最初的备份配置。(如图3)
     
    图3:确定停止和重新启动DHCP服务

        2、 移植DHCP服务器数据库

        在有些使用相同DHCP服务器配置又不在同一台服务器的时候,这时网管员朋友会考虑使用重新配置,但手工重新配置会比较麻烦,这里我们为大家介绍一种最简单有效的方式:移植DHCP服务器数据库。

        Windows 2003对windows 2003的DHCP服务器数据库移植:

        第一步:首先在已经配置好DHCP服务器的机器上,点击“开始”菜单,打开运行对话框,输入“CMD”命令。(如图4)

    图4:在“运行”对话框中输入“CMD”

        第二步:在弹出的“命令提示符”对话框中,我们需要使用“NETSH”命令实现DHCP服务器的配置备份和移植。输入“netsh dhcp server export e:\dhcp.txt all”命令,将DHCP服务器数据库信息备份到E盘,直到屏幕显示“命令成功完成”的提示返回提示符下,就表示已经将DHCP服务器数据库信息成功的备份到E盘当中,再次打开E盘,就会看到一个名为DHCP服务器的文本文件。(如图5)
     
    图5:备份DHCP服务器数据库信息(点击看大图)

        第三步:将备份的“DHCP.TXT”文件通过网络或者可移动介质拷贝到另一台服务器c盘当中,这台机器之前已经安装了DHCP服务,但未进行任何配置,进入“命令提示符”状态下,输入“netsh dhcp server import c:\dhcp.tex all”命令,点击回车后,直到出现“命令成功完成”的提示行。(如图6)
     
    图6:导入备份的DHCP数据库文件(点击看大图)

        我们再次打开DHCP控制台,这时就会看到刚才备份的信息已经能够正常在这台服务器上使用了。(如图7)
    图7:被导入后的DHCP服务器

        3、 DHCP管理用户

        基于安全性的考虑,Windows服务器操作系统都采用多用户管理方式,比较安全的作法是使用一个Administrator帐户,别建一个权限较低的帐户。在一般的操作状态下用用权限较低的用户,避免因Administrator帐户权限过高引起的误操作,如何使这个权限较低的用户能够管理DHCP服务器呢?

        第一步:在控制面板的管理工具中选择“计算机管理”,在打开的对话框中单击“本地用户和组”选项。(如图8)

     
    图8:选择本地用户和组(点击看大图)

        第二步:我们需要先建立一个权限较低的用户,这里我们建立一个“adan”的用户,隶属于“user”用户组。(如图9)
      
    图9:建立一个低权限用户(点击看大图)

        第三步:接下来我们就需要为这个adan的用户增加对DHCP服务器的控制权限,打开组管理选项,在右侧的用户组中双击“DHCP Administrators”键值。(如图10)
    图10:双击DHCP Administrators键值(点击看大图)

        在弹出的DHCP Administrators对话框中,单击添加。
    图11:DHCP Administrators对话框

        最后将刚才建立的adan用户添加到DHCP管理员用户组,通过这样的设置,adan这个User组用户,就有了管理DHCP服务器的权限。(如图12)
    图12:添加DHCP管理用户

        4、 DHCP服务器的IP地址与MAC地址绑定策略

        在网络管理的过程当中,我们经常会遇到一些用户私自更改IP地址,而造成IP地址冲突,引起其他用户无法上网,通常在这种情况下我们网管朋友会采用IP地址与MAC地址绑定的策略来防止IP地址被盗用。在DHCP服务器中,我们通常的策略是会保留一些IP地址给一些特殊用途的网络设备,如路由器、打印服务器等等,如果客户机私自将自己的IP地址更改为这些地址,就会造成这些设备无法正常工作。这时,我们就需要合理的配置这些IP地址与MAC地址进行绑定,来防止保留的IP地址被盗用。

        第一步:了解客户机的MAC地址

        在想要实现绑定的客户机的“开始”-“运行”中输入“CMD”命令,打开Windows 2003的命令提示符窗口。然后输入“IPCONFIG /ALL”查看网络的配置信息,其中有一项NIC后面的十六进制数便是这台机器的MAC地址信息。(如下图描红部分)

     
    图13:查看客户机的MAC地址(点击看大图)

        第二步:实现IP地址与MAC地址绑定策略

        打开DHCP服务器控制台,展来已经建立好的DHCP服务器,右键单击“保留”选项,这时我们选择“新建保留”选项。(如下图)

    图14:选择新建保留选项(点击看大图)

        出的对话框中,在“名称”里输入保留的计算机名,在“IP地址”的选项中,是需要绑定MAC地址的IP地址,这里我们输入网关的地址192.168.0.1,在“MAC地址”的选项当中,将之前在客户机中看到的MAC地址添加到其中。这样,我们就为网络上的网关设备路由器添加了一个MAC地址绑定,就再也不会出现这个地址被盗用的情况了。
    图15:实现保留IP地址与其MAC地址绑定

        5、 跨子网间的DHCP服务器中继代理

  • DHCP基础

    2011-02-25 10:37:29

    结构介绍
      
       [相关图片]

    相关图片
    [1]
    DHCP 是 Dynamic Host Configuration Protocol(动态主机配置协议)缩写,它的前身是 BOOTP。BOOTP 原本是用于无磁盘主机连接的网络上面的:网络主机使用 BOOT ROM 而不是磁盘起动并连接上网络,BOOTP 则可以自动地为那些主机设定 TCP/IP 环境。但 BOOTP 有一个缺点:您在设定前须事先获得客户端的硬件地址,而且,与 IP 的对应是静态的。换而言之,BOOTP 非常缺乏 "动态性" ,若在有限的 IP 资源环境中,BOOTP 的一对一对应会造成非常可观的浪费。 DHCP 可以说是 BOOTP 的增强版本,它分为两个部份:一个是服务器端,而另一个是客户端。所有的 IP 网络设定数据都由 DHCP 服务器集中管理,并负责处理客户端的 DHCP 要求;而客户端则会使用从服务器分配下来的IP环境数据。比较起 BOOTP ,DHCP 透过 "租约" 的概念,有效且动态的分配客户端的 TCP/IP 设定,而且,作为兼容考虑,DHCP 也完全照顾了 BOOTP Client 的需求。 DHCP 的分配形式 首先,必须至少有一台 DHCP 工作在网络上面,它会监听网络的 DHCP 请求,并与客户端磋商 TCP/IP 的设定环境。它提供三种 IP 定位方式:
    编辑本段地址分配
    Manual Allocation
      网络管理员为某些少数特定的Host绑定固定IP地址,且地址不会过期
    Automatic Allocation
      自动分配,其情形是:一旦 DHCP 客户端第一次成功的从 DHCP 服务器端租用到 IP 地址之后,就永远使用这个地址。
    Dynamic Allocation
      动态分配,当 DHCP 第一次从 DHCP 服务器端租用到 IP 地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放(release)这个 IP 地址,以给其它工作站使用。当然,客户端可以比其它主机更优先的更新(renew)租约,或是租用其它的 IP 地址。 动态分配显然比自动
      
       [相关图片]

    相关图片
    分配更加灵活,尤其是当您的实际 IP 地址不足的时候,例如:您是一家 ISP ,只能提供 200 个IP地址用来给拨接客户,但并不意味着您的客户最多只能有 200 个。因为要知道,您的客户们不可能全部同一时间上网的,除了他们各自的行为习惯的不同,也有可能是电话线路的限制。这样,您就可以将这 200 个地址,轮流的租用给拨接上来的客户使用了。这也是为什么当您查看 IP 地址的时候,会因每次拨接而不同的原因了(除非您申请的是一个固定 IP ,通常的 ISP 都可以满足这样的要求,这或许要另外收费)。当然,ISP 不一定使用 DHCP 来分配地址,但这个概念和使用 IP Pool 的原理是一样的。 DHCP 除了能动态的设定 IP 地址之外,还可以将一些 IP 保留下来给一些特殊用途的机器使用,它可以按照硬件地址来固定的分配 IP 地址,这样可以给您更大的设计空间。同时,DHCP 还可以帮客户端指定 router、netmask、DNS Server、WINS Server、等等项目,您在客户端上面,除了将 DHCP 选项打勾之外,几乎无需做任何的 IP 环境设定。
    编辑本段工作原理
      根据客户端是否第一次登录网络,DHCP 的工作形式会有所不同。
      第一次登录的时候:
    寻找 Server
      当 DHCP 客户端第一次登录网络的时候,也就是客户发现本机上没有任何 IP 数据设定,它会向网络发出一个 DHCP DISCOVER 封包。因为客户端还不知道自己属于哪一个网络,所以封包的来源地址会为 0.0.0.0 ,而目的地址则为 255.255.255.255 ,然后再附上 DHCP discover 的信息,向网络进行广播。 在 Windows 的预设情形下,DHCP discover 的等待时间预设为 1 秒,也就是当客户端将第一个 DHCP discover 封包送出去之后,在 1 秒之内没有得到响应的话,就会进行第二次 DHCP discover 广播。若一直得不到响应的情况下,客户端一共会有四次 DHCP discover 广播(包括第一次在内),除了第一次会等待 1 秒之外,其余三次的等待时间分别是 9、13、16 秒。如果都没有得到 D
       [相关图片]

    相关图片
    HCP 服务器的响应,客户端则会显示错误信息,宣告 DHCP discover 的失败。之后,基于使用者的选择,系统会继续在 5 分钟之后再重复一次 DHCP discover 的过程。
    提供 IP 租用地址
      当 DHCP 服务器监听到客户端发出的 DHCP discover 广播后,它会从那些还没有租出的地址范围内,选择最前面的空置 IP ,连同其它 TCP/IP 设定,响应给客户端一个 DHCP OFFER 封包。 由于客户端在开始的时候还没有 IP 地址,所以在其 DHCP discover 封包内会带有其 MAC 地址信息,并且有一个 XID 编号来辨别该封包,DHCP 服务器响应的 DHCP offer 封包则会根据这些资料传递给要求租约的客户。根据服务器端的设定,DHCP offer 封包会包含一个租约期限的信息。
    接受 IP 租约
      如果客户端收到网络上多台 DHCP 服务器的响应,只会挑选其中一个 DHCP offer 而已(通常是最先抵达的那个),并且会向网络发送一个DHCP request广播封包,告诉所有 DHCP 服务器它将指定接受哪一台服务器提供的 IP 地址。 同时,客户端还会向网络发送一个 ARP 封包,查询网络上面有没有其它机器使用该 IP 地址;如果发现该 IP 已经被占用,客户端则会送出一个 DHCPDECLIENT 封包给 DHCP 服务器,拒绝接受其 DHCP offer ,并重新发送 DHCP discover 信息。 事实上,并不是所有 DHCP 客户端都会无条件接受 DHCP 服务器的 offer ,尤其这些主机安装有其它 TCP/IP 相关的客户软件。客户端也可以用 DHCP request 向服务器提出 DHCP 选择,而这些选择会以不同的号码填写在 DHCP Option Field 里面:
      换一句话说,在 DHCP 服务器上面的设定,未必是客户端全都接受,客户端可以保留自己的一些 TCP/IP 设定。而主动权永远在客户端这边。
    租约确认
      当 DHCP 服务器接收到客户端的 DHCP request 之后,会向客户端发出一个
      
       [相关图片]

    相关图片
    DHCPACK 响应,以确认 IP 租约的正式生效,也就结束了一个完整的 DHCP 工作过程。
      DHCP 发放流程第一次登录之后: 一旦 DHCP 客户端成功地从服务器哪里取得 DHCP 租约之后,除非其租约已经失效并且 IP 地址也重新设定回 0.0.0.0 ,否则就无需再发送 DHCP discover 信息了,而会直接使用已经租用到的 IP 地址向之前之 DHCP 服务器发出 DHCP request 信息,DHCP 服务器会尽量让客户端使用原来的 IP 地址,如果没问题的话,直接响应 DHCPack 来确认则可。如果该地址已经失效或已经被其它机器使用了,服务器则会响应一个 DHCPNACK 封包给客户端,要求其重新执行 DHCP discover。 至于 IP 的租约期限却是非常考究的,并非如我们租房子那样简单, 以 NT 为例子:DHCP 客户端除了在开机的时候发出 DHCP request 请求之外,在租约期限一半的时候也会发出 DHCP request ,如果此时得不到 DHCP 服务器的确认的话,客户端还可以继续使用该 IP ;当租约期过了87.5%时,如果客户端仍然无法与当初的DHCP服务器联系上,它将与其它DHCP服务器通信。如果网络上再没有任何DHCP服务器在运行时,该客户端必须停止使用该IP地址,并从发送一个Dhcpdiscover数据包开始,再一次重复整个过程。要是您想退租,可以随时送出 DHCPRELEASE 命令解约,就算您的租约在前一秒钟才获得的。
      跨网络的 DHCP 运作 从前面描述的过程中,我们不难发现:DHCP DISCOVER 是以广播方式进行的,其情形只能在同一网络之内进行,因为 router 是不会将广播传送出去的。但如果 DHCP 服务器安设在其它的网络上面呢?由于 DHCP 客户端还没有 IP 环境设定,所以也不知道 Router 地址,而且有些 Router 也不会将 DHCP 广播封包传递出去,因此这情形下 DHCP DISCOVER 是永远没办法抵达 DHCP 服务器那端的,当然也不会发生 OFFER 及其它动作了。要解决这个问题,我们可以用 DHCP Agent (或 DHCP Proxy )主机来接管客户的 DHCP 请求,然后将此请求传递给真正的 DHCP 服务器,然后将服务器的回复传给客户。这里,Proxy 主机必须自己具有路由能力,且能将双方的封包互传对方。 若不使用 Proxy,您也可以在每一个网络之中安装 DHCP 服务器,但这样的话,一来设备成本会增加,而且,管理上面也比较分散。当然喽,如果在一个十分大型的网络中,这样的均衡式架构还是可取的。视您的实际情况而定了。
    编辑本段授权操作
      出于对网络安全管理的考虑,并不是在Windows 2000Server中安装了DHCP功能后就能直接使用,还必须进行授权操作,未经授权操作的服务器无法提供DHCP服务。对DHCP服务器授权操作的过程如下: 1.依次点击“开始→程序→管理工具→DHCP”,打开DHCP控制台窗口。
      2.在控制台窗口中,用鼠标左键点击选中服务器名,然后单击右键,在快捷菜单中选中“授权”,此时需要几分钟的等待时间。注意:如果系统长时间没有反应,可以按F5键或选择菜单工具中的“操作”下的“刷新”进行屏幕刷新,或先关闭 DHCP控制台,在服务器名上用鼠标右键点击。如果快捷菜单中的“授权”已经变为“撤消授权”,则表示对DHCP服务器授权成功。此时,最明显的标记是服务器名前面红色向上的箭头变成了绿色向下的箭头。这样,这台被授权的DHCP服务器就有分配IP的权利了。
    编辑本段封包格式
      以下为各字段的简要说
      
       [相关图片]

    相关图片
    明:
      OP
      若是 client 送给 server 的封包,设为 1 ,反向为 2 。 HTYPE
      硬件类别,Ethernet 为 1 。
      HLEN
      硬件地址长度, Ethernet 为 6 。
      HOPS
      若封包需经过 router 传送,每站加 1 ,若在同一网内,为 0 。
      TRANSACTION ID
      DHCP REQUEST 时产生的数值,以作 DHCPREPLY 时的依据。
      SECONDS
      Client 端启动时间(秒)。
      FLAGS
      从 0 到 15 共 16 bits ,最左一 bit 为 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用。
      ciaddr
      要是 client 端想继续使用之前取得之 IP 地址,则列于这里。
      yiaddr
      从 server 送回 client 之 DHCP OFFER 与 DHCPACK 封包中,此栏填写分配给 client 的 IP 地址。
      siaddr
      若 client 需要透过网络开机,从 server 送出之 DHCP OFFER、DHCPACK、DHCPNACK 封包中,此栏填写开机程序代码所在 server 之地址。
      giaddr
      若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0 。
      chaddr
      Client 之硬件地址。
      sname
      Server 之名称字符串,以 0x00 结尾。
      file
      若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。
      options
      允许厂商定议选项(Vendor-Specific Area),以提供更多的设定信息(如
      
       [相关图片]

    相关图片
    :Netmask、Gateway、DNS、等等)。其长度可变,同时可携带多个选项,每一选项之第一个 byte 为信息代码,其后一个 byte 为该项数据长度,最后为项目内容。 CODE LEN VALUE 此字段完全兼容 BOOTP ,同时扩充了更多选项。其中,DHCP 封包可利用编码为 0x53 之选项来设定封包类别:
      项值 类别
      1 DHCP DISCOVER
      2 DHCP OFFER
      3 DHCP REQUEST
      4 DHCPDECLIENT
      5 DHCPACK
      6 DHCPNACK
      7 DHCPRELEASE
      DHCP 的选项非常多,有空请查阅 RFC 或相关文献,并好好理解,这里不再叙述了。
    编辑本段DHCP 协议
      RFC-951、RFC-1084、RFC-1123、RFC-1533、RFC-1534、RFC-1497、RFC-1541
      DHCP是可自动将IP位址指派给登入TCP/IP网络的用户端的一种软件,(此种IP位址称为「动态IP位址」)。这种软件通常是在路由器及其他网络设备上执行的。依照预先设定,您的GateLock路由器设定为使用DHCP,因此就无须手动指派永久IP位址给网络上的每个设备。建议不要改变这个设置,这样您的个人电脑就可以被分辨为DHCP服务器[2]。
      1 dhcpdiscover: 此为client开始DHCP过程中的第一个请求报文
      2 dhcpoffer : 此为server 对dhcpdiscover 报文的响应
      3 dhcprequst : 此为client 对dihcpoffer 报文的响应
      4 dhcpdeclient: 当client发现server 分配给它的IP地址无法使用,如 IP地址发生冲突时,将发出此报文让server禁止使用这次分配的IP地址。
      5 dhcpack : server对 dhcprequst 报文的响应,client收到此报文后才真正获得了IP地址和相关配置信息。
      6 dhcpnak : 此报文是server对client的dhcprequst报文的拒绝响应,client 收到此报文后,一般会重新开始DHCP过程。
      7 dhcprelease :此报文是 client主动释放IP地址,当server 收到此报文后就可以收回IP地址分配给其他的client.
      DHCP是BOOTP的扩展,是基于C/S模式的,它提供了一种动态指定
       [相关图片]

    相关图片
    IP地址和配置参数的机制。这主要用于大型网络环境和配置比较困难的地方。DHCP服务器自动为客户机指定IP地址,指定的配置参数有些和IP协议并不相关,但这必没有关系,它的配置参数使得网络上的计算机通信变得方便而容易实现了。DHCP使IP地址的可以租用,对于许多拥有许多台计算机的大型网络来说,每台计算机拥有一个IP地址有时候可能是不必要的。租期从1分钟到100年不定,当租期到了的时候,服务器可以把这个IP地址分配给别的机器使用。客户也可以请求使用自己喜欢的网络地址及相应的配置参数。
      DHCP是对BOOTP的扩展,它的包格式和BOOTP也一样,这样它就可以使用BOOTP的中转发代理来发送DHCP包了,这使得BOOTP和 DHCP之间可以实现互操作。对于BOOTP转发代理来说,发的是DHCP包还是BOOTP包,它根本分不清楚。它们使用的服务器端口号是67和68,但是有些地方还有些不同:
      DHCP定义了一种可以使IP地址使用一段有限时间的机制,在客户期限到了的时候可以重新分配这个IP地址。
      DHCP为用户提供所有IP配置参数。
      DHCP包长度比BOOTP包长度稍长。既然包比BOOTP的长,那也不是白带的,这多出的长度里包括了网络配置参数。
      DHCP的包都比BOOTP的长,那协议也复杂了。DHCP有七种消息类型,而BOOTP只有两种。
      下图中我们可以清楚地看到客户机请求获得网络地址和配置参数的最初几个步骤:
      第一步的时候客户发出包的名称叫DHCPDISCOVER,而服务器返回包的名称叫DHCPOFFER。
      1.BOOTP转发代理接收到请求包,并负责向DHCP其它网络内的DHCP服务器转发。
      2.DHCP服务器以DHCPOFFER响应客户的要求,这个包内包括可用的IP地址和参数。
      3.BOOTP转发代理接收包,并对它进行检查。如果它觉得没有问题,就向客户转发。
      4.如果客户在发出DHCP DISCOVER 包后一段时间内没有接收到回应,它有机会重新发送请求10次,否则就通知用户。客户机可以同时接收到许多个服务器的应答,它可以自己决定用哪一个。下图是客户决定了以后,向服务器发送应答时的情况。
      5.当客户选定了某个目标服务器后,它会广播DHCPREQUEST包,用以通知选定的服务器和未选定的服务器。
      6.转发工作仍然由BOOTP转发担任。
      7.收到DHCPREQUEST包服务器会检查收到的包,如果包内的地址和提供的地址一致,证明现在客户机选择的是这台服务器提供的地址,如果不是,自己提供的地址被拒绝了。
      8.被选定的服务器在接收到DHCPREQUEST包以后,因为某些原因可能不能向客户提供这个网络地址或参数,它可以向客户发送DHCPNAK包,如果可以提供则可以发送DHCPACK包。
      客户在收到包后,检查内部的网络地址和租用时间,如果客户觉得这个包有问题,它可以发送DHCPDECLIENT包拒绝这个地址,然后重新发送 DHCPDISCOVER包。如果觉得没有问题,就可以接受这个配置参数。同样当客户接收到DHCPNAK包时,它也可以发送DHCPDISCOVER 包。客户可以在租期到期之前释放网络地址,这通过发送DHCPRELEASE包来实现。
      用户下一次可以再次获得相同的IP地址。在这一过程中,许多步骤就可以不用麻烦了,老客户当然要方便一点了。
      1.客户在发送的DHCPREQUEST包内包括自己以前使用的IP地址。
      2.此包由BOOTP转发代理转发。
      3.DHCP服务器检查DHCPREQUEST包内包括的配置参数。
      4.它如果是原来提供这个网络地址的参数的服务器,它会认出这些数来,并以DHCPACK包回应。
      5.客户接收到DHCPACK包后,它可以接收或拒绝,如果拒绝它可以申请新的网络地址。
      当然了,如果服务器觉得客户的请求是无效的,服务器会以DHCPNAK包响应,客户接收到这个包后,会重新会获得网络地址而发送DHCPDISCOVER包。
    编辑本段服务器配置
    安装DHCP服务
       在Windows Server 2003系统中默认没有安装DHCP服务,因此需要安装DHCP服务。
      第1步 单击“开始”按钮,在“控制面板”中双击“添加或删除程序”图标,在打开的窗口左侧单击“添加/删除Windows组件”按钮,打开“Windows组件向导”对话框。
      第2步 在“组件”列表中找到并勾选“网络服务”复选框,然后单击“详细信息”按钮,打开“网络服务”对话框。接着在“网络服务的子组件”列表中勾选“动态主机配置协议(DHCP)”复选框,依次单击“确定→下一步”按钮开始配置和安装DHCP服务。最后单击“完成”按钮完成安装。
      提示:如果是在Active Directory(活动目录)域中部署DHCP服务器,还需要进行授权才能使DHCP服务器生效。本例的网络基于工作组管理模式,因此无需进行授权操作即可进行创建IP作用域的操作。
    创建IP作用域
       要想为同一子网内的所有客户端电脑自动分配IP地址,首先要做就是创建一个IP作用域,这也是事先确定一段IP地址作为IP作用域的原因。下面开始创建IP作用域的操作。
      第1步 依次单击“开始→管理工具→DHCP”,打开“DHCP”控制台窗口。在左窗格中右击DHCP服务器名称,执行“新建作用域”命令。
      第2步 在打开的“新建作用域向导”对话框中单击“下一步”按钮,打开“作用域名”向导页。在“名称”框中为该作用域键入一个名称(如“CCE”)和一段描述性信息,单击“下一步”按钮。
      小提示:这里的作用域名称只起到一个标识的作用,基本上没有实际应用。
      第3步 打开“IP地址范围”向导页,分别在“起始IP地址”和“结束IP地址”编辑框中键入事先确定的IP地址范围(本例为“10.115.223.2~10.115.223.254”)。接着需要定义子网掩码,以确定IP地址中用于“网络/子网ID”的位数。由于本例网络环境为城域网内的一个子网,因此根据实际情况将“长度”微调框的值调整为“23”,单击“下一步”按钮(图3)。
      第4步 在打开的“添加排除”向导页中可以指定排除的IP地址或IP地址范围。由于已经使用了几个IP地址作为其它服务器的静态IP地址,因此需要将它们排除。在“起始IP地址”编辑框中键入排除的IP地址并单击“添加”按钮。重复操作即可,接着单击“下一步”按钮。
      第5步 在打开的“租约期限”向导页中,默认将客户端获取的IP地址使用期限限制为8天。如果没有特殊要求保持默认值不变,单击“下一步”按钮。
      第6步 打开“配置DHCP选项”向导页,保持选中“是,我想现在配置这些选项”单选框并单击“下一步”按钮。在打开的“路由器(默认网关)”向导页中根据实际情况键入网关地址(本例为“10.115.223.254”)并依次单击“添加→下一步”按钮。
      第7步 在打开的“域名称和DNS服务器”向导页中没有做任何设置,这是因为网络中没有安装DNS服务器且尚未升级成域管理模式.依次单击“下一步”按钮,跳过“WINS服务器”向导页打开“激活作用域”向导页。保持“是,我想现在激活此作用域”单选框选中状态,并依次单击“下一步”→“完成”按钮结束配置。
    设置DHCP客户端
       安装了DHCP服务并创建了IP作用域后, 要想使用DHCP方式为客户端电脑分配IP地址,除了网络中有一台DHCP服务器外,还要求客户端电脑应该具备自动向DHCP服务器获取IP地址的能力,这些客户端电脑就被称作DHCP客户端。
      因此我们对一台运行Windows XP的客户端电脑面前进行了如下设置:在桌面上右击“网上邻居”图标,执行“属性”命令。在打开的“网络连接”窗口中右击“本地连接”图标并执行“属性”,打开“本地连接 属性”对话框。然后双击“Internet协议(TCP/IP)”选项,点选“自动获得IP地址”单选框,并依次单击“确定”按钮。
      提示:默认情况下端电脑使用的都是自动获取IP地址的方式,一般无需进行修改,只需检查一下就行了。
      至此,DHCP服务器端和客户端已经全部设置完成了。在DHCP服务器正常运行的情况下,首次开机的客户端会自动获取一个IP地址并拥有八天的使用期限。
    编辑本段创建新的 DHCP 用户或供应商类
      创建新用户或供应商选项类启动 DHCP 管理器。 单击控制台树中的适用的 DHCP 服务器分支。 右击在的服务器,然后单击创建新的用户类的 定义用户类 ,或者单击 定义供应商类 创建一个新的供应商类。 单击 添加 。 在 新的类 的对话框键入一个描述性的标识名称,为新的选项,在 显示名称 框。 还可能会将其他信息添加到 说明 框。 键入数据以匹配的类 ID 由 ID 或 ASCII 下的 DHCP 客户端提供 DHCP 服务器服务使用。 若要为十六进制字节数字值输入数据,请单击文本框的左侧。 若要输入信息交换 (ASCII) 文本字符值为

  • mysql 习题

    2011-02-24 10:55:21

     

    idsnamesmoneysprovince
    1zhangsan2098A
    2lisi3000B
    3wangwu6789C
    4liumazi4587C
    5dongjiu3298B
    6shiga4567A

     

     

    id:合同id  sname:姓名     smoney :业绩     sprovince:地区

     

    第一道:显示出  业绩 大于同一地区平均值的 合同id  姓名 地区 业绩

     

     

    第二道:把同一地区的  平均业绩 地区 插入到新表中 (新表只包含两个字段即:平均业绩 地区)



    这道题目的答案:


    1. select   T1.* from table_name T1,( select avg(smoney)s, sprovince from table_name group by sprovince) T2  where T1.smoney > T2.s and T1.sprovince=T2.sprovince ;
    2. creat table_name_2 from (select AVG(smoney)smoney,sprovince from table_name_1 group by sprovince);
    cid  Region(区域)   Saler(销售员)  Money(合同金额) 
      1         北京           杨建               100 
      2         上海           社长               200 
      3         杭州           副团               500 
      4         上海           社长               200 
      5         上海           杨建               400 
      6         北京           社长               300 
      7         北京           杨建               200 
      8         杭州           副团               100 


    1. 查询每个区域有多少个销售人员并按区域倒叙排列 
    2. 查询所有相同区域中合同金额最少的区域 
    3. 查询表中合同金额小于所在区域平均合同金额的合同id 

    http://tianyuan1155.javaeye.com/blog/578724

  • Mysql安装

    2011-02-24 10:46:01

    转载 :Mysql安装 

    转载地址:
    http://www.shopex.cn/help/help_shop/help_shop-1146385661-6443.html
    Mysql的安装文件可以直接到 http://www.mysql.com 下载,获得for win32的.zip包,建议选择4.0.20d版本。这里不详细说明。

      下载获得Mysql的for win32安装包后,用winzip解压缩,直接运行setup.exe,需要注意的是选择一个安装路径,当然,安装路径可以任意,建议选择C:\MySQL目录。安装完成后MySQL也就完成了。默认的用户名是root,密码为空。

      Mysql安装完成后,请通过开始-程序-附件-命令提示符进入:
      录入cd C:\mysql\bin 并按下回车键,将目录切换为 cd C:\mysql\bin

      在 C:\mysql\bin> 命令提示符下录入 mysqld-nt -install 命令,然后按下回车,如果出现 Service successfully installed 的提示, 这表示你已成功的将 MySQL 安装成一项 Windows 的服务。

      点击 开始-程序-管理工具-服务 ,你可以看到Mysql已经成为众多服务项目中的一项,不过此时它还未被启动, 因此接下来我们就来启动它。

      启动 MySQL 服务的方法有以下三种,请自行选择其中一种来进行:

      重启机器时自动启动它
      在服务窗口中选取 MySQL 服务名称,然后按下启动按钮来启动它
      在“命令提示字符”窗口中输入 NET START MySQL 指令来启动它

      Mysql数据安装完成,系统会默认生成一个名为test的数据库。一般情况下,由于该数据需要用root用户进行访问,从安全性角度而言,我们建议你新建一个数据库,并给这个数据库分配一个新的用户来访问。

      由于Mysql数据库默认的客户端功能比较少,不支持数据库的建立和用户的新增。其他比如Mysql-front等工具带了这些功能,您可以去下载这些工具来使用,当然,你也可以通过以下介绍的命令行方式来新增用户与数据库。

      登录数据库
      “命令提示字符”窗口录入,
      录入cd C:\mysql\bin 并按下回车键,将目录切换为 cd C:\mysql\bin
      再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>

      修改密码
      C:\mysql\bin提示符下录入:
      格式:mysqladmin –u用户名 -p旧密码 password 新密码 
      例如:给root加个密码ab12。键入以下命令:
      mysqladmin -uroot password ab12

      建立数据库
      格式:create database 库名;
      例如:建立新数据库shopex
      在MYSQL的提示符下:mysql> 录入 create database shopex;

      显示数据库
      格式:show databases;
      注意是databases而不是database

      建立新用户
      格式:grant all privileges on 数据库.* to 用户名@登录主机 identified by "密码";
      例如:增加一个用户test密码为1234,让他只可以在localhost上登录,并可以对数据库Shopex进行所有的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),
      在MYSQL的提示符下:mysql> 录入grant all privileges on shopex.* to test@localhost identified by "1234";

      通过以上操作,你建立一个新的数据库 shopex,并增加了一个名为test对shopex数据库有所有操作权限。

      注意:以上仅仅是简单的Mysql操作命令,如果你需要了解更加详细的资料,请查阅Mysql相关操作说明文档。

      接下去的安装就要看你选择什么作为你的Web服务器了,建议直接使用IIS。

  • 英语自我介绍

    2009-08-30 20:40:21

    英语自我介绍:

    负责制作客户方案。解决客户问题,协调客户关系等等

    in charge of  Plan the customer's solutions, Solve the customer's questions, Coordinate the relationship between customers and  technicians  engineers and so on.

    我在2006年11月进入公司,三个月的培训之后,正式进入软件测试7部测试组工作。

    I started working for huawei in November 2006.,and then attened a 3 months training  for new staffs ,finally  I worked at the 7th department of software testing 。

    项目介绍:这个项目是关于三层交换机的产品。我进入的时候项目处于需求阶段基本完毕,需要进入概要设计和详细设计阶段。

    It was a  project about 3-tier switchers. at that time when I started working , requirement definition has already finished , the next step was preliminary design and test case design 。

    我负责测试的模块如动态主机配置协议,网络时钟协议和设备管理协议。

    I  was in charge of testing   modules such as Dynamic Host Configuration Protocol ,The Network Time Protocol  ˈprəutəkɔl],Device management.

    经过9个月的测试,产品进入了维护阶段。后期我分配到测试组工作,经过培训和学习后,承担了自动化脚本写作工作。三个月之后,脚本写作进入尾声,我又负责了脚本的执行工作。
     After 9 months ago , the final stage  was coming。 I went automatic test group , hadst charge  of  writing tcl script. and parsing [pɑ:z]script. file  。

    2008年7月,我转入接入网业务网关产品组,负责接入的IPoX和PPPoE 特性,防火墙特性学习以及自动化脚本分析。

     In july 2008 ,I went access network and took up  modules manual testing such as IPoX and Firewall . and parsing script. file  . In January 2009 ,because I  must consult both my family and work in the long term ,I decideed to leave the huawei company 。

    2009年5月,我在北京立通公司负责服务器测试,1个月之后,公司业务缩减,进行部门裁员,所以我离开立通公司。

    In may 2009 ,I worked for leadtone company for server testing for 1months . they decideed to cut staff members owing to runing-down of business。

  • 转载:冒泡排序

    2009-08-28 16:40:10

    交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。
         应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。

    冒泡排序

    1、排序方法
         将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。
    (1)初始
         R[1..n]为无序区。

    (2)第一趟扫描
         从无序区底部向上依次比较相邻的两个气泡的重量,若发现轻者在下、重者在上,则交换二者的位置。即依次比较(R[n],R[n-1]),(R[n-1],R[n-2]),…,(R[2],R[1]);对于每对气泡(R[j+1],R[j]),若R[j+1].key<R[j].key,则交换R[j+1]和R[j]的内容。
         第一趟扫描完毕时,"最轻"的气泡就飘浮到该区间的顶部,即关键字最小的记录被放在最高位置R[1]上。

    (3)第二趟扫描

         扫描R[2..n]。扫描完毕时,"次轻"的气泡飘浮到R[2]的位置上……
         最后,经过n-1 趟扫描可得到有序区R[1..n]
      注意:
         第i趟扫描时,R[1..i-1]和R[i..n]分别为当前的有序区和无序区。扫描仍是从无序区底部向上直至该区顶部。扫描完毕时,该区中最轻气泡飘浮到顶部位置R[i]上,结果是R[1..i]变为新的有序区。
    排序算法
    (1)分析
         因为每一趟排序都使有序区增加了一个气泡,在经过n-1趟排序之后,有序区中就有n-1个气泡,而无序区中气泡的重量总是大于等于有序区中气泡的重量,所以整个冒泡排序过程至多需要进行n-1趟排序。
         若在某一趟排序中未发现气泡位置的交换,则说明待排序的无序区中所有气泡均满足轻者在上,重者在下的原则,因此,冒泡排序过程可在此趟排序后终止。为此,在下面给出的算法中,引入一个布尔量exchange,在每趟排序开始前,先将其置为FALSE。若排序过程中发生了交换,则将其置为TRUE。各趟排序结束时检查exchange,若未曾发生过交换则终止算法,不再进行下一趟排序。

    (2)具体算法

      void BubbleSort(SeqList R)
       { //R(l..n)是待排序的文件,采用自下向上扫描,对R做冒泡排序
         int i,j;
         Boolean exchange; //交换标志
         for(i=1;i<n;i++){ //最多做n-1趟排序
           exchange=FALSE; //本趟排序开始前,交换标志应为假
           for(j=n-1;j>=i;j--) //对当前无序区R[i..n]自下向上扫描
            if(R[j+1].key<R[j].key){//交换记录
              R[0]=R[j+1]; //R[0]不是哨兵,仅做暂存单元
              R[j+1]=R[j];
              R[j]=R[0];
              exchange=TRUE; //发生了交换,故将交换标志置为真
             }
           if(!exchange) //本趟排序未发生交换,提前终止算法
                 return;
         } //endfor(外循环)
        } //BubbleSort
  • SQL Server数据库的数据类型详细介绍

    2009-08-25 18:02:40

    1. char 和nchar 当填入数据为空时,数据库自动使用全空格来代替,从而使not null形同虚设。所以如果字段不能为空,一定要在程序中提前判断。

    2. char 和nchar因为长度固定,据说读写的速度要比 varchar和nvarchar快

    =========================================================================
    SQL Server数据库的数据类型详细介绍  
     
     

    SQLServer 提供了 25 种数据类型:


    Binary [(n)],Varbinary [(n)],Char[(n)],Varchar[(n)],Nchar[(n)],Nvarchar[(n)],Datetime,Smalldatetime


    Decimal[(p[,s])],Numeric[(p[,s])],Float[(n)],Real,Int,Smallint,Tinyint,Money,Smallmoney,Bit,Cursor


    Sysname,Timestamp,Uniqueidentifier,Text,Image,Ntext。


    下面来分别介绍这些数据类型:


    (1)二进制数据类型


    二进制数据包括 Binary、Varbinary 和 Image


    Binary 数据类型既可以是固定长度的(Binary),也可以是变长度的。


    Binary[(n)] 是 n 位固定的二进制数据。其中,n 的取值范围是从 1 到 8000。其存储窨的大小是 n + 4 个字节。


    Varbinary[(n)] 是 n 位变长度的二进制数据。其中,n 的取值范围是从 1 到 8000。其存储窨的大小是 n + 4个字节,不是n 个字节。


    在 Image 数据类型中存储的数据是以位字符串存储的,不是由 SQL Server 解释的,必须由应用程序来解释。

    例如,应用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把数据存储在 Image 数据类型中。


    (2)字符数据类型


    字符数据的类型包括 Char,Varchar 和 Text


    字符数据是由任何字母、符号和数字任意组合而成的数据。


    Varchar 是变长字符数据,其长度不超过 8KB。

    Char 是定长字符数据,其长度最多为 8KB。

    超过 8KB 的ASCII 数据可以使用Text数据类型存储。例如,因为 Html 文档全部都是 ASCII 字符,

    并且在一般情况下长度超过 8KB,所以这些文档可以 Text 数据类型存储在SQL Server 中。


    (3)Unicode 数据类型


    Unicode 数据类型包括 Nchar,Nvarchar 和Ntext


    在 Microsoft SQL Server 中,传统的非 Unicode 数据类型允许使用由特定字符集定义的字符。

    在 SQL Server安装过程,允许选择一种字符集。使用 Unicode 数据类型,列中可以存储任何由Unicode 标准定义的字符。

    在 Unicode 标准中,包括了以各种字符集定义的全部字符。使用Unicode数据类型,

    所战胜的窨是使用非 Unicode 数据类型所占用的窨大小的两倍。


    在 SQL Server 中,Unicode 数据以 Nchar、Nvarchar 和 Ntext 数据类型存储。

    使用这种字符类型存储的列可以存储多个字符集中的字符。当列的长度变化时,应该使用Nvarchar 字符类型,

    这时最多可以存储 4000 个字符。当列的长度固定不变时,应该使用 Nchar 字符类型,同样,

    这时最多可以存储4000 个字符。当使用 Ntext 数据类型时,该列可以存储多于 4000 个字符。


    (4)日期和时间数据类型


    日期和时间数据类型包括 Datetime 和 Smalldatetime两种类型


    日期和时间数据类型由有效的日期和时间组成。

    例如,有效的日期和时间数据包括“4/01/98 12:15:00:00:00 PM”和“1:28:29:15:01AM 8/17/98”。

    前一个数据类型是日期在前,时间在后一个数据类型是霎时间在前,日期在后。

    在 Microsoft SQL Server中,日期和时间数据类型包括Datetime 和 Smalldatetime 两种类型时,

    所存储的日期范围是从 1753 年 1 月 1 日开始,到9999 年12 月 31 日结束(每一个值要求 8 个存储字节)。

    使用 Smalldatetime 数据类型时,

    所存储的日期范围是 1900年 1 月 1日 开始,到 2079 年 12 月 31 日结束(每一个值要求 4 个存储字节)。


    日期的格式可以设定。设置日期格式的命令如下:


    Set DateFormat {format | @format _var|
     


    其中,format | @format_var 是日期的顺序。有效的参数包括 MDY、DMY、YMD、YDM、MYD 和 DYM。在默认情况下,日期格式为MDY。


    例如,当执行 Set DateFormat YMD 之后,日期的格式为年 月 日 形式;

    当执行 Set DateFormat DMY 之后,日期的格式为日 月有年 形式


    (5)数字数据类型


    数字数据只包含数字。数字数据类型包括正数和负数、小数(浮点数)和整数


    整数由正整数和负整数组成,例如 39、25、0-2 和 33967。

    在 Micrsoft SQL Server 中,整数存储的数据类型是Int,Smallint和 Tinyint。

    Int 数据类型存储数据的范围大于 Smallint 数据类型存储数据的范围,

    而 Smallint 据类型存储数据的范围大于Tinyint 数据类型存储数据的范围。

    使用 Int 数据存储数据的范围是从 -2 147 483 648 到 2 147 483 647(每一个值要求4个字节存储空间)。

    使用 Smallint 数据类型时,存储数据的范围从 -32 768 到 32 767(每一个值要求2个字节存储空间)。

    使用Tinyint 数据类型时,存储数据的范围是从0 到255(每一个值要求1个字节存储空间)。


    精确小 数数据在 SQL Server 中的数据类型是 Decimal 和 Numeric。这种数据所占的存储空间根据该数据的位数后的位数来确定。


    在SQL Server 中,近似小数数据的数据类型是 Float 和 Real。例如,三分之一这个分数记作。

    3333333,当使用近似数据类型时能准确表示。因此,从系统中检索到的数据可能与存储在该列中数据不完全一样。

    =======================================================================================

    SQL Server的数据类型介绍(二)


    (6)货币数据表示正的或者负的货币数量 。


    在 Microsoft SQL Server 中,货币数据的数据类型是Money 和 Smallmoney 。


    而Money数据类型要求 8 个存储字节,Smallmoney 数据类型要求 4 个存储字节。


    (7)特殊数据类型


    特殊数据类型包括前面没有提过的数据类型。特殊的数据类型有3种,即Timestamp、Bit 和 Uniqueidentifier。


    Timestamp 用于表示SQL Server 活动的先后顺序,以二进投影的格式表示。Timestamp 数据与插入数据或者日期和时间没有关系。


    Bit 由 1 或者 0 组成。当表示真或者假、ON 或者 OFF 时,使用 Bit 数据类型。



    例如,询问是否是每一次访问的客户机请求可以存储在这种数据类型的列中


    Uniqueidentifier 由 16 字节的十六进制数字组成,表示一个全局唯一的。



    当表的记录行要求唯一时,GUID是非常有用。例如,在客户标识号列使用这种数据类型可以区别不同的客户。



    =======================================================================

    用户定义的数据类型


    用户定义的数据类型基于在 Microsoft SQL Server 中提供的数据类型。当几个表中必须存储同一种数据类型时,


    并且为保证这些列有相同的数据类型、长度和可空性时,可以使用用户定义的数据类型。


    例如,可定义一种称为   postal_code 的数据类型,它基于 Char 数据类型。


    当创建用户定义的数据类型时,必须提供三个数:数据类型的名称、所基于的系统数据类型和数据类型的可空性。


    (1)创建用户定义的数据类型


    创建用户定义的数据类型可以使用 Transact-SQL 语句。系统存储过程 sp_addtype 可以来创建用户定义的数据类型。其语法形式如下:


    sp_addtype {type},[,system_data_bype][,'null_type']
     


    其中,type 是用户定义的数据类型的名称。system_data_type 是系统提供的数据类型,例如 Decimal、Int、Char   等等。



    null_type 表示该数据类型是如何处理空值的,必须使用单引号引起来,例如'NULL'、'NOT NULL'或者'NONULL'。


    例子:




    Use cust

    Exec sp_addtype ssn,'Varchar(11)','Not Null'
     


    创建一个用户定义的数据类型 ssn,其基于的系统数据类型是变长为11 的字符,不允许空。


    例子:


    Use cust
    Exec sp_addtype birthday,datetime,'Null'
     


    创建一个用户定义的数据类型 birthday,其基于的系统数据类型是 DateTime,允许空。


    例子:




    Use master
    Exec sp_addtype telephone,'varchar(24),'Not Null'
    Eexc sp_addtype fax,'varchar(24)','Null'
     


    创建两个数据类型,即 telephone 和 fax


    (2)删除用户定义的数据类型


    当用户定义的数据类型不需要时,可删除。删除用户定义的数据类型的命令是 sp_droptype {'type'}。


    例子:


    Use master
    Exec sp_droptype 'ssn'
     


    注意:当表中的列还正在使用用户定义的数据类型时,或者在其上面还绑定有默认或者规则时,这种用户定义的数据类型不能删除。
  • 软件测试用例设计方法--场景分析法(2)

    2009-08-24 16:37:13

    SATM客户可以选择三种交易中的任意一种:存款、取款和查询余额。这些交易可以在信用帐户和储蓄帐户上完成。如下图所示:

     

    以用户查询余额为例,分析应用场景:

    用户卡无效,被扣下:

    用户第三次输入错误身份编号,选择推出(1)(2)(3)(15)

    用户查询余俄:

    用户输入错误身份少于3次,系统再进入(2),正确后进入屏幕5,可以选择交易类型。

    用户查询余额后退出(1)(2)(5)(14)(15)

    用户正确取款:(1)(2)(5)(7)(11)(14)

    用户取款通道暂不可用,用户等待后可取(1)(2)(5)(10)(7)

    用户余俄不足,用户取款被取消 (1)(2)(5)(7)(8)(15)

    用户输入金额不是10的正数,进入9.重新输入后可取(1)(2)(5)(7)(11)

    用户输入金额大于余俄,转入9,修正后进入11 。(1)(2)(5)(7)(9)(11)

    用户在分支操作中出现错误,修正后可以取出(1)(2)(5)(10)(7)(8)(9)(11)(14)(15)

    用户先查余额,再取款,之后再差余额

    用户先查余额,再存款,之后再差余额

    用户取款后余额更新

    用户存款后余额更新

  • 软件测试用例设计方法--场景分析法

    2009-08-24 15:47:26

    场景分析法:分析软件应用的场景,从用户的角度出发,从场景的角度来设计测试用例,是一种面向用户的测试用例设计方法。

    关心用户做什么,而不是关心产品做什么

    优点:实用性强,有效,设计出来的用例有价值

    缺点:可能使用的场景不一定能对事件系列进行全面的分析,设计出来的用例不完整。

    分析方法的步骤:

    1 找出所有会影响结果的环境因素。

    2 找出所有可能发生的事件系列。

    3 将环境因素和事件系列进行组合分析,推导不同的场景。

    例子:

     

    树上有一群鸟,一个猎人开枪打死一只还有几只???

     

    场景包含显性场景和隐性场景

    分析场景:

    因素:鸟  树,猎人  枪

    分析环境因素中可能出现的情况:

    因素:树 树很大,很多鸟藏在树上,没有跑,树上还剩下9只鸟
            猎人打中了一个鸟巢的鸟,所以鸟巢其他的鸟掉落下来,为n ,其中n<10,剩余的鸟为10-n
          猎人打中了鸟妈妈,剩下的鸟都是不会飞的鸟宝宝。所以还有9只鸟
          枪:枪是无声的,其他鸟都没有听见,所以树上还有9只鸟。

    结合可能出现的情况进行分析,得到以下场景:

    场景1:

    猎人开枪打鸟 
    一只鸟死了,鸟掉在树下   
    其它鸟跑了
    树上还剩下1只鸟

     

    场景2:

    猎人开枪打鸟 
    一只鸟死了,鸟掉在树下
    其它鸟跑了
    树上还剩下0只鸟

     

    场景3:

    猎人开枪打鸟 
    一只鸟死了,鸟掉在树下   
    其它鸟藏在树上

    树上还剩下9只鸟

    场景4:

    猎人开枪打鸟 
    一只鸟死了,鸟掉在树下   
    其它鸟藏在树上

    树上还剩下9只鸟

    场景5:

    猎人开枪打鸟 
    一只鸟死了,死了的那只鸟在鸟巢里,鸟巢也掉在树下
    其它鸟跑了

    树上还剩下n只鸟,n的数目就是鸟巢里小鸟的数目。

    场景6:

    猎人开枪打鸟 

    猎人打中了鸟妈妈,剩下的鸟都是不会飞的鸟宝宝,在鸟巢里。

    树上还有9只鸟

    场景7:

    猎人开枪打鸟,强是无声的
    一只鸟死了,掉在树下
    其它鸟都没听见,还在树上

    树上还剩下9只鸟

    场景8:

    猎人开枪打鸟,强是无声的
    一只鸟死了,还在树上
    其它鸟都没听见,还在树上

    树上还剩下10只鸟

    影响结果的因素:

    树上又增加了刚刚回来的鸟爸爸和鸟妈妈,所以总数会增加。

    树上

     

  • tcp协议复习-option字段

    2009-08-21 17:07:25

    TCP 传输控制协议概述

           TCP是一种基于IP协议的,提供面向连接的,可靠的,全双工的字节流服务的传输层协议。

           TCP面向连接的概念可以理解为与2层相似的一种虚电路的概念,即在开始使用TCP传输数据之前,必须先建立一个连接(虚电路),在连接建立好之后,双方,也只能是连接的两端两个“端”才能开始进行数据交换。因此,广播和多播是不能应用于TCP的。

    TCP的主要特点

           TCP自己组织需要发送的数据块的大小。这一点可能让很多开发者感觉不爽,也是造成很多bug的原因。当应用开发人员使用write或者send发送数据后,其实是将数据拷贝到了kernelTCP的发送缓存中,这之后的事情就完全由TCP来决定了,TCP会把数据划分成它认为最合适的数据块。这个思想是和UDP完全不同的。

           TCP发送一块数据后,它会启动一个定时器timer,等待接收方的确认,如果在timer规定的时间内接收不到确认数据,则重新发送刚才的数据块。

           TCP收到来自另外一端的数据后,它会发送一个针对接受到的数据的确认,通常这个确认会推迟一段时间(非常短的时间)发送出去。

           TCP会始终保持一个整个TCP报文段(包括headerdata)的校验和,用于检测在数据传输中是否出现错误。如果有则丢弃当前收到的这个数据段。

           TCP必须对到达的数据进行排序。

           TCP必须能够丢掉重复的数据段。

           TCP的另外一个非常重要的功能是它可用提供流量控制。它的两端都有一定的固定大小的buffer空间。接手段必须告诉发送端自己所能接收的最大数据,而发送端发送的数据不能超过接收端buffer的大小。

           TCP不对它所传送的字节流做任何解释,它不知道所传送的字节流是二进制还是ASCII字符,这个问题是应用层应该考虑的问题。

    TCPHeader主要内容

    TCP报头总长最小为20个字节,其报头结构如下图(图1)所示;

                                                                                                         比特0             比特15   比特16             比特31

    源端口(16

    目的端口(16

    序列号(32

    确认号(32

    TCP偏移量(4

    保留(6

    标志(6

    窗口(16

    校验和(16

    紧急(16

    选项(032

    数据(可变)

    (图1 TCP报头结构)

           首先16位的src port16位的dst port用来区分应用程序。

           TCP Header中两个32位是一个序号与一个确认序号,这两个东西比较难理解。首先序号用来标识从发送端向接收端发送的数据字节流,它表示这个数据段中的第一个数据字节。其实序号就是一个发送端发送数据的计数器,发送端发送的第二个TCP包的序号减去第一个TCP包的序号就可以得出第一个TCP包发送的数据块的大小。序号是一个32位的无符号证书,达到232次方减1后又从0开始。

           需要注意的是,当建立一个TCP连接时,SYN标志变为1,此时序号字段包含了发送方主机选择的出示序号ISN,但是一般情况下这个ISN0,改发送方要发送的数据的第一个字节序号为这个ISN1,因此在建立TCP连接的第一个TCP包中,序号为0,因为ISN0,而建立TCP连接又没有要发送的数据,所以序号为0

           确认序号标识接收方(即发送确认的一方)所期望接收到的下一个序号,也就是它接收到的TCP包的序号加1,并且只有ACK位为1时此确认序号才生效。但是通常情况下这种情况总是正确的,因为一个TCP连接一旦建立,之后的报文中ACK位总会被设置。

           需要注意的是,序号和确认序号是有方向的,因为TCP提供的是全双工的服务,所以在每一个方向上的序号和确认序号都是不同的。

           确认序号其实就是表示已经收到了发送端发送的一些数据,但是当前确认序号所标识的数据还没有收到,这个确认序号可以被发送方用来判断是否需要重发。

           4位的Header长度标识当前TCP包的header长度,最长是60个字节,而正常的TCPheader长度是20字节。

           6位的标志位。URG:紧急指针有效;ACK:确认序号有效;PSH:接收方应该立刻将此包发给应用层;RST:复位一个连接;SYN:发起一个TCP连接;FIN:结束一个连接。

           16位的窗口大小。TCP的流量控制由连接每一端通过声明窗口大小来提供。窗口大小为字节数,从确认序号的值开始。比如一端声明窗口大小为4096,当前的确认序号为10000,则表明这一端当前能接收的最大字节数为4096,而它希望接收从序号10000开始的数据。

           16位的校验和。这个校验和覆盖整个TCP报文。它一定是由发送端来计算和填充的。而且必须由接收端进行验证。

           16位的紧急数据指针,只有当URG标志位为1时才有效。它是一个偏移量,标识从序号开始的直到指针所指的数据,这一段数据被发送端设置为紧急数据。

           TCP Header中还有一些options字段,最常用的是MSS字段,通常是SYN报文中携带这个字段,表明本端所能接收的最大长度的报文段。

           另外需要表明的是,TCP可以不携带任何数据,而且这种报文还很有用,可用用来确认数据,也可以用来处理超时。



  • OSI参考模型

    2009-08-19 09:40:11

    1 OSI参考模型
      
      谈到网络不能不谈OSI参考模型,虽然OSI参考模型的实际应用意义不是很大,但其的确对于理解网络协议内部的运作很有帮助,也为我们学习网络协议提供了一个很好的参考。在现实网络世界里,TCP/IP协议栈获得了更为广泛的应用。
      
      1.1 OSI参考模型的分层结构
      
      OSI参考模型(OSI/RM)的全称是开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它是由国际标准化组织(International Standard Organization,ISO)提出的一个网络系统互连模型。
      
      OSI参考模型采用分层结构,如图1-1所示。


        
       图1-1  OSI参考模型
      
      在这个OSI七层模型中,每一层都为其上一层提供服务、并为其上一层提供一个访问接口或界面。
      
      不同主机之间的相同层次称为对等层。如主机A中的表示层和主机B中的表示层互为对等层、主机A中的会话层和主机B中的会话层互为对等层等。
      
      对等层之间互相通信需要遵守一定的规则,如通信的内容、通信的方式,我们将其称为协议(Protocol)。
      
      我们将某个主机上运行的某种协议的集合称为协议栈。主机正是利用这个协议栈来接收和发送数据的。
      
      OSI参考模型通过将协议栈划分为不同的层次,可以简化问题的分析、处理过程以及网络系统设计的复杂性。
      
      OSI参考模型的提出是为了解决不同厂商、不同结构的网络产品之间互连时遇到的不兼容性问题。但是该模型的复杂性阻碍了其在计算机网络领域的实际应用。与此对照,后面我们将要学习的TCP/IP参考模型,获得了非常广泛的应用。实际上,也是目前因特网范围内运行的唯一一种协议。
      
      1.2 OSI参考模型中各层的作用
      
      在OSI参考模型中,从下至上,每一层完成不同的、目标明确的功能。
      
      1、物理层(Physical Layer)
      
      物理层规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上层协议提供了一个传输数据的物理媒体。
      
      在这一层,数据的单位称为比特(bit)。
      
      属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。
      
      2、数据链路层(Data Link Layer)
      
      数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
      
      在这一层,数据的单位称为帧(frame)。
      
      数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。
      
      3、网络层(Network Layer)
      
      网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能。
      
      在这一层,数据的单位称为数据包(packet)。
      
      网络层协议的代表包括:IP、IPX、RIP、OSPF等。
      
      4、传输层(Transport Layer)
      
      传输层是第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。
      
      在这一层,数据的单位称为数据段(segment)。
      
      传输层协议的代表包括:TCP、UDP、SPX等。
      
      5、会话层(Session Layer)
      
      会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
      
      会话层协议的代表包括:NetBIOS、ZIP(AppleTalk区域信息协议)等。
      
      6、表示层(Presentation Layer)
      
      表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。
      
      表示层协议的代表包括:ASCII、ASN.1、JPEG、MPEG等。
      
      7、应用层(Application Layer)
      
      应用层为操作系统或网络应用程序提供访问网络服务的接口。
      
      应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。
      
      1.3 OSI参考模型中的数据封装过程

    1.3 OSI参考模型中的数据封装过程
     
       图1-2  OSI参考模型中的数据封装过程
      
      如图1-2所示,在OSI参考模型中,当一台主机需要传送用户的数据(DATA)时,数据首先通过应用层的接口进入应用层。在应用层,用户的数据被加上应用层的报头(Application Header,AH),形成应用层协议数据单元(Protocol Data Unit,PDU),然后被递交到下一层-表示层。
      
      表示层并不"关心"上层-应用层的数据格式而是把整个应用层递交的数据包看成是一个整体进行封装,即加上表示层的报头(Presentation Header,PH)。然后,递交到下层-会话层。
      
      同样,会话层、传输层、网络层、数据链路层也都要分别给上层递交下来的数据加上自己的报头。它们是:会话层报头(Session Header,SH)、传输层报头(Transport Header,TH)、网络层报头(Network Header,NH)和数据链路层报头(Data link Header,DH)。其中,数据链路层还要给网络层递交的数据加上数据链路层报尾(Data link Termination,DT)形成最终的一帧数据。
      
      当一帧数据通过物理层传送到目标主机的物理层时,该主机的物理层把它递交到上层-数据链路层。数据链路层负责去掉数据帧的帧头部DH和尾部DT(同时还进行数据校验)。如果数据没有出错,则递交到上层-网络层。
      
      同样,网络层、传输层、会话层、表示层、应用层也要做类似的工作。最终,原始数据被递交到目标主机的具体应用程序中。

  • TCP/IP参考模型

    2009-08-18 17:49:11

    TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网络协议协议)是Internet最基本的协议,简单的说,就是由底层的IP协议和TCP协议组成的。TCP/IP协议的开发工作始于20世纪70年代,是用于互联网的第一套协议。


    TCP/IP参考模型分为四层:

    一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统,如图1 - 1所示。

    (点小图查看大图)
    点击图片看大图
        每一层负责不同的功能:
        1) 链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
        2) 网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(internet互联网控制报文协议),以及IGMP协议(internet组管理协议)。
        3 ) 运输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议: TCP(传输控制协议)和UDP(用户数据报协议)。

    该层提供端对端的通信。最重要的传输层协议是传输控制协议TCP

    • 传输控制协议TCP (Transport Control Protocol) - 数据流传输(面向连接,可靠)
    • 用户数据报文协议UDP (User Datagram Protocol) - 数据报文传输(无连接不可靠) 
          TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。
      而另一方面, U D P则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。
          

    应用层

    该层包括所有和应用程序协同工作,利用基础网络交换应用程序专用的数据的协议。如,

    • HTTP(Hypertext Transfer Protocol),超文本传输协议。
    • TELNET (Teletype over the Network, 网络电传) ,通过一个终端(terminal)登陆到网络(运行在TCP协议上)。
    • FTP (File Transfer Protocol, 文件传输协议) ,由名知义(运行在TCP协议上) 。
    • SMTP (Simple Mail Transfer Protocol,简单邮件传输协议) ,用来发送电子邮件(运行在TCP协议上) 。
    • DNS (Domain Name Service,域名服务) ,用于完成地址查找,邮件转发等工作(运行在TCPUDP协议上) 。
    • NTP (Network Time Protocol,网络时间协议) ,用于网络同步(运行在UDP协议上) 。
    • SNMP (Simple Network Management Protocol, 简单网络管理协议) ,用于网络信息的收集和网络管理。

    网络模型OSI参考模型和TCP/IP参考模型的对比

    首次分享请先

  • ssh总结

    2009-08-18 15:32:00

    SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的"通道"。

      很多情况是由于服务器提供了Telnet服务引起的。的确,对于UNIX系统,如果要远程管理它,必定要使用远程终端,而要使用远程终端,自然要在服务器上启动Telnet服务。但是Telnet服务有一个致命的弱点——它以明文的方式传输用户名及口令,所以,很容易被别有用心的人窃取口令。

     

     

    所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”转手后做了手脚之后,就会出现很严重的问题。

    定义: DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。

    原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。

    ip欺骗是基于IP地址的。第一步需要IP地址。而SSH传输的信息是加密的,不能被识别,所以无从下手。

    什么是IP spoof?  

    IP欺骗由若干步骤组成,这里先简要地描述一下,随后再做详尽 地解释。先做以下假定:首先,目标主机已经选定。其次,信任模式 已被发现,并找到了一个被目标主机信任的主机。黑客为了进行IP欺 骗,进行以下工作:使得被信任的主机丧失工作能力,同时采样目标 主机发出的TCP 序列号,猜测出它的数据序列号。然后,伪装成 被信任的主机,同时建立起与目标主机基于地址验证的应用连接。如 果成功,黑客可以使用一种简单的命令放置一个系统后门,以进行非 授权操作。

             IP spoof即IP 电子欺骗,我们可以说是一台主机设备冒充另外一台主机的IP地址,与其它设备通信,从而达到某种目的技术。
     

    IP是网络层的一个非面向连接的协议, IP数据包的主要内容由源IP地址,目地IP地址,所传数据构成, 
          IP的任务就是根据每个数据报文的目的地址,路由完成报文从源地址到目的地址的传送。至于报文在传送过程中是否丢失或出现差错, 
          IP不会考虑。对IP来讲,源设备与目的设备没有什么关系,它们是相互独立的。IP包只是根据数据报文中的目的地址发送,因此借助高层协议的应用程序来伪造IP地址是比较容易实现的。  
     

    2、SSH协议的内容
      
        SSH协议是建立在应用层和传输层基础上的安全协议,它主要由以下三部分组成,共同实现SSH的安全保密机制。
        传输层协议,它提供诸如认证、信任和完整性检验等安全措施,此外它还可以任意地提供数据压缩功能。通常情况下,这些传输层协议都建立在面向连接的TCP数据流之上。
        用户认证协议层,用来实现服务器的跟客户端用户之间的身份认证,它运行在传输层协议之上。
        连接协议层,分配多个加密通道至一些逻辑通道上,它运行在用户认证层协议之上。
        
        当安全的传输层连接建立之后,客户端将发送一个服务请求。当用户认证层连接建立之后将发送第二个服务请求。这就允许新定义的协议可以和以前的协议共存。连接协议提供可用作多种目的通道,为设置安全交互Shell会话和传输任意的TCP/IP端口和X11连接提供标准方法。
      
      
      
      3、SSH的安全验证
      
        从客户端来看,SSH提供两种级别的安全验证。
        
        第一种级别(基于口令的安全验证),只要你知道自己的帐号和口令,就可以登录到远程主机,并且所有传输的数据都会被加密。但是,这种验证方式不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到"中间人"这种攻击方式的攻击。
        
        第二种级别(基于密匙的安全验证),需要依靠密匙,也就是你必须为自己创建一对密匙,并把公有密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的用户根目录下寻找你的公有密匙,然后把它和你发送过来的公有密匙进行比较。如果两个密匙一致,服务器就用公有密匙加密"质询"(challenge)并把它发送给客户端软件。客户端软件收到"质询"之后就可以用你的私人密匙解密再把它发送给服务器。
        与第一种级别相比,第二种级别不需要在网络上传送用户口令。另外,第二种级别不仅加密所有传送的数据,而"中间人"这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能慢一些。
      
      
      
      4、SSH的应用
      
        首先,SSH最常见的应用就是,用它来取代传统的Telnet、FTP等网络应用程序,通过SSH登录到远方机器执行你想进行的工作与命令。在不安全的网路通讯环境中,它提供了很强的验证(authentication)机制与非常安全的通讯环境。实际上,SSH开发者的原意是设计它来取代原UNIX系统上的rcp、rlogin、rsh等指令程序的;但经过适当包装后,发现它在功能上完全可以取代传统的Telnet、FTP等应用程序。
        传统 BSD 风格的 r 系列指令(如 rcp,rsh,rlogin)往往都被视为不安全的,很容易就被各种网络攻击手段所破解,几乎所有找得到有关UNIX安全的书或文件,都会一而再、再而三地警告系统管理者,留心r系列指令的设定,甚至要求系统管理者将r系列指令通通关闭。
        而用来替代r系列指令的SSH,则在安全方面做了极大的强化,不但对通讯内容可以进行极为安全的加密保护,同时也强化了对身份验证的安全机制,它应用了在密码学(Cryptography)中已发展出来的数种安全加密机制,如 Symmetric Key Cryptography,Asymmetric Key Cryptography, One-way Hash Function,Random-number Generation等,来加强对于身份验证与通讯内容的安全保护。通讯时资料的加密有IDEA,three-key triple DES,DES,RC4-128,TSS,Blowfish 等数种多种安全加密算法可供选择,加密的key则是通过 RSA 进行交换的。资料的加密可以对抗IP spoofing,RSA这种非对称性的加密机制则可用来对抗DNS spoofing与IP routing spoofing,同时RSA也可以进行对主机身份的验证。
        其次,通过使用用SSH可以在本地主机和远程服务器之间设置"加密通道",并且这样设置的"加密通道"可以跟常见的Pop应用程序、X应用程序、Linuxconf应用程序相结合,提供安全保障。
        SSH的"加密通道"是通过"端口转发"来实现的。你可以在本地端口(没有用到的)和在远程服务器上运行的某个服务的端口之间建立"加密通道"。然后只要连接到本地端口。所有对本地端口的请求都被SSH加密并且转发到远程服务器的端口。当然只有远程服务器上运行SSH服务器软件的时候"加密通道"才能工作。

    配置思路:

    super password level 3 simple super

    #

     local-user adm password simple adm

     local-user adm service-type ssh

     local-user adm level 0

    #

    rsa peer-public-key p1

      public-key-code begin

       308186

         028180

           91ADC5A6 7C855676 2958E6E9 960559D6 3F606C86 5BE1C74C EA313F81 BAC7437D

           297A422C 8A0D9C9E AAC8276D E0DC21B9 DCA937C2 846AFFDF 987AEFE1 6204CC63

           0C881FC1 7848297C 82B0B443 5EEDA260 27A7B744 3280B68E 84194DCD 78D89B9E

           35EF76C2 B382A538 80DBBA80 60219F04 E5034168 60EEC72A 53598B6F FB3A5365

         0201

           25                                

      public-key-code end

     peer-public-key end

    #

    rsa local-key-pair create

    #

    ssh user adm assign rsa-key p1

    ssh user adm authentication-type rsa

    #

    user-interface vty 0 4

      authentication-mode local

    protocol inbound ssh

    创建SSH用户,并配置权限:

    local-user huawei service-type administrator ssh password simple 3com

    local-user adm service-type operator ssh password simple adm

    # 设置系统所支持的远程登录协议SSH及最大连接数5[0-5可选,并可选择附加acl规则]

        protocol inbound ssh 5

    # 产生本地RSA密钥对,但是disp current-configuration此命令是不显示的。

    rsa local-key-pair create

    # 进入公共密钥视图,配置客户端产生的公钥,p1是名字,可以任意指定,密钥产生见下章

    # 配置的顺序一定不能颠倒,此处的密钥是采用ssh 软件的公钥生成的对应密钥,将内容粘贴后即可。

      rsa peer-public-key p1

        public-key-code begin

         hex 308186

           hex 028180

             hex 91ADC5A6 7C855676 2958E6E9 960559D6 3F606C86 5BE1C74C EA313F81

             hex BAC7437D 297A422C 8A0D9C9E AAC8276D E0DC21B9 DCA937C2 846AFFDF

             hex 987AEFE1 6204CC63 0C881FC1 7848297C 82B0B443 5EEDA260 27A7B744

             hex 3280B68E 84194DCD 78D89B9E 35EF76C2 B382A538 80DBBA80 60219F04

             hex E5034168 60EEC72A 53598B6F FB3A5365

           hex 0201

             hex 25

        public-key-code end

    配置SSH用户的验证方式为RSA方式,all同时包含了RSA和password方式

       ssh user adm authentication-type rsa

       ssh user huawei authentication-type all

    #AAA需要打开

     aaa-enable

    Quidway] user-interface vty 0 4

    [Quidway-ui-vty0-4] authentication-mode scheme

    [Quidway-ui-vty0-4] protocol inbound ssh

    [Quidway] local-user client001

    [Quidway-luser-client001] password simple huawei

    [Quidway-luser-client001] service-type ssh

    [Quidway] ssh user client001 authentication-type password

1162/6<123456>
Open Toolbar