基于Winpcap的网络流媒体识别算法研究与实现
时间:2023-09-29 10:36来源: 作者: 点击: 次0 引言
随着计算机、视频压缩等关键技术的快速发展,技术目前已成为继文字和图片之后,互联网信息传播的主要形式。通过技术,用户可以方便地存取、查阅和播放网络上的数据。如何从海量的网络数据中快速发现流媒体数据,是进行网络视频服务质量监测、网络流量统计、网络视频用户行为分析及视频内容监管等服务的前提和基础。
网络流媒体服务为应用层服务,其数据传输主要采用专有应用层协议RTP/RTCP。因此,对网络视频数据流的发现首先是应用层协议。针对应用层协议的,文献提出了一种以协议中出现频率最高的字段作为特征串来协议的方法,且采用一个特征串来标识一种协议。文献提出了签名字串的方法来识别应用层协议,其主要针对的是P2P协议的范围,且需要对整个报文通过匹配多个特征串来识别一种P2P协议,时间效率偏低。文献提出了先分类后分组的识别应用层协议及流量的方法,但此方法的本质还是某些固定端口的,若对于通过随机选择端口而的应用层协议,此方法就缺乏准确性和灵活性。
本文通过分析网络流媒体交互过程的特征,以应用层传输协议对应的关键特征字串为判断依据,设计了一种基于的网络视频流识别,了对网络流媒体的发现,并通过实验对本文设计的性能进行了分析和验证。
1 Winpeap简介
是由伯克利分组捕获库派生而来的分组捕获库,它在Windows操作平台上对底层包的截取过滤。
是BPF模型和Libpcap函数库在Windows平台下网络数据包捕获和网络状态分析的一种体系结构,这个体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库Packet.dll和一个高层的独立于系统的函数库Libpcap组成。底层的包捕获驱动程序实际为一个协议网络驱动程序,通过对NDIS中函数的调用为Windows 95/98/NT/2000提供一类似于UNIX系统下Berkeley Packet Filter的捕获和发送原始数据包的能力。Packet.dll是对这个BPF驱动程序进行访问的API接口,同时它有一套符合Libpcap接口(UNIX下的捕获函数库)的函数库。
Winpcap包括三部分:第一个模块NPF(NetgroupPacket Filter),是一个虚拟设备驱动程序文件。它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。第二个模块Packet.dll为Win32平台提供了一个公共的接口。不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll用于解决这些不同。调用Packet.dll的程序可以运行在不同版本的windows平台上,而无需重新编译。第三个模块wpcap.dll是不依赖于操作系统的,它提供了更加高层、抽象的函数。
Winpcap提供了一套标准的编程接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。
2 应用层协议RTP/RTCP
RTP/RFCP是一种应用型的传输层协议,它没有连接的概念,既可以建立在面向连接的底层协议上,又可以建立在面向无连接的底层协议上,因此RTP对传输层是独立的。由于网络流媒体的传输实时性要求较高,UDP的传输延时低于TCP,能与音频和视频流很好地匹配,所以,在实际应用中,RFP/RTCP/UDP是流媒体传输的主要协议,其结构如图l所示。
随着计算机、视频压缩等关键技术的快速发展,技术目前已成为继文字和图片之后,互联网信息传播的主要形式。通过技术,用户可以方便地存取、查阅和播放网络上的数据。如何从海量的网络数据中快速发现流媒体数据,是进行网络视频服务质量监测、网络流量统计、网络视频用户行为分析及视频内容监管等服务的前提和基础。
网络流媒体服务为应用层服务,其数据传输主要采用专有应用层协议RTP/RTCP。因此,对网络视频数据流的发现首先是应用层协议。针对应用层协议的,文献提出了一种以协议中出现频率最高的字段作为特征串来协议的方法,且采用一个特征串来标识一种协议。文献提出了签名字串的方法来识别应用层协议,其主要针对的是P2P协议的范围,且需要对整个报文通过匹配多个特征串来识别一种P2P协议,时间效率偏低。文献提出了先分类后分组的识别应用层协议及流量的方法,但此方法的本质还是某些固定端口的,若对于通过随机选择端口而的应用层协议,此方法就缺乏准确性和灵活性。
本文通过分析网络流媒体交互过程的特征,以应用层传输协议对应的关键特征字串为判断依据,设计了一种基于的网络视频流识别,了对网络流媒体的发现,并通过实验对本文设计的性能进行了分析和验证。
1 Winpeap简介
是由伯克利分组捕获库派生而来的分组捕获库,它在Windows操作平台上对底层包的截取过滤。
是BPF模型和Libpcap函数库在Windows平台下网络数据包捕获和网络状态分析的一种体系结构,这个体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库Packet.dll和一个高层的独立于系统的函数库Libpcap组成。底层的包捕获驱动程序实际为一个协议网络驱动程序,通过对NDIS中函数的调用为Windows 95/98/NT/2000提供一类似于UNIX系统下Berkeley Packet Filter的捕获和发送原始数据包的能力。Packet.dll是对这个BPF驱动程序进行访问的API接口,同时它有一套符合Libpcap接口(UNIX下的捕获函数库)的函数库。
Winpcap包括三部分:第一个模块NPF(NetgroupPacket Filter),是一个虚拟设备驱动程序文件。它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。第二个模块Packet.dll为Win32平台提供了一个公共的接口。不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll用于解决这些不同。调用Packet.dll的程序可以运行在不同版本的windows平台上,而无需重新编译。第三个模块wpcap.dll是不依赖于操作系统的,它提供了更加高层、抽象的函数。
Winpcap提供了一套标准的编程接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。
2 应用层协议RTP/RTCP
RTP/RFCP是一种应用型的传输层协议,它没有连接的概念,既可以建立在面向连接的底层协议上,又可以建立在面向无连接的底层协议上,因此RTP对传输层是独立的。由于网络流媒体的传输实时性要求较高,UDP的传输延时低于TCP,能与音频和视频流很好地匹配,所以,在实际应用中,RFP/RTCP/UDP是流媒体传输的主要协议,其结构如图l所示。