VC337网络流量监控及分析工具的设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC337网络流量监控及分析工具的设计 P3nbsp;网络数据的采集技术分析BR3.1nbsp;Windows下原始数据包捕获的实现BR网络上的数据包捕获机制主要依赖于所使用的操作系统,不同的操作系统下有不同的实现途径。在Windows环境下,可通过网络驱动程序接口规范(NDIS),WinSock的SOCK_RAW或虚拟设备驱动技术(VxD)等技术实现网络数据包的捕获功能。BR前面已经介绍到了,使用原始套接字可以绕过Socket提供的功能,对底层的协议进行使用与开发,可以根据自己的需要生成想要的数据报文等,下面开始介绍使用原始套接字对数据包捕获进行开发的相关技术知识。BR第一,使用套接字前,需要了解网卡接收数据的工作原理:BR在正常情况下,网络接口只响应两种数据帧,一种是与自己的硬件相匹配的数据帧,另一种四向所有计算机广播的数据帧。在系统中,数据帧的收发由网卡完成,网卡程序接收从网络发来的数据包,根据其硬件地址去判断是否与本机的硬件地址匹配,若匹配就通知CPU产生中断进行响应,然后调用驱动程序设置的网卡中断程序地址调用驱动程序接收数据,然后放入堆栈进行系统相关处理,若不匹配则直接丢弃该数据包[3]。BR对于网络接口,它一般具有4种数据接收模式:广播、组播、直接和混杂模式,只有当把接口设置为混杂模式时,网络接口才能接收所有的数据,无论地址是否匹配,所以在做本设计的时候一定要设置为混杂模式才能实现数据的采集。BR第二,需要了解套接字的工作程序和使用方法:BR一般来说,采用套接字开发网络程序需要经历以下几个基本步骤:BR启动、创建、绑定、监听(接受连接)、连接、发送/接收数据、关闭、卸载等。BR第三,具体到Windows下利用原始套接字捕获网络数据可以这样设计:BR(1)启动套接字;BR(2)创建一个原始套接字;BR(3)将套接字与本地地址绑定;BR(4)设置操作参数;BR(5)设置网络接口为混杂模式;BR(6)启动监听线程,开始接收数据;BR(7)退出关闭套接字。BR3.2nbsp;原始数据包捕获的关键函数BR(1)启动函数WSAStartupBRint PASCAL FAR WSAStartup (DWORD wVersionRequested , LPWSADATA lpWSAData);BR每一个套接字应用程序都必须调用该函数进行一系列初始化工作,并且只有调用成功返回后,才能开始使用套接字,其中参数wVersionRequested是版本号, 高字节是次版本号、低字节是主版本号,参数lpWSAData是指向WSADATA结构的指针。BR(2)套接字创建函数socketBRSOCKET socket (int af , int type , int protocol);BR所有的通信在建立之前都必须创建一个套接字,socket函数的功能就是创建套接字,其中参数af指协议地址族(address family),当建立的套接字是依赖于UDP或TCP的话,需要设置af为AF_INET,表示采用IP协议。参数type是指协议的套接字类型,采用流式套接字时用SOCK_STREAM,采用数据报套接字时用SOCK_DGRAM,采用原始套接字时用SOCK_RAW。参数protocol是协议字段,默认情况下可直接设置为0。BR(3)绑定函数bindBRint bind ( SOCKET s , struct sockaddr_in* name , int namelen);BR成功创建套接字后的下一步工作就是将本地网络接口与套接字进行绑定,其中参数s是创建的套接字,参数name是需要绑定的通信对象的信息结构体指针,namelen是该结构的长度。需要注意的是sockaddr_in结构:BRstruct sockaddr_in{BRshort nbsp;nbsp;nbsp;sin_family;nbsp;nbsp;nbsp; //地址族,设置为AF_INETBRunsigned short nbsp;sin_port;nbsp;nbsp;nbsp;nbsp;nbsp; //指定的端口号BRstruct in_addr nbsp;sin_addr;nbsp;nbsp;nbsp;nbsp; //IP地址BRchar nbsp;nbsp;nbsp;sin_zero[8];BR};BR由于主机序列与网络序列的关系,在程序中需要使用htons等函数进行转换工作。BR(4)设置接口模式函数WSAIoctlBRint WSAAPI WSAIoctl(SOCKET s, DWORDBRnbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp;nbsp; dwIoControlCode,

文档评论(0)

kaku + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8124126005000000

1亿VIP精品文档

相关文档