LAN管理器的设计与实现 主机信息探测与查询子系统的设计与实现毕业设计说明书.docx
- 文档编号:5800664
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:49
- 大小:285.68KB
LAN管理器的设计与实现 主机信息探测与查询子系统的设计与实现毕业设计说明书.docx
《LAN管理器的设计与实现 主机信息探测与查询子系统的设计与实现毕业设计说明书.docx》由会员分享,可在线阅读,更多相关《LAN管理器的设计与实现 主机信息探测与查询子系统的设计与实现毕业设计说明书.docx(49页珍藏版)》请在冰豆网上搜索。
LAN管理器的设计与实现主机信息探测与查询子系统的设计与实现毕业设计说明书
单位代码10
学号
分类号TP393
密级
毕业设计说明书
LAN管理器的设计与实现
—主机信息探测与查询子系统的设计与实现
院(系)名称
专业名称
学生姓名
指导教师
QQ997237619
2012年5月14日
LAN管理器的设计与实现
——主机信息探测与查询子系统的设计与实现
摘要
目前,局域网已广泛应用于机关、学校、企事业单位等。
围绕LAN管理器课程局域网建设任务,基于TCP/IP协议栈,在Windows下用VC编程语言,设计、实现了LAN管理器的主机信息探测与查询子系统。
概述了课题的选题背景、课题来源、毕业设计任务及毕业设计说明书的组织结构,说明了主机信息探测与查询子系统的功能需求、性能需求和用户需求,重点介绍了LAN管理器的总体设计及主机信息探测与查询子系统的具体实现环境和主要实现代码。
测试结果表明该子系统能够正常工作,实现了预期目的,为LAN管理器的设计和实现打下了基础。
关键词:
LAN管理器,主机信息,探测与查询,VC
DesignandImplementationofLANManager
——HostDetectionandQuerySubsystemDesignandAchieve
Author:
XingMing
Tutor:
SunFeixian
Abstract
Localareanetworks(LAN)havebeenwidelyappliedinoffices,schools,enterprises,institutions,andetc.Roundingthegraduationdesigningtasks,ahostinformationdetectionandquerysub-systemisdesignedandimplemented.Thepresentedsub-systemisbasedonWindowsoperatingsystem,anditisimplementedbyVCprogramminglanguage.Withtheresearchbackgroundandsourcesofthesubjectintroduced,thegraduatedesigntasksandorganizationalstructurearegiven.Followingthat,thefunctionalrequirements,performancerequirementsanduserrequirementsofthesub-systemareillustrated.Andthen,theoverallanddetaileddesignmethodsofthehostinformationdetectionandquerysub-systemarealsogiven.Finally,theimplementationenvironmentandthemaincodesofthesub-systemaredescribed.Testingresultsshowthatthesub-systemcanworkproperly.Thus,itlaysthefoundationforthedesignandimplementationofLANmanagementsystem.
Keywords:
LANManagement,HostInformation,Detectionandquery,VC
1绪论
1.1选题背景
自从计算机问世以来,安全问题就一直存在。
特别是随着Internet的迅速扩张和电子商务的兴起,人们发现保护资源和数据的安全,让他免受来自恶意入侵者的威胁是件相当困难的事。
提到网络安全,很多人首先想到的是防火墙,防火墙作为一种静态的访问控制类安全产品通常使用包过滤的技术来实现网络的隔离。
适当配置的防火墙虽然可以将非预期的访问请求屏蔽在外,但不能检查出经过他的合法流量中是否包含着恶意的入侵代码。
随着入侵手段的日益复杂和通用系统不时出现的安全缺陷,预先评估分析网络系统中存在的安全问题,已经成为网络管理员们的重要需求。
基于网络的安全扫描主要扫描设定网络内的服务器、路由器、网桥、交换机、访问服务器、防火墙等设备的安全漏洞,并可设定模拟攻击,以测试系统的防御能力。
这种技术模拟入侵者可能的攻击行为,从系统外部进行扫描,以探测是否存在可以被入侵者利用的系统安全薄弱之处。
针对网络入侵手段日益复杂、操作系统漏洞不断涌现等问题,预先评估网络信息系统存在的安全问题已成为网络管理员的重要需求。
如何保障自身网络的安全,其中一个主要的方法就是自查自纠,而在这个过程中,对自己的网络进行扫描成为一种较为快捷、直观、简单的方法。
扫描技术基于TCP/IP协议,对各种网络服务,无论是主机或者防火墙、路由器都适用。
同时,扫描可以确认各种配置的正确性,避免遭受不必要的攻击。
为了提高扫描的效率和精确度,主机的信息探测就是必不可少的。
1.2课题来源
本课题来自河南省教育厅自然科学研究计划项目(编号2010A520048)。
1.3毕设任务及本人贡献
围绕LAN管理器研究,采用ARP、Ping技术,设计主机信息的探测与查询方法,并用VC编程实现,同时连接数据库。
要求:
探测速度尽可能快;既能探测单个目标主机的信息,也能探测某一IP地址区间内主机的信息;具备一定穿透防火墙的能力。
具体毕业设计任务如下:
(1)根据任务书要求,收集材料,对比分析,完成译文和文献综述;
(2)完成开题报告;
(3)学习局域网程序设计知识,设计并实现主机信息探测与查询子系统;
(4)撰写毕业设计说明书。
本人的主要贡献主要有以下几点:
(1)完成译文和文献综述;
(2)完成了开题报告;
(3)实现了LAN管理器的总体设计和数据库设计;
(4)测试了主机信息探测与查询子系统;
(5)撰写了毕业设计说明书。
1.4毕业设计说明书的组织结构
本学位论文包括中英文摘要、目录、绪论、正文、总结、参考文献、致谢、源代码,共八个部分。
其中,论文的绪论、正文和总结三部分的组织安排如下:
(1)绪论:
首先介绍了课题的研究背景和课题来源,然后介绍了本文的研究内容与主要贡献,最后列出了论文的组织结构。
(2)需求分析:
主要介绍了该系统的用户需求、功能需求和性能需求。
(3)系统设计:
详细介绍了LAN管理器主机信息探测与查询子系统的基本思想、整体设计和详细设计。
(4)系统实现:
给出系统实现的标准测试环境和实现系统的主要代码。
(5)系统测试:
在标准测试环境下的测试结果进行分析。
(6)总结:
对论文的主要工作进行了总结。
2需求分析
2.1功能需求
(1)探测与查询功能
可利用多种技术对主机信息进行探测与查询。
(2)防火墙穿越功能
防火墙穿越,即在对方已安装防火墙并且正常运行的情况下探测主机信息,这是主机信息探测与查询系统的核心功能,也是主机信息探测与查询系统必不可少的功能。
2.2性能需求
尽可能快的探测到主机信息,既能探测单个目标主机的信息,也能探测某一IP地址区间内主机的信息,具备一定穿透防火墙的能力,同时准确率不低于90%。
2.3用户需求
用户需求主要有以下几个方面:
(1)通过简单的操作就能够探测到主机信息,并且有必要的返回信息并记录结果;
(2)在对方打开防火墙禁止Ping的时候,我们Ping不通的时候应该通过一种有效的方式来探测到对方主机信息;
(3)可以同时探测多个主机的信息;
(4)在某一主机的信息发生变更时可以更新出所变更后的信息;
(5)具有数据存储功能。
3系统设计
3.1设计思想
通过arp协议,调用arp功能函数,实现主机信息的探测,通过函数的返回值来判断主机的是否存活,并且获取存活主机的mac。
然后通过IP层协议获取主机的详细信息(gethostbyaddr),例如:
主机名字,地址类型,主机网络地址等;当获取信息之后存入数据库(sqlserver2005),于是要用到数据库的存取知识。
由于探测主机的范围比较大,所以需要用到多线程的思想。
3.2总体设计
基于ARP协议的主机信息探测与查询系统主要包括域名解析和IP地址的转换、ARP请求发送与处理两大模块,各模块的功能简述如下:
域名解析及IP地址转换:
调用inet_addr将输入的点分十进制数表示的IP地址转换为网络字节顺序的IP地址;获取主机名:
调用gethostbyaddr获取存活主机的主机名;
ARP请求发送与处理:
调用sendARP函数向目标地址发送ARP请求;获取MAC地址,判断ARP返回的MAC地址转换成易读的形式,并将主机信息写入数据库。
依据上述理论,具体的功能模块如图3.1所示。
图3.1功能模块
3.3详细设计
依据毕业设计任务书要求,自己负责设计的LAN管理器的主机信息与探测流程图如图3.2所示。
图3.2程序探测流程图
4系统实现
4.1系统实现环境说明
操作系统:
Windowsxp
开发工具:
Visualstudio6.0
数据库:
sqlserver2005
4.2主要模块的实现
(1)封装CDataClass类
首先封装了一个基于CObject类的CDataClass类来操作数据库,有连接数据库,打开数据库记录,添加信息,删除信息,更新信息等功能,代码如下:
classCDataClass:
CObject
{
public:
CDataClass();
boolDelete(CStringsql);
boolInsert(CStringsql);
boolUpdate(CStringsql);
_RecordsetPtr&Select(CStringsql);
boolClose();
boolOpen();
_RecordsetPtrpRst;
~CDataClass();
private:
_ConnectionPtrpConn;//建立Connection
_CommandPtrpCmd;//建立Command
};
CDataClass:
:
CDataClass()
{
WaitForSingleObject(hMutex,INFINITE);
CoInitialize(NULL);
pRst.CreateInstance(__uuidof(Recordset));
pConn.CreateInstance(__uuidof(Connection));
pCmd.CreateInstance(__uuidof(Command));
}
boolCDataClass:
:
Open()
{
HRESULTres=0;
try
{
pConn->ConnectionString="Provider=SQLOLEDB.1;
IntegratedSecurity=SSPI;
PersistSecurityInfo=False;
InitialCatalog=LanMana;
DataSource=.";//LT-PC\\SQLEXPRESS
res=pConn->Open("","","",adModeUnknown);
pCmd->ActiveConnection=pConn;
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
returnfalse;
}
returntrue;
}
_RecordsetPtr&CDataClass:
:
Select(CStringsql)
{
try
{
pCmd->CommandText=(LPCTSTR)sql;
pRst=pCmd->Execute(NULL,NULL,adCmdText);
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
}
returnpRst;
}
boolCDataClass:
:
Insert(CStringsql)
{
try
{
pCmd->CommandText=(LPCTSTR)sql;
pCmd->Execute(NULL,NULL,adCmdText);
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
returnfalse;
}
returntrue;
}
boolCDataClass:
:
Delete(CStringsql)
{
try
{
pCmd->CommandText=(LPCTSTR)sql;
pCmd->Execute(NULL,NULL,adCmdText);
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
returnfalse;
}
returntrue;
}
boolCDataClass:
:
Update(CStringsql)
{
try
{
pCmd->CommandText=(LPCTSTR)sql;
pCmd->Execute(NULL,NULL,adCmdText);
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
returnfalse;
}
returntrue;
}
boolCDataClass:
:
Close()
{
try
{
pConn->Close();
}
catch(_com_errore){
AfxMessageBox(e.Description());
ReleaseMutex(hMutex);
returnfalse;
}
returntrue;
}
CDataClass:
:
~CDataClass()
{
CoUninitialize();
ReleaseMutex(hMutex);
}
(2)所用的主要成员变量如图4.1所示。
图4.1主要成员变量
(3)初始化函数代码
通过初始化函数探测该主机所在IP地址的地址段信息,并初始化列表函数的头标题,代码如下:
WSADATAwsadata;
CStringstr;
if(WSAStartup(MAKEWORD(2,2),&wsadata))
{
str.Format("不能初始化sock!
");
MessageBox((LPCTSTR)str);
exit(0);
}
charhostname[256];
gethostname(hostname,sizeof(hostname));
hostent*host=gethostbyname(hostname);
char*IP=inet_ntoa(*(in_addr*)host->h_addr_list[0]);
m_IPAddress.Format("%s",IP);
inta,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);
LVCOLUMNlvColumn;
charHeaderTxt[5][10]={"序号","IP地址","电脑名","MAC地址","操作系统"};
intnWidth[5]={50,100,100,120,100};
for(inti=0;i<5;i++)
{
lvColumn.mask=LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH|LVCF_FMT;
lvColumn.fmt=LVCFMT_CENTER;
lvColumn.iSubItem=i;
lvColumn.pszText=HeaderTxt[i];
lvColumn.cx=nWidth[i];
m_Info.InsertColumn(i,&lvColumn);
}
(4)探测该局域网内存活的主机的代码
检测函数:
voidCLanManaDlg:
:
OnButtonIndex()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
//向数据库增加数据
if(m_IsOn==true)
{
UpdateData(true);
CDataClassado;
CStringsql;
if(!
ado.Open())
return;
for(inti=m_Begin;i<=m_End;i++)
{
if(i==m_Begin)
{
sql.Format("deletefromIPInfo");
if(!
ado.Delete(sql))
return;
}
sql.Format("insertintoIPInfovalues('%s%d','','',0,'')",(LPCTSTR)m_IPAddressPre,i);
if(!
ado.Insert(sql))
return;
}
if(!
ado.Close())
return;
m_Index.SetWindowText("中止");
SetTimer(1,2000,NULL);
int*span=newint[2];
span[0]=m_Begin;
span[1]=m_End;
m_HThread=AfxBeginThread(ExploreHost,span);
if(m_HThread==NULL)
exit
(1);
m_IsOn=false;
}
else
{
m_Index.SetWindowText("检测");
TerminateThread(m_HThread,-1);
KillTimer
(1);
m_IsOn=true;
}
}
(5)线程函数以及探测函数
UINTCLanManaDlg:
:
ExploreHost(LPVOIDparam)
{
int*span=(int*)param;
intbegin=span[0],end=span[1];
deletespan;
while(true)
{
for(inti=begin;i<=end;i+=SPAN)
{
int*p=newint[2];
p[0]=i;
if(i+SPAN { p[1]=i+SPAN; } else p[1]=end; HANDLEHThread=AfxBeginThread(GetHostInfo,p); if(HThread==NULL) exit (1); } Sleep(50000); } return0; } UINTCLanManaDlg: : GetHostInfo(LPVOIDparam) { int*p=(int*)param; intbegin=p[0],end=p[1]; deletep; BYTEMac[6]; CStringIP; for(inti=begin;i { if(i>end) break; IP.Format("%s%d",(LPCTSTR)m_IPAddressPre,i); charpIP[16]; strcpy(pIP,IP.GetBuffer(16)); HRESULThr=Arp(pIP,Mac); if(hr==0) { CStringstr; CStringstrMac(""); CStringstrHostname(""); inti; for(i=0;i<=5;i++) { if(i==5) { str.Format("%02X",Mac[i]); } else str.Format("%02X: ",Mac[i]); strMac+=str; } IPAddripAddr; charbuf[256]; ipAddr=inet_addr((LPCTSTR)IP); ZeroMemory(buf,256); hostent*remoteHostent=gethostbyaddr((char*)&ipAddr,sizeof(in_addr),AF_INET); if(remoteHostent) strHostname=remoteHostent->h_name; //操作数据库 CStringsql; CDataClassdao; intres=dao.Open(); if(res==-1) return-1; sql.Format("updateIPInfosethostname='%s',MAC='%s',isonline=1whereIP='%s'",(LPCTSTR)strHostname,(LPCTSTR)strMac,(LPCTSTR)IP); if(! dao.Update(sql)) return-1; if(! dao.Close()) return-1; } else{ CStringsql; CDataClassdao; if(! dao.O
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LAN管理器的设计与实现 主机信息探测与查询子系统的设计与实现 毕业设计说明书 LAN 管理器 设计 实现 主机 信息 探测 查询 子系统 毕业设计 说明书