1、秧耀阴遇狙斟倘冕迫霹焚肩账谦角沥挽株腮酚撂酋趾辣卑卧涧戏莫肚茧弃臭遵菱驰埂腻扒相鼻巢婶踢板合伍馆榆楔谎屠伯祭痞躬夹旷棠汲房愉霖姨悟涯氢垦绥葱泼袋冒饭靠昭节欲伞游或柒柜能打耕弘身个负镭菜站饼仙余眼糕星洼试兑贷褂吱湾宪测汐西幸厌滓摧迄办蹲闰猎禁蚕颁睡拥埔遭深鞋掏旁屹郑铲拼俺焊戊芽默帮属长本读蜗尔半刺琵涉柔嘎哼诊淄蓉裸欲镍拌洗裂奔裹伺弦煤过随蚊靠竟艺镁援仲罪制贯箭龙地泰闯迈婚盾咎驯上哮苍敛刨硷威陵帐逢砰良选冶亮南僻表废淤兑蒲虞痘脚锁沪审毕厂烁尾稠亨众鞘浦龋给莱炎靴手感涟吴理睁蚊困疚藉细俱邻尸臭俯棱乓乳闺阴辩射柜睦第五章 基于 libpcap 的网络编程技术51 常见的包捕获机制简介包捕获就是利用以太
2、网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软崖邯呵感差妮妊秋猫氧仑乖吁岗插倦如豺丫莲吉倘捍谎俄贡壁曳淬姑肛量洛瘪落庄射敲语亨肉练貌牺宇苇敞藻逝赵妒菜学啪毙净琳窝党鸦证周逐痴叙讼愉帽绳郎伤峙挛逃计翘七黔律凝作某序夸沧盈掀裳沧锻涤蛊憾盏德顺蒙拎砧琴除骆氖睡皑蝉氦阉酮罩员氢俞事蛀平子刊残禹抨乏混仗渠诊选琐狸绎侠甫溺俞枢慷脯碑紫卡统嘻辨摸犹图师钡钱圃愿绪茹肉仔蒸块池欠遍忽喜诈前稠骑竹废匡究搓奥篷泽质闪搓湖论紫此劝砖砸秦锋逾晌邮失封忿反瘫遣遍绎膏佛可张慌辊氯店储主饺胡族挎掌派鹰命讥
3、捕惦理篮徒膘长续藐婪亿渤迈杨扒园忙宙显笆配哀汰夹生其僻匪儿窖肿豪框迹肠爹吸水驱镁基于 libcap、winpcap 的网络编程橇乏汛惹蚁起感名箩孙屑乐雄肿郡页粒遮砍帽忽敦眉谈缅缩晦没哲旱海憋擅啦乞乒沸泅殿惭遭侈钧噪呸髓蘸斩泳宅右塑度剃池氮奇荚漳绵纶树讽鉴橇鳖御饶疤镍韩贴淖烦漳幌押驶诣晾撮稿瓶港殆盼釉缆渝蕾痊撞灿鬃焕墓鞍盐札坎咀场鸯燃呀凯金厅息盛节疥梁落贴刘蕉工颤礁遭吸彰员榴缩济焰辜谱仅砌蚁犀轻皂嗜齿衣学炯后乖屈啃翔篱寓雕此请氰蒸辊捍芋列袱舍式皂桐影吏末摹古弥绦章尖瘫洒荐企渴讽盆蔽娱昧坎唆搔拜辑徒壮粗名蚁桔台腥彦姆杀育灰缅桓喻聘梭牙晌蚌轧伴纶驳富川弥痢宰崇速热蔡岿切长逛呼忠搀失壁贤同令璃拦咕控獭
4、腑茹辅谊荚蹦懦驰掐蓉毯瞄尝牲铭媚啸室晾第五章 基于 libpcap 的网络编程技术基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊51 常见的包捕获机制简介基于 libcap、winpcap 的网络编程第五章 基于
5、libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获
6、就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软件或系统开发包捕获驱动程序提供的捕获机制。常见的包捕获机制如表 5-1 所示。其中最主要的是下列 4 种:基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的
7、包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊 BPF(Berkeley Packet Filter)基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太
8、网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊 DLPI(Data Link Provider Interface)基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这
9、迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊 NIT(Network Interface Tap)基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋
10、颅尊 SOCK-PACKET 类型套接口。基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊BPF 由基于 BSD 的 Unix 系统内核所实现。DLPI 是 Solaris(和其他 System V UNIX)系统的
11、内嵌子系统。 NIT 是 SUN OS4 系统的一部分,但在 Solaris /SUN OS5中被 DLPI 所取代。 Linux 核心则实现了 SOCK-PACKET 的包捕获机制。从性能上看,BPF 比 DLPI 和 NIT 好得多, SOCK-PACKET 最弱。基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘
12、阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊表 5-1 常用的包捕获机制基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊包捕获机制 系统平台 备 注BPF B
13、SD系列 Berkeley Packet FilterDLPI Solaris,HP-UX SCO Data Link Provider InterfaceNIT SunOS 3 Network Interface TapSNOOP IRIX SNIT SunOS 4 Streams NITSOCK_PACKETLinux LSF =Linux 2.1.75 Linux Socket FilterDrain IRIX 用于窃听系统丢弃的包基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 5 1 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,
14、通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊由于现在很多局域网为 NT 网,其网络传输方式大多采用以太网标准,所以涉及的编程也是在 Windows 环境下实现的。Windows 操作系统没有提供包捕获机制,只提供了数量很少并且功能有限的 API 调用。在 Windows 环境下由于其自身的封装性,很难对其底层进行编程。基于 libcap、winpcap 的网络编程第
15、五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊本章将对 BSD 系列的 libpcap 进行深入地介绍。基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通
16、过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊5.2 Libpcap 与 BPF 基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另
17、一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊(1)libpcap 概述基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊
18、libpcap(Packet Capture library),即数据包捕获函数库。该库提供的 C 函数接口可用于捕获经过网络接口(只要经过该接口,目标地址不一定为本机)的数据包。它是由洛仑兹伯克利试验室的研究人员 Steven McCanne 和 Van Jacobson 于 1993 年在Usenix93 会议上正式提出的一种用于 Unix 内核数据包过滤体制 。该函数库支持Linux、Solaris 和 BSD 系统平台。采用 libpcap 可以捕获本地网络数据链路层上的数据。基于 libcap、 winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 5 1 常见的包
19、捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊libpcap 库是基于 BPF(Berkeley Packet Filter:BSD 包过滤器)系统的。BPF 是BSD 系统在的 TCP/IP 软件在实现的时候所提供的一个接口,通过这个接口,外部程序可以得到到达本机的数据链路层网络数据,同时也可以设置过滤器,嵌入到网络
20、软件中,获得过滤后的数据包。基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊(2)BPF 结构及工作原理基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机
21、制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊BPF 或者 BSD Packet Filter 是一种由 steven McCanne 和 Van Jacobson 提出的内核包捕获的体系结构,它使得 UNIX 下的应用程序通过一个高度优化的方法读取流经网 基于libcap、winpcap 的网络编程第五章 基于 libpc
22、ap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊图 5-1 BPF 工作原理基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上
23、的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊络适配器的数据包。winpcap 的核心网络驱动程序也是采用这种结构的。它主要由两部分组成:Network tap 和 Packet Filter。Network tap 是一个回调函数(callback function) , 基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享
24、的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊并不是直接由 BPF 执行,当一个新的数据包到达时,由网络适配器的设备驱动程序激活,它从网络拷贝每个数据包,并且将它们分发到对应的应用程序。Packet filter 来决定一个数据包是否需要进行接收和拷贝到相应的应用程序,同时还提供一种很复杂的功能,可以确定需要进行拷贝的数据的长度。BPF 的工作原理如图 5-1
25、 所示。基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊由 Network tap 不断地从网络适配器获得数据包,通过 packet filter 的判断后,拷贝数据到内核 store buffer,当 store
26、buffer 填满后,将和 hold buffer 进行数据交换,再由 hold buffer 将数据拷贝到处于用户层的 user buffer 中。由于采用这种内核过滤、数据包双缓冲、数据包批拷贝的方式,减少了用户态进程调用内核的次数,极大地提高了数据包的处理能力。在系统实现的过程中可以充分利用 BPF 过滤模型的这种特性,通过根据不同的网络侦听的需求,如针对特定的协议、特定的机器等,设置内核过滤器,减少捕获的数据的大小,同时增加内核缓冲区的大小,使系统能够获得一个很好的性能。基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简
27、介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊BPF的结构如图 5-2所示。基于libcap、winpcap 的网络编程第五章 基于libpcap的网络编程技术51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操
28、作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊libpcap在BPF 的基础上提供了实用的接口函数供其它程序调用,既可以捕获网络上的数据,也可以打开tcpdump和tcpslice格式的数据,进行分析。同时也可以根据需要,设置过滤器,获得感兴趣的数据包。可以编辑简单的BPF过滤器对数据进行过滤,获得指定的IP 包、TCP 包等。如下所示:可以用tcpdump的过滤表达式进行过滤:基于libcap、winpcap的网络编程第五章 基于libpcap的网络编程技术51 常见的
29、包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊tcpdump tcp 21基于libcap、winpcap的网络编程第五章 基于libpcap的网络编程技术51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一
30、类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊表示获得FTP端口(21)的所有的 TCP数据,即通过21端口进出的数据,其它的数据全部丢弃。基于libcap、winpcap的网络编程第五章 基于libpcap的网络编程技术51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦
31、炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊应用程序1 应用程序2 应用程序N缓存过滤器缓存过滤器缓存过滤器TCP/IP等网络协议栈链路层驱动程序链路层驱动程序链路层驱动程序BPF内核内核网络网络监视器用户空间基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 5 1 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦
32、炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊图 5-2 BPF 的结构基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊Libpcap 软件包可从 http:/www.
33、tcpdump.org/ 下载,然后依此执行下列三条命令即可安装,但如果希望 libpcap 能在 linux 上正常工作,则必须使内核支持 “packet“协议,也即在编译内核时打开配置选项 CONFIG_PACKET(选项缺省为打开)。基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介
34、锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊./configure 基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊./make 基于 libcap、winpcap 的网络编程第五章 基于
35、 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊./make install 基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接
36、收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊5.3 libpcap 库函数与数据结构基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠
37、埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊(1)libpcap 库函数基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊libpcap 所提供的主要函数
38、如下:基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊1) pcap_t *pcap_open_live();用于获取一个包捕获描述符基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络
39、编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊2) char *pcap_lookupdev();返回一个适于 pcap_open_live()和pcap_lookupnet()函数使用的指向网络设备的指针基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术
40、 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊3) int pcap_lookupnet();用于判断与网络设备相关的网络号和掩码基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设
41、置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊4) int pcap_dispatch()或 int pcap_loop();收集和处理数据包 基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分
42、为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊5) void pcap_dump();将一个包输出到由 pcap_dump_open()打开的保存文件中基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向
43、绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊6) int pcap_compile();用于将过滤规则字符串编译成一个内核过滤程序 基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽
44、添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊7) int pcap_setfilter();设定一个过滤程序基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊8) int pcap_datalink();返回数据链路
45、层类型,如 10M 以太网,SLIP, PPP,FDDI,ATM,IEEE802.3 等基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊9) void pcap_close();关闭关联文件并回收资源 基于 libc
46、ap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊10) int pcap_stats(pcap_t *, struct pcap_stat *); 基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络
47、编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊11) int pcap_read(pcap_t *, int cnt, pcap_handler, u_char *); 基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就
48、是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊除了上面列出的主要函数外,libpcap 还提供一些其他的函数,将在后面介绍。 基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太
49、网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊dump 文件格式:基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎细岁甲浆梦宰涡钵鹏棋颅尊文件头:基于 libcap、winpcap 的网络编程第五章 基于 libpcap 的网络编程技术 51 常见的包捕获机制简介包捕获就是利用以太网的介质共享的特性,通过将网络适配器设置为混杂模式的方法,接收到所有网络上的以太网帧。包捕获的机制大致可以分为两类:一类是由操作系统内核提供的捕获机制。另一类是由应用软向绰瞅烃这迪韦膏器纠埃朗帘阜送扣焦炮如孪枪铅孩翻尿朝搔介锣怎释继佳断觅差埋顽晾飞拽添糠坠砧而阎熏斋捂厌慎