基于WinDis 32技术实现网络通信监测

原创 2001年02月19日 09:56:00

基于

WinDis 32技术实现网络通信监测

 

 

孙乐昌解放军电子工程学院

 

 

【摘要】

本文论述了网络通信监测的实现原理与实现过程,遵照国际标准化开放系统互联(OSI)七层体系结构,利用网络驱动接口规范WinDis32 V5.0技术,实现了在应用层对数据链路层的控制,完成了对网上流动数据帧的实时截获、解封与分析。

 

 

【关键词】网络分层 WinDis32技术 网络信息截获 数据帧 NDIS网络适配器
 

 

1前言

随着计算机网络技术的发展,各类网络规模的扩大,远程访问的增加,虚拟专用网(VPN)的出现和Internet的普及,网络安全性已成为计算机网络领域一门重要的研究学科。

网络监控是保障网络安全性的基本措施之一。网络监控,用于监测网上流动信息,并对网络信息给予适当控制。网络监控,可用于调试网络应用程序,判断应用程序是否正确地发送或接收了数据包。网络监控,还可用于监视网络信息,杜绝不健康站点的不健康内容,维护网络环境。应用于安全防范,可监视我方信息内容、保障网络安全,截获情报、分析怀有敌意方的网站。在计算机网络上实施有效的攻击与保护,是网络监控技术在军事上的重要发展方向之一。

本文论述的网络通信实时监测的实现,是用于特殊目的的数据通信程序设计的突破口,是网络监控技术的基础部分,其实现基于网络体系结构与WinDis32技术。

 

2.网络体系结构

现代计算机网络设计是按高度的结构化方式进行的,国际标准化组织(ISO)为更广泛的计算机互联制定了标准化的开放系统互联(OSI)网络体系结构,如图1所示。

OSI参考模型用结构描述方法,即分层描述的方法,将整个网络的通信功能划分为七个部分(也叫七个层次),每层各自完成一定的功能。由低层至高层分别称为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。两台网络主机之间进行通信时,发送方将数据从应用层向下传递到物理层,每一层协议模块为下一层进行数据封装,数据流经网络,到达接收方,接着再由下而上通过协议栈传递,并与接收方应用程序进行通信。

在通用网络中,数据链路层由网络适配器实现,本文中网络通信监测的立足点在于数据链路层,基于电缆是固有的广播性介质,通过对网络适配器的控制,实时截获与分析经过网络适配器的所有网上流动信息。

 

3.WinDis32技术

WinDis32全称为Win32 NDISNetwork Driver Interface Specification)网络驱动接口规范,用于开发Windows产品,可在Windows 9XWindows NT上直接访问NDIS媒体访问控制(MAC)驱动接口。图2显示了Windows网络驱动组件与Win32 NDIS结构组件:

2Windows网络驱动组件与Win32 NDIS结构组件

WinDis32网络组件由四部分组成:NDIS适配器、PCANDIS5 NDIS协议驱动、W32N50 WinDis32 API DLLWinDis32应用程序。WinDis32应用程序调用W32N50.DLL动态链接库提供的API应用程序接口,通过NDIS协议驱动模块,实现对NDIS适配器进行的存取操作。网络驱动接口规范NDIS的主要特征是所有适配器相关驱动均由NDIS接口打包,例如,最底层NDIS NIC驱动不能对网卡直接执行I/O,它通过NDIS打包服务来访问硬件;高层Windows NDIS网络组件使用NDIS打包界面与适配器相关驱动通信。只有NDIS协议驱动可以调用NDIS打包,访问NDIS适配器。

WinDis32应用程序接口函数包括:W32N_OpenAdapter(),打开一个已被命名的NDIS适配驱动器,若操作成功,则生成一个面向适配器对象的WinDis32适配器句柄,这一句柄被随后多个在该适配器上操作的W32N_XXX函数所用; W32N_CloseAdapter(),关闭已打开的适配器句柄;W32N_PacketRead(),数据帧读操作;W32N_PacketReadEx(),数据帧异步读操作;W32N_PacketSend(),发送数据帧操作;W32N_PacketSendEx()W32N_MakeNdisRequest()等等。

WinDis32技术使得从Win32应用层进行NDIS请求如同在一个内核模式的驱动器内部进行请求一样简单,并支持多个网络适配器同时打开,完成各自的信息发送与接收。

 

4.网络信息监测的实现

网络信息监测程序分为信息截获与信息分析两大部分,其中信息截获程序流程如图3所示,采用多进程与多线程技术,完成数据的实时截获。

 

其中网络适配器列表通过读取系统注册表生成;网络适配器详细信息包括适配器型号、网络适配器物理地址、传输最大帧、传输速率以及机内标识符,通过函数W32N_MakeNdisRequest()获得。

协议过滤部分是包括PCAUSA端口的PCANDIS5协议驱动,BPF过滤器是由UNIX环境到Windows的模拟机制,为Win32应用程序提供了一种普通而又便利的机制,可过滤指定协议,由协议驱动执行,拒绝不想要的数据帧。支持协议包括:传输控制协议TCP、互连网协议IP、地址解析协议ARP、反向地址解析协议RARP、互连网控制报文协议ICMP、互连网组管理协议IGMP、Novell SPX/IPX协议IPX、用户数据报协议UDP、NetBEUI协议、AppleTalk协议。

信息分析部分利用已获知的媒体访问控制协议,提取出数据帧中的有效域值,如源主机物理地址、目的主机物理地址、帧长度等。并同时为每一被截获的数据包打上时标,注上序列号,为下一步数据重组提供可靠依据。

 

接收数据帧显示与信息统计结果范例如下:

包序列号:0000000032 时间:0005860470 msec 长度:54/54

Ethernet 目的:00.40.05.39.A2.B0 源:00.00.B4.86.74.FA 类型:0x0800

000000: 00 40 05 39 A2 B0 00 00 : B4 86 74 FA 08 00 45 00 .@.9......t...E.

000010: 00 28 26 03 40 00 20 06 : A3 25 64 64 64 7A 64 64 .(&.@. ..%dddzdd

000020: 64 65 04 06 00 8B 00 40 : BF 14 00 6C 24 B9 50 10 de.....@...l$.P.

000030: 22 38 12 EA 00 00 : "8..............

 

 

包序列号:0000000033 时间:0005860764 msec 长度:109/109

Ethernet 目的:00.40.05.39.A2.B0 源:00.00.B4.86.74.FA 类型:0x0800

000000: 00 40 05 39 A2 B0 00 00 : B4 86 74 FA 08 00 45 00 .@.9......t...E.

000010: 00 5F 27 03 40 00 20 06 : A1 EE 64 64 64 7A 64 64 ._'.@. ...dddzdd

000020: 64 65 04 06 00 8B 00 40 : BF 14 00 6C 24 B9 50 18 de.....@...l$.P.

000030: 22 38 DE C6 00 00 00 00 : 00 33 FF 53 4D 42 1A 00 "8.......3.SMB..

000040: 00 00 00 00 00 80 00 00 : 00 00 00 00 00 00 00 00 ................

000050: 00 00 03 08 25 2D 03 08 : 01 4C 08 01 08 00 80 10 ....%-...L......

000060: 00 00 10 00 00 00 00 00 : 00 00 00 00 00 ................

 

 

包序列号:0000000034 时间:0005860766 msec 长度:1514/1514

Ethernet 目的:00.00.B4.86.74.FA 源:00.40.05.39.A2.B0 类型0x0800

000000: 00 00 B4 86 74 FA 00 40 : 05 39 A2 B0 08 00 45 00 ....t..@.9....E.

000010: 05 DC 64 0B 40 00 80 06 : FF 68 64 64 64 65 64 64 ..d.@....hdddedd

000020: 64 7A 00 8B 04 06 00 6C : 24 B9 00 40 BF 4B 50 10 dz.....l$..@.KP.

000030: 20 B7 86 DA 00 00 00 00 : 10 00 7E 8B 77 DA D2 D0 .........~.w...

000040: D7 27 59 9A 8F 18 D3 77 : 15 D5 6C 86 0F 2C 62 3E

 

...

停止数据帧接收

应用统计:

已接收数据帧数目 34

已发送数据帧数目 : 0

 

 

5.进一步研究与发展

本文所研究的网络信息监测属于计算机网络系统安全对策研究的一部分,属于网络信息监测的基础性研究。以此研究成果为基础,可进行进一步的软件开发,从而实现网络通信状况实时监测、情报获取、网上各站点地址分析、站点类型分析,为计算机网络的安全维护提供监测手段,因此,具有特别的意义。

 

作者简介:解放军电子工程学院系统工程教研室主任 教授 安徽省计算机学会

常务理事主要研究方向为:计算机应用、操作系统和分布式计算机系统

通信地址:邮编230037 合肥市潜山路342号 系统工程教研室

 

 

 

参 考 文 献

  1. PCAUSAWinDis 32 V5.0文档1998.3
  2. 刘锦德等计算机网络大全电子工业出版社1997.7
  3. Kris JamsaINTERNET编程电子工业出版社1996.5
  4. David J.KruglinskiVisual C++技术内幕清华大学出版社1996.5
  5. 廖湖声面向对象的Windows程序设计基础人民邮电出版社1996.2
  6. 张国峰C++语言及其程序设计教程电子工业出版社1992.12
  7. 汤子瀛等计算机操作系统西安电子科技大学出版社1998.4
  8. 刘彦明等实用网络编程技术西安电子科技大学出版社1998.4
  9. 何莉等计算机网络概论高等教育出版社1995.4
  10. 杜毅Unix系统组网技术电子工业出版社1998.3

 

Abstract

 

The paper discusses realizing principle and realizing course of network monitor. According to ISO/OSI model of seven layers and making use of WinDis32 V5.0 technology the network monitor realizes controlling data-link layer from application layer. It can capture real-timedivide and analyze packets on network.

Android中网络通信的几种方式

Android网络编程分为两种:基于http协议的,和基于socket的。 基于Http协议:HttpClient、HttpURLConnection、AsyncHttpClient框架等 基于Soc...
  • wdong_love_cl
  • wdong_love_cl
  • 2016年06月02日 23:11
  • 3363

网络通信编程笔记(四):TCP通信(C语言)

理论介绍: 1. Socket简介 Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换。 几个定义: (1)IP地址:即依...
  • cike44
  • cike44
  • 2016年10月08日 15:41
  • 2480

基于Spark技术实现大规模时间序列异常检测成功落地

最近一直忙于异常检测项目的上线,一直没有时间来更新博客,该系统已经在大规模时间序列场景稳定运行1个多月,简单总结一下。 达到的目标,通过Spark对3万个服务器进行预测,每个服务器包括5个指标,每个...
  • andyliuzhii
  • andyliuzhii
  • 2018年01月10日 09:36
  • 122

网络通信常用加密算法研究

什么是对称加密和非对称加密 什么是对称加密: 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法...
  • u010018855
  • u010018855
  • 2015年12月24日 10:46
  • 2160

Android网络通信的六种方式

Google的应用层采用的是Java语言。所以JAVA支持的网络编程方式Android都支持,同时Google还引入了Apache 的HTTP扩展包。另外,针对WIFI,NFC,分别提供的单独的开发A...
  • zhuxiaoping54532
  • zhuxiaoping54532
  • 2016年06月20日 16:14
  • 826

使用NIO实现非阻塞式的网络通信

实现这样一个程序:客户端读取键盘输入,并发送到服务器端,服务器端接收信息并打印。   首先先写一个阻塞式的程序:package nio;import java.io.IOException; imp...
  • xiangwanpeng
  • xiangwanpeng
  • 2017年02月12日 14:14
  • 508

Network——Socket网络通信机制以及实现举例(TCP、UDP等)

两个传输协议之一:TCP TCP是Tranfer Control Protocol的 简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成...
  • SEU_Calvin
  • SEU_Calvin
  • 2016年07月22日 17:23
  • 11956

ios---socket、http以及网络通信

第一部分、概念的理解 1、什么是Socket? Socket又称之为“套接字”,是系统提供的用于网络通信的方法。它的实质并不是一种协议,没有规定计算机应当怎么样传递消息,只是给程序员提供了...
  • niejiafa_131
  • niejiafa_131
  • 2015年04月01日 16:51
  • 1187

Linux下C语言多线程网络通信简单聊天程序

 原来的网址:http://www.linuxidc.com/Linux/2011-10/44540.htm 功能描述:程序应用多线程技术,可是实现1对N进行网络通信聊天。但至今没...
  • squab
  • squab
  • 2014年08月18日 02:41
  • 1868

Qt实现网络数据传输

作者:奋斗ing丶孩子 转自:http://blog.sina.com.cn/s/blog_a6fb6cc90101fg0i.html    以前写界面主要用Qt做UI,底层的功能是调用别人提供的...
  • whw8007
  • whw8007
  • 2014年01月21日 15:31
  • 702
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于WinDis 32技术实现网络通信监测
举报原因:
原因补充:

(最多只允许输入30个字)