1.2 相关技术
1.2.1 TCP/IP分层模型
所谓TCP/IP模型,其实就是一系列网络协议的总称,也就是一个协议簇。其中TCP和IP是这个模型的两个主要协议。
TCP/IP参考模型通常分为四层:网络接口层,网络层,传输层和应用层。其中上一层的协议以下一层的协议为基础,下一层的协议为上一层协议提供服务。这四层的大致作用如下:
(1) TCP/IP模型中网络接口层其实就对应于OSI模型中的最下面的两层:物理层和数据链路层。它的作用主要是为上层的协议提供访问接口。
(2) 网络层作为整个协议栈的核心,其主要作用就是分配地址及把分组发给目标网络或主机。在这一层,定义了IP协议和分组格式。
(3) 传输层用来为上面的应用层提供端到端的通信。在传输层中,主要定义了两个协议:传输控制协议TCP以及用户数据报协议UDP。
(4) 应用层引入了不同的应用层协议,提供给用户各种服务。
1.2.2 Windows网络体系结构
图1.1 Window网络体系结构
Windows网络体系结构主要分为两大层:用户层和内核层。其中在用户层中主要是用各种库编写的网络应用程序及包含在DLL文件中的API接口函数。而在内核层中,主要是各种API的内核实现,TDI和NDIS。
(1) 最上层是网络应用程序。用户态的程序调用Windows系统提供的API,即应用程序编程接口来进行编程。
(2) 接下来是网络API,这些API通常包含在一系列的DLL中。所有的用户接口必须在用户层定义,但接口函数的具体实现,可以在用户态中实现,也可以在内核态中实现。
(3) 下面是网络API的内核实现。其以内核模式的设备驱动程序体现,将网络API的请求转为中断请求包(IRP),并格式化为TDI格式,发送至NDIS协议驱动。
(4) 再下面就是NDIS(网络驱动程序接口规范)接口的部分。首先是NDIS协议驱动。该驱动执行具体的网络协议,为上层客户程序提供服务,接受来自下层的信息。
(5) 然后就是NDIS中间层驱动。该层驱动主要用于协议转换。
(6) 最后就是NDIS小端口驱动。该层驱动直接驱动物理网卡,并和高级驱动程序进行通信。
1.2.3 网络封包截获技术
网络封包截获是网络防火墙的核心功能。在Windows下,数据包的拦截方式总体上分为两大类:用户级和内核级。
用户模式下数据包拦截的方法有如下三种:
(1) Windows分层服务提供者(Layered Service Provider, LSP),这种方法也被称为SPI(Service Provider Interface)技术。该方法比较简单,编程方便,可以截获基于Socket的数据包。但是对于绕过Winsock的一些木马病毒则没法拦截。
(2) Windows 2000/XP包过滤接口。该接口简单,实现容易。但只能够提供IP和端口的过滤,病毒也较容易绕过。。
(3) 替换系统的Winsock动态链接库。该方法替换系统自带的DLL的一些导出函数,实现数据包的拦截。但这种方法缺点较多,病毒容易绕过。
内核模式下数据包拦截的方法有如下四种:
(1) 传输数据接口过滤驱动(TDI-Filter Driver)。该方法通过创建设备对象截获用户程序和驱动程序交互的接口,从而实现数据的拦截。在该方法中,能够获取操作网络数据的进程的详细信息。但该驱动位于TCP/IP驱动之上,因此无法获得像ICMP这样由TCP/IP驱动直接处理的数据包。 包过滤防火墙的编程实现(2):http://www.751com.cn/jisuanji/lunwen_15847.html