计算机网络管理课程设计 1.引言 简单网络管理协议(SNMP)首先是由 Internet工程任务组织(Internet Engineering Task Force)(IETF)的研究小组为了解决 Internet上的路由器管理问题而提出的。 SNMP被设计成与协议无关,所以它可以在 IP,IPX,AppleTalk,OSI以及其他用到的传输协议上被使用。它具有简单性,易于扩展性的特点。SNMP是一系列协议组和规范(见下表),它们提供了一种从网络上的设备中收集网络管理信息的方法。SNMP也为设备向网络管理工作站报告问题和错误提供了一种方法。 名字 说明 MIB 管理信息库 SMI 管理信息的结构和标识 SNMP 简单网络管理协议 从被管理设备中收集数据有两种方法:一种是只轮询(polling-only)的方法,另一种是基于中断(interrupt-based)的方法。Snmp发展到现在共有三个版本,本课程设计是基于 snmpv1版本。 2.设计任务及思想 2.1任务: 设计一个 Manager。Manager可以向华为网络设备发送 get和 set报文,并获得有效操作结果,实现版本为 SNMPv1. 开发工具:VC++(Win32) 内容: Socket网络通信、 BER编码、BER解码、SNMP报文构造、SNMP报文解析、用户输入/输出。 2.2思想: 根据 snmp协议,分析抓包软件抓出的结果。Manager在进行操作时,先对要发送的报文进行构造,然后对要发送的报文各数据类型依据 asn.1进行编码再发送。agent接收到报文后,进行报文解析,再解码。看 manager的要求是什么,然后回应一个报文,即 response报文,manager即对回应的报文进行解析解码,整个过程由 socket通信完成,snmp报文封装在 udp中发送。 3设计过程 2.1 BER编码和解码 Ber编码是整个设计过程中的极为重要的部分,一个报文有很多段组成,每段的数据类型都不尽相同。对每一种数据类型都要进行编码,即编成tlv。计算机只认识 0和 1;在编码时,我们考虑把它编成一个字节一个字节的形式发送,便于解析处理。下面列出常用的几种数据类型的编码以及代码: 整型:要考虑多种情况。 void Integer_TLV(unsigned char *TLV,int &len,int value) { unsigned char * tlv; tlv=TLV; tlv[0]=INTEGER;//TLV_T stack s; if (value>=0) { if(value<=127) { tlv[1]=1;//TLV_L tlv[2]=value;//TLV__V len=3; } else//>128 { convert(s,value,2); int length=((s.top-s.base)%8); if(length==0)// { int num_8=(s.top-s.base)/8; tlv[1]=num_8+1;//TLV_L l...