- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我知道这个问题已经被讨论过很多次了:我应该使用 libpcap 还是 PF_PACKET(数据链路套接字)来捕获数据包?
根据我的研究,几乎所有地方都建议使用 libpcap 而不是 PF_PACKET,主要是因为它的可移植性。
但是,对于我现在的项目(用于生产系统),可移植性根本不是问题,我只关心性能(速度,丢包率)。我的程序在 CentOS 5.10(内核 2.6.18)上运行据我所知,libpcap 在每个数据包上放置了一个时间戳。这会导致很大的性能损失吗?是否还有其他因素导致 libpcap 不适用于高速网络?
最佳答案
As far as I know, libpcap put a timestamp on each packet.
不,libpcap 从它使用的操作系统数据包捕获机制获取数据包的时间戳 - 在 Linux 上是...
...PF_PACKET 套接字。
Linux 内核为传入的数据包打上时间戳。 PF_PACKET 套接字有多种读取方式:
只要可用,Libpcap 就会使用内存映射访问;如果您关心捕获性能,您可能也想这样做。然而,它并不容易使用。
关于linux - libpcap 还是 PF_PACKET?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26364888/
我试图在以下内容之后找出存储在“缓冲区”中的数据结构: sock=socket(PF_PACKET, SOCK_RAW, htons(ETHERTYPE_IP)); recvfrom(sock, bu
我知道这个问题已经被讨论过很多次了:我应该使用 libpcap 还是 PF_PACKET(数据链路套接字)来捕获数据包? 根据我的研究,几乎所有地方都建议使用 libpcap 而不是 PF_PACKE
我一直在研究使用 构造的以太网协议(protocol)(不是 IP) 套接字(PF_PACKET,SOCK_RAW,ether_type) 我有一个小问题。我构建了一个数据包,其中将源和目标 mac
当使用协议(protocol)类型为ETH_P_IP 的PF_PACKET 类型的套接字时,man packet文档讨论了多播的套接字选项。套接字选项是 PACKET_ADD_MEMBERSHIP。
我需要使用 RAW 套接字接收传入的 UDP 数据包,该套接字正在使用以下代码片段打开: static int fd; char *iface; iface = "eth0"; if ( (fd =
在 C 中的 linux 上,设置接口(interface) PROMISC 并使用原始套接字后,我可以通过 read() 读取接口(interface)上的传入数据包。 然而,它并没有得到所有的数据
我有以下2个功能 int listen_socket(unsigned int ip, int port, char *inf) { struct ifreq interface; i
我使用以下方法设置了一个原始数据包套接字: sockFd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL) ); 然后我尝试设置套接字选项 IP_HDRIN
在两台 PC 上,我正在打开一个 AF_PACKET/PF_PACKET 套接字,原始协议(protocol)。 sock = socket(AF_PACKET, SOCK_RAW, htons(PR
我知道 PF_PACKET 系列套接字需要 root 权限, 但我不知道在 linux 上是如何配置的。 任何人都知道如何,它是直接硬编码在内核中吗? 最佳答案 过去只是硬编码在内核中。 但是从 2.
我是一名优秀的程序员,十分优秀!