LAN管理器的设计与实现_主机信息探测与查询子系统的设计与实现 毕业设计说明书.doc

上传人:白大夫 文档编号:4508368 上传时间:2019-11-13 格式:DOC 页数:47 大小:712.06KB
返回 下载 相关 举报
LAN管理器的设计与实现_主机信息探测与查询子系统的设计与实现 毕业设计说明书.doc_第1页
第1页 / 共47页
LAN管理器的设计与实现_主机信息探测与查询子系统的设计与实现 毕业设计说明书.doc_第2页
第2页 / 共47页
LAN管理器的设计与实现_主机信息探测与查询子系统的设计与实现 毕业设计说明书.doc_第3页
第3页 / 共47页
LAN管理器的设计与实现_主机信息探测与查询子系统的设计与实现 毕业设计说明书.doc_第4页
第4页 / 共47页
LAN管理器的设计与实现_主机信息探测与查询子系统的设计与实现 毕业设计说明书.doc_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《LAN管理器的设计与实现_主机信息探测与查询子系统的设计与实现 毕业设计说明书.doc》由会员分享,可在线阅读,更多相关《LAN管理器的设计与实现_主机信息探测与查询子系统的设计与实现 毕业设计说明书.doc(47页珍藏版)》请在三一文库上搜索。

1、单位代码 10 学 号 分 类 号 TP393 密 级 毕业设计说明书LAN管理器的设计与实现主机信息探测与查询子系统的设计与实现 院(系)名称 专业名称 学生姓名 指导教师 2012年5月14日 LAN管理器的设计与实现主机信息探测与查询子系统的设计与实现摘 要目前,局域网已广泛应用于机关、学校、企事业单位等。围绕LAN管理器课程局域网建设任务,基于TCP/IP协议栈,在Windows下用VC编程语言,设计、实现了LAN管理器的主机信息探测与查询子系统。概述了课题的选题背景、课题来源、毕业设计任务及毕业设计说明书的组织结构,说明了主机信息探测与查询子系统的功能需求、性能需求和用户需求,重点介

2、绍了LAN管理器的总体设计及主机信息探测与查询子系统的具体实现环境和主要实现代码。测试结果表明该子系统能够正常工作,实现了预期目的,为LAN管理器的设计和实现打下了基础。关键词:LAN管理器,主机信息,探测与查询,VC黄河科技学院毕业设计说明书 第 II 页Design and Implementation of LAN Manager Host Detection and Query Subsystem Design and Achieve Author:Xing MingTutor:Sun FeixianAbstractLocal area networks (LAN) have been

3、 widely applied in offices, schools, enterprises, institutions, and etc. Rounding the graduation designing tasks, a host information detection and query sub-system is designed and implemented. The presented sub-system is based on Windows operating system, and it is implemented by VC programming lang

4、uage. With the research background and sources of the subject introduced, the graduate design tasks and organizational structure are given. Following that, the functional requirements, performance requirements and user requirements of the sub-system are illustrated. And then, the overall and detaile

5、d design methods of the host information detection and query sub-system are also given. Finally, the implementation environment and the main codes of the sub-system are described. Testing results show that the sub-system can work properly. Thus, it lays the foundation for the design and implementati

6、on of LAN management system.Keywords: LAN Management, Host Information, Detection and query, VC黄河科技学院毕业设计说明书 第 43 页目 录1 绪论11.1 选题背景11.2 课题来源11.3 毕设任务及本人贡献11.4 毕业设计说明书的组织结构22 需求分析32.1 功能需求32.2 性能需求32.3 用户需求33 系统设计43.1 设计思想43.2 总体设计43.3 详细设计54 系统实现64.1 系统实现环境说明64.2 主要模块的实现65 系统测试174.1 测试目的174.2 测试方法17

7、4.3 测试用例与测试结果174.4 测试结论22结论23致谢24参考文献25附录26源代码261 绪论1.1 选题背景自从计算机问世以来,安全问题就一直存在。特别是随着Internet的迅速扩张和电子商务的兴起,人们发现保护资源和数据的安全,让他免受来自恶意入侵者的威胁是件相当困难的事。提到网络安全,很多人首先想到的是防火墙,防火墙作为一种静态的访问控制类安全产品通常使用包过滤的技术来实现网络的隔离。适当配置的防火墙虽然可以将非预期的访问请求屏蔽在外,但不能检查出经过他的合法流量中是否包含着恶意的入侵代码。随着入侵手段的日益复杂和通用系统不时出现的安全缺陷,预先评估分析网络系统中存在的安全问

8、题,已经成为网络管理员们的重要需求。基于网络的安全扫描主要扫描设定网络内的服务器、路由器、网桥、交换机、访问服务器、防火墙等设备的安全漏洞,并可设定模拟攻击,以测试系统的防御能力。这种技术模拟入侵者可能的攻击行为,从系统外部进行扫描,以探测是否存在可以被入侵者利用的系统安全薄弱之处。针对网络入侵手段日益复杂、操作系统漏洞不断涌现等问题,预先评估网络信息系统存在的安全问题已成为网络管理员的重要需求。如何保障自身网络的安全,其中一个主要的方法就是自查自纠,而在这个过程中,对自己的网络进行扫描成为一种较为快捷、直观、简单的方法。扫描技术基于TCP/IP协议,对各种网络服务,无论是主机或者防火墙、路由

9、器都适用。同时, 扫描可以确认各种配置的正确性,避免遭受不必要的攻击。为了提高扫描的效率和精确度,主机的信息探测就是必不可少的。1.2 课题来源本课题来自河南省教育厅自然科学研究计划项目(编号2010A520048)。1.3 毕设任务及本人贡献围绕LAN管理器研究,采用ARP、Ping技术,设计主机信息的探测与查询方法,并用VC编程实现,同时连接数据库。要求:探测速度尽可能快;既能探测单个目标主机的信息,也能探测某一IP地址区间内主机的信息;具备一定穿透防火墙的能力。具体毕业设计任务如下:(1)根据任务书要求,收集材料,对比分析,完成译文和文献综述;(2)完成开题报告;(3)学习局域网程序设计

10、知识,设计并实现主机信息探测与查询子系统;(4)撰写毕业设计说明书。本人的主要贡献主要有以下几点:(1)完成译文和文献综述;(2)完成了开题报告;(3)实现了LAN管理器的总体设计和数据库设计;(4)测试了主机信息探测与查询子系统; (5)撰写了毕业设计说明书。1.4 毕业设计说明书的组织结构本学位论文包括中英文摘要、目录、绪论、正文、总结、参考文献、致谢、源代码,共八个部分。其中,论文的绪论、正文和总结三部分的组织安排如下:(1) 绪论:首先介绍了课题的研究背景和课题来源,然后介绍了本文的研究内容与主要贡献,最后列出了论文的组织结构。(2) 需求分析:主要介绍了该系统的用户需求、功能需求和性

11、能需求。(3) 系统设计:详细介绍了LAN管理器主机信息探测与查询子系统的基本思想、整体设计和详细设计。(4) 系统实现:给出系统实现的标准测试环境和实现系统的主要代码。(5) 系统测试:在标准测试环境下的测试结果进行分析。(6) 总结:对论文的主要工作进行了总结。2 需求分析2.1 功能需求(1) 探测与查询功能可利用多种技术对主机信息进行探测与查询。(2) 防火墙穿越功能防火墙穿越,即在对方已安装防火墙并且正常运行的情况下探测主机信息,这是主机信息探测与查询系统的核心功能,也是主机信息探测与查询系统必不可少的功能。2.2 性能需求尽可能快的探测到主机信息,既能探测单个目标主机的信息,也能探

12、测某一IP地址区间内主机的信息,具备一定穿透防火墙的能力,同时准确率不低于90%。2.3 用户需求用户需求主要有以下几个方面:(1) 通过简单的操作就能够探测到主机信息,并且有必要的返回信息并记录结果;(2) 在对方打开防火墙禁止Ping的时候,我们Ping不通的时候应该通过一种有效的方式来探测到对方主机信息;(3) 可以同时探测多个主机的信息;(4) 在某一主机的信息发生变更时可以更新出所变更后的信息;(5) 具有数据存储功能。3 系统设计3.1 设计思想通过arp协议,调用arp功能函数,实现主机信息的探测,通过函数的返回值来判断主机的是否存活,并且获取存活主机的mac。然后通过IP层协议

13、获取主机的详细信息(gethostbyaddr),例如:主机名字,地址类型,主机网络地址等;当获取信息之后存入数据库(sql server 2005),于是要用到数据库的存取知识。由于探测主机的范围比较大,所以需要用到多线程的思想。3.2 总体设计基于ARP协议的主机信息探测与查询系统主要包括域名解析和IP地址的转换、ARP请求发送与处理两大模块,各模块的功能简述如下:域名解析及IP地址转换:调用inet_addr将输入的点分十进制数表示的IP地址转换为网络字节顺序的IP地址;获取主机名:调用gethostbyaddr获取存活主机的主机名;ARP请求发送与处理:调用sendARP函数向目标地址

14、发送ARP请求;获取MAC地址,判断ARP返回的MAC地址转换成易读的形式,并将主机信息写入数据库。依据上述理论,具体的功能模块如图3.1所示。图3.1 功能模块3.3 详细设计依据毕业设计任务书要求,自己负责设计的LAN管理器的主机信息与探测流程图如图3.2所示。图3.2 程序探测流程图4 系统实现4.1 系统实现环境说明操作系统:Windows xp开发工具:Visual studio 6.0 数据库:sql server 20054.2 主要模块的实现(1) 封装CDataClass类首先封装了一个基于CObject类的CDataClass类来操作数据库,有连接数据库,打开数据库记录,添

15、加信息,删除信息,更新信息等功能,代码如下:class CDataClass:CObjectpublic:CDataClass();bool Delete(CString sql);bool Insert(CString sql);bool Update(CString sql);_RecordsetPtr & Select(CString sql);bool Close();bool Open();_RecordsetPtr pRst;CDataClass();private:_ConnectionPtr pConn; / 建立Connection _CommandPtr pCmd; / 建

16、立Command;CDataClass:CDataClass()WaitForSingleObject(hMutex,INFINITE);CoInitialize(NULL);pRst.CreateInstance(_uuidof(Recordset);pConn.CreateInstance(_uuidof(Connection);pCmd.CreateInstance(_uuidof(Command);bool CDataClass:Open()HRESULT res=0;trypConn-ConnectionString =Provider=SQLOLEDB.1;Integrated S

17、ecurity=SSPI;Persist Security Info=False;Initial Catalog=LanMana;Data Source=.;/LT-PCSQLEXPRESSres=pConn-Open(,adModeUnknown);pCmd-ActiveConnection=pConn;catch (_com_error e) AfxMessageBox(e.Description();return false;return true;_RecordsetPtr & CDataClass:Select(CString sql)trypCmd-CommandText=(LPC

18、TSTR)sql;pRst=pCmd-Execute(NULL,NULL,adCmdText);catch (_com_error e) AfxMessageBox(e.Description();return pRst;bool CDataClass:Insert(CString sql)trypCmd-CommandText=(LPCTSTR)sql;pCmd-Execute(NULL,NULL,adCmdText);catch (_com_error e) AfxMessageBox(e.Description();return false;return true;bool CDataC

19、lass:Delete(CString sql)trypCmd-CommandText=(LPCTSTR)sql;pCmd-Execute(NULL,NULL,adCmdText);catch (_com_error e) AfxMessageBox(e.Description();return false;return true;bool CDataClass:Update(CString sql)trypCmd-CommandText=(LPCTSTR)sql;pCmd-Execute(NULL,NULL,adCmdText);catch (_com_error e) AfxMessage

20、Box(e.Description();return false;return true;bool CDataClass:Close()trypConn-Close();catch (_com_error e) AfxMessageBox(e.Description();ReleaseMutex(hMutex);return false;return true;CDataClass:CDataClass()CoUninitialize();ReleaseMutex(hMutex);(2) 所用的主要成员变量如图4.1所示。图4.1 主要成员变量(3) 初始化函数代码通过初始化函数探测该主机所在

21、IP地址的地址段信息,并初始化列表函数的头标题,代码如下:WSADATA wsadata;CString str;if(WSAStartup(MAKEWORD(2,2),&wsadata)str.Format(不能初始化sock!);MessageBox(LPCTSTR)str);exit(0);char hostname256;gethostname(hostname,sizeof(hostname);hostent *host=gethostbyname(hostname);char* IP=inet_ntoa(*(in_addr*)host-h_addr_list0);m_IPAddre

22、ss.Format(%s,IP);int a,b,c;sscanf(IP,%d.%d.%d.%d,&a,&b,&c,&m_Begin);m_IPAddressPre.Format(%d.%d.%d.,a,b,c);m_Pre.Format(%s,(LPCTSTR)m_IPAddressPre);m_Begin=1;UpdateData(false);/隐藏侧边栏OnButtonSorh();/初始化互斥量hMutex=CreateMutex(NULL,false,NULL);LVCOLUMN lvColumn;char HeaderTxt510= 序号,IP地址,电脑名,MAC地址,操作系统;

23、int nWidth5=50,100,100,120,100;for(int i=0;i5;i+)lvColumn.mask = LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH|LVCF_FMT;lvColumn.fmt = LVCFMT_CENTER;lvColumn.iSubItem = i;lvColumn.pszText = HeaderTxti;lvColumn.cx = nWidthi;m_Info.InsertColumn(i,&lvColumn);(4) 探测该局域网内存活的主机的代码检测函数:void CLanManaDlg:OnButtonIndex()

24、 / TODO: Add your control notification handler code here/向数据库增加数据if(m_IsOn=true)UpdateData(true);CDataClass ado;CString sql;if(!ado.Open()return;for (int i=m_Begin;i=m_End;i+)if(i=m_Begin)sql.Format(delete from IPInfo);if(!ado.Delete(sql)return; sql.Format(insert into IPInfo values(%s%d,0,),(LPCTSTR

25、)m_IPAddressPre,i);if(!ado.Insert(sql)return;if(!ado.Close()return;m_Index.SetWindowText(中止);SetTimer(1,2000,NULL);int * span=new int2;span0=m_Begin;span1=m_End;m_HThread=AfxBeginThread(ExploreHost,span);if(m_HThread=NULL)exit(1);m_IsOn=false;elsem_Index.SetWindowText(检测);TerminateThread(m_HThread,-

26、1);KillTimer(1);m_IsOn=true;(5) 线程函数以及探测函数UINT CLanManaDlg:ExploreHost(LPVOID param)int *span=(int *)param;int begin=span0,end=span1;delete span;while(true)for (int i=begin;i=end;i+=SPAN)int *p=new int2;p0=i;if(i+SPANend)p1=i+SPAN;elsep1=end;HANDLE HThread=AfxBeginThread(GetHostInfo,p);if(HThread=NU

27、LL)exit(1);Sleep(50000);return 0;UINT CLanManaDlg:GetHostInfo(LPVOID param)int *p=(int *)param;int begin=p0,end=p1;delete p;BYTE Mac6;CString IP;for (int i=begin;iend)break;IP.Format(%s%d,(LPCTSTR)m_IPAddressPre,i);char pIP16;strcpy(pIP,IP.GetBuffer(16);HRESULT hr = Arp(pIP,Mac);if(hr = 0)CString st

28、r;CString strMac();CString strHostname();int i;for(i=0;ih_name;/操作数据库CString sql;CDataClass dao;int res=dao.Open();if(res=-1)return -1;sql.Format(update IPInfo set hostname=%s,MAC=%s,isonline=1 where IP=%s,(LPCTSTR)strHostname,(LPCTSTR)strMac,(LPCTSTR)IP);if(!dao.Update(sql)return -1;if(!dao.Close()

29、return -1;elseCString sql;CDataClass dao;if(!dao.Open()return -1;sql.Format(update IPInfo set isonline=0 where IP=%s,(LPCTSTR)IP);if(!dao.Update(sql)return -1;if(!dao.Close()return -1;return 0;(6) 精确查询、模糊查询的代码void CLanManaDlg:OnButtonQuary() / TODO: Add your control notification handler code hereUpd

30、ateData(true);if (m_IsAuto=true)KillTimer(1);m_Refresh.SetWindowText(继续);m_IsAuto=false;int ID1,ID2;CString str1,str2;ID1=GetCheckedRadioButton(IDC_RADIO_EXACT,IDC_RADIO_DIM);ID2=GetCheckedRadioButton(IDC_RADIO_HOSTNAME,IDC_RADIO_MAC);(CButton*)GetDlgItem(ID1)-GetWindowText(str1);(CButton*)GetDlgIte

31、m(ID2)-GetWindowText(str2);if(!str1.Compare(精确)if (!str2.Compare(主机名)CString sql;sql.Format(select * from IPInfo where hostname=%s and isonline=1,(LPCTSTR)m_Text);GetData(sql);else if (!str2.Compare(IP地址)CString sql;sql.Format(select * from IPInfo where IP=%s and isonline=1,(LPCTSTR)m_Text);GetData(

32、sql);elseCString sql;sql.Format(select * from IPInfo where MAC=%s and isonline=1,(LPCTSTR)m_Text);GetData(sql);elseif (!str2.Compare(主机名)CString sql;sql.Format(select * from IPInfo where hostname like %s% and isonline=1,(LPCTSTR)m_Text);GetData(sql);else if (!str2.Compare(IP地址)CString sql;sql.Format

33、(select * from IPInfo where IP like %s% and isonline=1,(LPCTSTR)m_Text);GetData(sql);elseCString sql;sql.Format(select * from IPInfo where MAC like %s% and isonline=1,(LPCTSTR)m_Text);GetData(sql);(7) 数据显示函数void CLanManaDlg:GetData(CString sql)/操作数据库_RecordsetPtr pRst(_uuidof(Recordset);CDataClass d

34、ao;dao.Open();pRst=dao.Select(sql);if(pRst=NULL)return;m_Info.DeleteAllItems();int ID=0;trywhile (!pRst-adoEOF)CString num;num.Format(%d,ID+1);CString IP=(LPCTSTR)(_bstr_t)pRst-GetCollect(IP),Hostname=(LPCTSTR)(_bstr_t)pRst-GetCollect(hostname),MAC=(LPCTSTR)(_bstr_t)pRst-GetCollect(MAC);int IsOnline

35、=(long)pRst-GetCollect(isonline);CString OS=(LPCTSTR)(_bstr_t)pRst-GetCollect(OS);m_Info.InsertItem(ID,(LPCTSTR)num);m_Info.SetItemText(ID,1,(LPCTSTR)IP);m_Info.SetItemText(ID,2,(LPCTSTR)Hostname);m_Info.SetItemText(ID,3,(LPCTSTR)MAC);m_Info.SetItemText(ID,4,(LPCTSTR)OS);ID+;pRst-MoveNext();pRst-Clo

36、se();dao.Close();catch (_com_error e)MessageBox(e.Description();(8) 定时刷新void CLanManaDlg:OnTimer(UINT nIDEvent) CString sql(select * from IPInfo where isonline=1);switch(nIDEvent) case 1:GetData(sql);break;case 2:break;default:;CDialog:OnTimer(nIDEvent);(9) 搜索区域的显示与隐藏void CLanManaDlg:OnButtonSorh()

37、static CRect RectLarge(0,0,0,0),RectSmall(0,0,0,0);if(RectLarge.IsRectNull()GetWindowRect(RectLarge);RectSmall=RectLarge;RectSmall.right-=200;if(m_IsShow)SetWindowPos(NULL,RectLarge.left,RectLarge.right,RectLarge.Width(),RectLarge.Height(),SWP_NOZORDER|SWP_NOMOVE);m_IsShow=false;elseSetWindowPos(NUL

38、L,RectSmall.left,RectSmall.right,RectSmall.Width(),RectSmall.Height(),SWP_NOZORDER|SWP_NOMOVE);m_IsShow=true;5 系统测试5.1 测试目的测试所做程序能否按照按照要求完成探测任务,是否能够快而准确的得到结果,能否满足用户的需求。5.2 测试方法在局域网信息探测与查询系统的开发环境下进行模拟测试,并组建一个小型的局域网来验证。5.3 测试用例与测试结果主界面如图5.1所示。图5.1 程序界面点击检测之后的结果如图5.2所示。图5.2 程序界面点击”检测”按钮后,该按钮会改变为“中止”按钮,

39、在检测过程中如点击“中止”按钮,则会中止该次检测。缩小探测范围所探测到的结果如图5.3所示。图5.3 程序界面若IP网段有所变化,可以点击“刷新”按钮,可以探测出新的网段。刷新之前的界面如图5.4所示。图5.4 程序界面刷新之后的界面如图5.5所示。图5.5 程序界面如果在探测过程中有新的主机打开,同样可以点击“刷新”按钮,便可以将新的主机信息显示出来。刷新之前的界面如图5.6所示。图5.6 程序界面刷新之后的界面如图5.7所示。图5.7 程序界面精确、模糊查询界面如图5.8所示。图5.8 程序界面在该界面,可以通过主机名、IP地址、MAC地址分别进行精确和模糊的查询。精确、模糊查询的事例如图

40、5.9、5.10所示。图5.9 程序界面图5.10 程序界面5.4 测试结论LAN管理器主机信息探测与查询子系统能够较好的实现主机信息的探测与查询任务,并且在其他主机防火墙开启的情况下依然可以探测到有效地信息,所显示的信息也比较准确,并且精确和模糊查询功能也能运行正常,能够在较短的时间内完成任务。所探测到的主机相关信息,可以同时更新到sql server数据库中,做到了对探测结果的有效保存。LAN管理器主机信息探测与查询子系统在功能方面,完成了探测与查询功能和防火墙穿越功能,在性能方面,能够在较短的时间内完成对单个或多个主机的信息探测,准确率也不低于90%,在用户方面,做到了操作简单、界面简洁、及时更新、数据存储等功能。LAN管理器主机信息探测与查询子系统基本完成了预期的目标。结论通过这次的局域网信息探测与查询系统的设计,让我受益良多。这是一次综合网络、数据库和VC编程的设计过程。我了解和掌握了网络的一些特性,并且能够进行数据库的设计和使用VC进行相关软件的编程,同时培养了正确的设计思想和分析问题解决问题的能力,特别是整体设计和各功能模块的详细设计能力,以及解决实际碰到困难解决困难的能力,学到了很

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1