博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Libpacp 深度剖析
阅读量:5019 次
发布时间:2019-06-12

本文共 500 字,大约阅读时间需要 1 分钟。

Libpacp 深度剖析

1. Libpacp 的工作原理

​ Libpcap的工作原理可以描述为,当一个数据包到达网卡时,通过网络分接口(即旁路机制)将数据包发给BPF过滤器,匹配通过的数据包可以被libpcap利用创建的套接字PF_PACKET从链路层驱动程序中获得。进而在用户空间提供独立于系统的用户级API接口。

"流程示意图"

一个数据包的捕捉分为三个主要部分:

  • 面向底层包捕获
  • 面向中间层的数据包过滤
  • 面向应用层的用户接口

这与Linux操作系统对数据包的处理流程是相同的。

网卡->网卡驱动->数据链路层->IP层->传输层->应用程序

2. Libpcap的实现机制

​ 这里实现的包捕获机制是在数据链路层增加一个__旁路处理__,并不干扰系统自身的网路协议栈的处理,对发送和接收的数据包通过Linux内核做过滤和缓冲处理,最后直接传递给上层应用程序。因此libpcap在捕获到达网卡的数据包后绕开了传统linux协议栈处理,直接使用链路层PF_PACKET协议族原始套接字方式向用户空间传递报文。

转载于:https://www.cnblogs.com/wangchaowei/p/8612177.html

你可能感兴趣的文章
了解一下 Linux 上用于的 SSH 图形界面工具
查看>>
设计模式之组合模式
查看>>
insertRule()与addRule()创建规则
查看>>
FMDB中 databaseWithPath 的使用问题
查看>>
机器学习好网站
查看>>
python 中的 sys , os 模块用法总结
查看>>
解题:国家集训队 Middle
查看>>
响应者链
查看>>
指针从函数内部带回返回值
查看>>
在使用webView播放flash或视频文件时无法关闭声音的问题
查看>>
redhat 7 源码安装 mysql5.5.49
查看>>
CCP浅谈
查看>>
NAT虚拟网络配置
查看>>
c#部分---需要实例化的内容;
查看>>
销售类
查看>>
技术项目,问题
查看>>
线程池总结
查看>>
Learning to rank (software, datasets)
查看>>
git常见问题
查看>>
.NETFramework:template
查看>>