您的位置:首页 > 编程语言

总结一下WinPcap编程(基础知识且不含代码例程)

2017-02-07 21:01 357 查看
        Windows Sockets是Windows平台上很成熟的编程框架吧,当时学习网络编程入门都是接触的套接字,确实也能够满足大多数网络应用程序设计的需求,并且与Windows系统的消息、事件等机制想结合的高效的I/O处理模式。

        但是当面对更加深入的网络数据分析和更加灵活的数据构造需求时,比如统计局域网中的流量分布、识别特定应用的数据流以及构造满足特殊含义的探测报文等等,由于协议栈底层细节的封装,另加安全性的考虑,Windows操作系统对原始套接字和Sockets编程都有限制。

        WinPcap编程为Windows环境下灵活控制数据接收和发送提供了便利的开发框架。属于开源库!!!(这也是我很喜欢的原因)   能够应用于网络数据帧的构造,捕获和分析。

        当然,这里还得提一下:C语言的网络工具开发API库有libnet、libpcap、libnids和libicmp等。    不止是伯克利实验室的sockets编程的那些函数(我开始也是认为就只有sockets)。

        WinPcap是Windows Packet Capture的缩写。是linux下的libpcap移植到Windows平台下为实现数据帧捕获而设计的开发框架。

        这里说一下(干货和术语):WinPcap的官方主页是www.winpcap.org    ,          下载WinPcap驱动,源代码和开发文档

                NPF(Netgroup Packet  Filter,网络组帧过滤)模块是WInPcap的核心部分

                NIC(Network Interface Card,网络接口卡,简称网卡)驱动程序。

                NDIS(Network Driver Interface Specification,网络驱动程序接口规范)是定义网卡和协议驱动(TCP/IP实现)之间的通信的标准。是Windows内核中最底层的网络部分!!操作系统中有NDISLib或者NDISWrapper哦(我以前也不知道)。

        WinPcap包含Packet.dll和wpcap.dll两个动态链接库

        WinPcap可以独立于TCP/IP协议栈进行原始数据帧的发送和接收,直接在网卡上捕获原始数据帧,这样,应用程序还可以进行数据帧的过滤,当然,也可以通过网卡直接发送原始数据帧。

       基于WinPcap的典型应用很多,很多有数据帧捕获功能的软件都使用了这一开源库。   当然,它也仅仅能监视网络上传输的数据帧。   不能提供类似网络流量控制和个人防火墙类的应用开发(比较遗憾这些居然不能)。

       网络组帧过滤模块的功能:数据帧捕获、监控、拷贝到磁盘、数据帧发送等。其中数据转储功能相比传统的sockets的应用程序要少两次数据的复制,效率更高。

      另外,有两个例程的代码分别是使用wpcap.dll编写的UDP流量捕获程序和基于Packet.dll实现的对原始数据帧的构造和发送。

        

       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: