课程设计任务书2009—2010学年第一学期专业:计算机应用技术学号:姓名:课程设计名称:计算机网络课程设计设计题目:编程简单实现SNMP完成期限:自2009年12月7日至2009年12月14日共1周设计目的:SNMP是简单网络管理协议,主要用来管理网络设备到目前为止几乎所有的网络产品都要为其提供支持,以方便管理员的管理和软件开发人员的开发。我们来研究有关SNMP编程,以便更好的运用。功能要求:程序能够用SNMP编程实验管理网络设备。一、设计的任务:熟悉SNMP的基本理论,基于VC++6.0下,有关SNMP编程的过程及API函数的用法。二、开发工具:C++语言三、进度安排:序号阶段内容所需时间1布置任务及调研2天2系统分析与设计2天3调试及报告撰写2天合计6天四、主要参考资料:[1]岑贤道.网络管理协议及应用开发[M].清华大学出版社.1998.[2]邢国光.简单网络管理协议的理论与实践[M].国防工业出版社.1999.[3]陈庆章.网络原理与技术[M].高等教育出版社.2005[4]晏国晟.简单网络管理[M].清华大学出版社.2004[5]谭浩强.程序设计(第二版)[M].清华大学出版社,2000指导教师(签字):教研室主任(签字):批准日期:年月日课程设计说明书(论文)用纸摘要SNMP(SimpleNetworkManagementProtocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。随后,人们对SGMP进行了很大的修改,特别是加入了符合Internet定义的SMI和MIB:体系结构,改进后的协议就是著名的SNMP。SNMP的目标是管理互联网Internet上众多厂家生产的软硬件平台,因此SNMP受Internet标准网络管理框架的影响也很大。现在SNMP已经出到第三个版本的协议,其功能较以前已经大大地加强和改进了。SNMP的体系结构是围绕着以下四个概念和目标进行设计的:保持管理代理(agent)的软件成本尽可能低;最大限度地保持远程管理的功能,以便充分利用Internet的网络资源;体系结构必须有扩充的余地;保持SNMP的独立性,不依赖于具体的计算机、网关和网络传输协议。在最近的改进中,又加入了保证SNMP体系本身安全性的目标。关键词:SNMP;简单网络管理协议课程设计说明书(论文)用纸目录1SNMP的概述...............................................................................................................12课程设计的主要内容及过程....................................................................................22.1加载SNMP.........................................................................................................22.2建立会话.........................................................................................................22.3设置传输模式.................................................................................................32.4创建实体.........................................................................................................32.5设置重传模式.................................................................................................32.6设置超时时间.................................................................................................42.7设置重传次数.................................................................................................42.8创建上下文句炳..............................................................................................42.9创建变量捆绑列表.........................................................................................42.10追加绑定列表...............................................................................................52.11创建PDU........................................................................................................63接收消息并处理........................................................................................................73.1接收消息..........................................................................................................73.2提取数据报......................................................................................................73.3计算返回列表数目..........................................................................................83.4取得返回结果..................................................................................................84程序代码....................................................................................................................9总结......................................................................................................................11主要参考文献..............................................................................................................12课程设计说明书(论文)用纸第1页共12页1SNMP的概述SNMP开发于九十年代早期,其目的是简化大型网络中设备的管理和数据的获取。许多与网络有关的软件包,如HP的OpenView和NortelNetworks的OptivityNetworkManagementSystem,还有MultiRouterTrafficGrapher(MRTG)之类的免费软件,都用SNMP服务来简化网络的管理和维护。由于SNMP的效果实在太好了,所以网络硬件厂商开始把SNMP加入到它们制造的每一台设备。今天,各种网络设备上都可以看到默认启用的SNMP服务,从交换机到路由器,从防火墙到网络打印机,无一例外。仅仅是分布广泛还不足以造成威胁,问题是许多厂商安装的SNMP都采用了默认的通信字符串(例如密码),这些通信字符串是程序获取设备信息和修改配置必不可少的。采用默认通信字符串的好处是网络上的软件可以直接访问设备,无需经过复杂的配置。通信字符串主要包含两类命令:GET命令,SET命令。GET命令从设备读取数据,这些数据通常是操作参数,例如连接状态、接口名称等。SET命令允许设置设备的某些参数,这类功能一般有限制,例如关闭某个网络接口、修改路由器参数等功能。但很显然,GET、SET命令都可能被用于拒绝服务攻击(DoS)和恶意修改网络参数。最常见的默认通信字符串是public(只读)和private(读/写),除此之外还有许多厂商私有的默认通信字符串。几乎所有运行SNMP的网络设备上,都可以找到某种形式的默认通信字符串。SNMP2.0和SNMP1.0的安全机制比较脆弱,通信不加密,所有通信字符串和数据都以明文形式发送。攻击者一旦捕获了网络通信,就可以利用各种嗅探工具直接获取通信字符串,即使用户改变了通信字符串的默认值也无济于事。近几年才出现的SNMP3.0解决了一部分问题。为保护通信字符串,SNMP3.0使用DES(DataEncryptionStandard)算法加密数据通信;另外,SNMP3.0还能够用MD5和SHA(SecureHashAlgorithm)技术验证节点的标识符,从而防止攻击者冒充管理节点的身份操作网络[1]。课程设计说明书(论文)用纸第2页共12页虽然SNMP3.0出现已经有一段时间了,但目前还没有广泛应用。如果设备是2、3年前的产品,很可能根本不支持SNMP3.0;甚至有些较新的设备也只有SNMP2.0或SNMP1.0。即使设备已经支持SNMP3.0,许多厂商使用的还是标准的通信字符串,这些字符串对黑客组织来说根本不是秘密。因此,虽然SNMP3.0比以前的版本提供了更多的安全特性,如果配置不当,其实际效果仍旧有限。2课程设计的主要内容及过程和其他编程过程一样,整个SNMP编程也要经过一个创建,执行,销毁的过程,通俗点说就是要做准备,初始化SNMP环境即加载SNMP的功能,接着就要执行所进行的操作,SNMP是基于消息机制的,所以消息传递与管理是我们在编程中所必须注意的问题,最后要进行销毁和回收资源[2]。2.1加载SNMP用到的函数是SnmpStartup(smiLPUINT32nMajorVersion,miLPUINT32nMinorVersion,smiLPUINT32nLevel,smiLPUINT32nTranslateMode,smiLPUINT32nRetransmitMode);五个参数作为接收参数返回SNMP的主版本号,副版本号,支持最高的操作标准,默认的实体/上下文传输模式,默认的重发机制。2.2建立会话用到的函数是HSNMP_SESSIONSnmpOpen(HWNDhWnd,//handletothenotificationwindowUINTwMsg//windownotificationmessagenumber);或HSNMP_SESSIONSnmpCreateSession(HWNDhWnd,//handletothenotificationwindowUINTwMsg,//windownotific