加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

UNIX网络编程:网络数据包检测

发布时间:2016-09-26 03:48:00 所属栏目:Unix 来源:站长网
导读:副标题#e# 网络数据包检测 数据包捕获(sniffer):是指在网络上进行数据收集的行为,需要通过网卡来完成。 三种访问方式: BSD Packet Filter(BPF) SVR4 Datalink Provider Interface(DLPI) linux SOCK_PACKET interface libpcap库 安装: apt-get install
副标题[/!--empirenews.page--]

网络数据包检测

数据包捕获(sniffer):是指在网络上进行数据收集的行为,需要通过网卡来完成。

三种访问方式:

BSD Packet Filter(BPF)

SVR4 Datalink Provider Interface(DLPI)

linux SOCK_PACKET interface

libpcap库

安装:

apt-get install libpcap-dev

常用API

捕获数据包

查找缺省的用来捕获数据网络设备

char * pcap_lookupdev ( char * errbuf )//出错时保存系统返回的错误信息。

返回值:

成功时返回指向设备名称的指针,

失败返回NULL

查找指定设备的网络号和子网掩码

int pcap_lookupnet( const char * device,//指向设备名称的指针

bpf_u_int32 * netp,//指向获取的网络号的指针

bpf_u_int32 * maskp,//指向获取的子网掩码的指针

char * errbuf)//出错时保存系统返回的错误信息

返回值:

成功返回0,

失败返回-1,并保存错误信息到errbuf中。

打开一个网络设备用于捕获数据包

pcap_t * pcap_open_live( const char * device,//指向设备名称的指针

int snaplen, //捕获的数据包的长度

int promisc,//网络接口工作模式

int to_ms,//读取数据包时的超时

char * errbuf)//出错时保存系统错误信息

返回值:

成功返回捕获数据包的句柄

失败返回NULL并保存错误信息到errbuf中

捕获下一帧数据

const u_char * pcap_next ( pcap_t * p//pcap_open_live返回的句柄

struct pcap_pkthdr * h)保存捕获的数据包属性的结构体指针

返回值:

成功时返回捕获的数据帧的指针,

失败或无数据返回NULL。

循环捕获多帧数据并处理

typedef void ( * pcap_handler )( u_char *user,

const struct pcap_pkthdr * h,const u_char *bytes);

int pcap_loop( pcap_t * p,//pcap_open_live返回的句柄

int cnt,//要捕获的数据帧的个数

pcap_handler callback,//捕获到一帧数据时执行的处理函数

u_char * user )//传递给callback的参数

查看本栏目更多精彩内容:http://www.bianceng.cn/OS/unix/

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读