TCPDUMP/LIBPCAP 3-PCAP 中文手册(1)

来源:互联网 发布:jquery中怎么定义数组 编辑:程序博客网 时间:2024/05/22 16:05

SYNOPSIS

#include <pcap/pcap.h>

DESCRIPTION

PCAP提供为抓包系统提供高级接口。网络上的所有数据包,即使是发往其他主机的数据包,都可以通过这种机制访问。它还支持将捕获的数据包保存到“savefile”,和从“savefile”中读取数据包。

Opening a capture handle for reading

调用 pcap_create() 时给定要捕获的网络或者其他接口名称,以打开一个用于实时捕获的句柄,并需要设置合适参数;

调用 pcap_activate() 启动句柄;

调用 pcap_findalldevs() 来获得可被打开用于实时捕获的设备列表;

调用 pcap_freealldevs()释放pcap_findalldevs() 返回的设备列表;

调用 pcap_lookupdev() 会返回列表中第一个非回环网络接口(not 'loopback');

调用 pcap_open_offline() 时给定“savefile”的路径名,以打开一个用于读取网络包的“savefile”的句柄;

调用 pcap_fopen_offline() 时给定一个来源于一个已打开的用于读取的文件的 FILE * 参数(fopen),来为 "savefile" 建立句柄;

调用 pcap_open_dead()获取(用在需要 pcap_t 类型作参数的函数中的) "fake" pcap_t,比如打开一个 "savefile" 用于写的函数 和 编译过滤器表达式函数;

(原文:In order to get a ``fake'' pcap_t for use in routines that require a pcap_t as an argument, such as routines to open a ``savefile'' for writing and to compile a filter expression, call pcap_open_dead().)

pcap_create(), pcap_open_offline(), pcap_fopen_offline(), and pcap_open_dead() 返回一个指向 pcap_t 类型的指针, 该指针是句柄,用于从 "capture stream" 或者 "savefile" 中读取数据包,用于查找与 "capture stream" 或者 “savefile” 相关的信息;

使用 pcap_close()关闭句柄;

Options that can be set on a capture handle


snapshot length

如果捕获时抓取整个 packet 内容,需要更多 CPU 时间拷贝 packet 到应用程序,更多的磁盘和网络带宽把 packet 写入文件,更多的磁盘空间来保存 packet。如果你不需要整个 packet 内容 — 例如,如果你只对 packets 中 TCP 首部感兴趣 — 你可以设置 "snapshot length" 为一个合适的数值。如果 "snapshot length" 被设置为snaplen,并且 snaplen 小于被捕获的 packet 大小,那么只有 packet 的前 snaplen 长度的字节会被捕获并作为 packet data 内容。

在大部分并非所有网络上,从 packet 捕获所有可用数据, 65535 长度的 "snapshot length" 足够了。

调用 pcap_set_snaplen()来设置 "snapshot length"。


3 0