当前位置:  技术问答>linux和unix

求教: linux下关于捕获网络数据包的问题

    来源: 互联网  发布时间:2016-03-15

    本文导语:  我和同学做一个linux下网络监测的程序,要求捕获所有局域网数据包,并且丢包率尽可能最低,请问用哪一种编程方式比较好? 我读过不少网上的文档和相关讨论, libpcap好像效率很低,在6M以上流量丢包率就已经很高, 听说PF_...

我和同学做一个linux下网络监测的程序,要求捕获所有局域网数据包,并且丢包率尽可能最低,请问用哪一种编程方式比较好?
我读过不少网上的文档和相关讨论,
libpcap好像效率很低,在6M以上流量丢包率就已经很高,
听说PF_SOCK和RAW_SOCK效率很高,不过两者的实现有什么异同?
还有修改内核网卡驱动,不知道效率如何,工作量会不会太大?

听说有一种零拷贝技术,很好用,能介绍一下吗?

谢谢各位

|
通常都是用libpcap来开发监听网络数据流的程序,如常用的ethereal(wireshark)协议分析软件、snort、bro等IDS都是用libpcap(windows下叫winpcap)
开发,在OS底层未经改造的情况下,可以捕获400Mbpa以上的流量,不至于6Mbps就丢包;
要想获得更高的性能,就用零拷贝技术,所谓“零拷贝”就是网卡(硬件或驱动)捕获数据所使用的内存区域,应用程序可以经过某种映射直接使用,而正常的流程是网卡驱动所使用的内存属于核心态,必须将其拷贝到用户态,应用程序才能使用,如果要经过协议栈的话,可能要拷贝若干次才行,减少数据在内存中拷贝次数,可以很大程度上提高程序效率。要实现”零拷贝“技术必须对操作系统核心进行改造才行,稍微复杂一点。

|
mark
将网卡设置成混合模式可以捕获所有经过该网卡的数据包,但没有实践过
学习.......

|
好像没那么简单,呵呵.

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求教求教,shell问题...各位大哥,帮忙下
  • 400分求教: 求教一简单问题,现场给分
  • 高分求教:如何将JAVA文件(.class)制作成可执行文件(.exe),求教方法或工具推荐
  • 急!!求教linux命令的使用:统计出/bin目录中文件的个数,追加到文件filea的结尾
  • 求教:在UNIX中查找包含指定文字的文件名
  • 小白菜求教linux大鸟
  • JDK1.3.1初级问题求教
  • 初学者有问题求教!
  • 各路高手请进!高分求教,非常着急!
  • docker中文入门学习手册 iis7站长之家
  • 简单问题:从sun网站上当了个jdk1.4b3,bin后缀,求教怎么安装
  • 求教:知道当前时间,如何得到N天前的时间 ?
  • 求教:switch(condition)中的condition 必须为整型吗?
  • Linux远程访问的问题,高分求教:)
  • 求教:在Linux下如何做代理服务器?
  • 紧急求教!究竟Java里面有没有相当于C++的CPOINT的类阿?
  • 求教JAVA中XML解析问题
  • 50分求教,在JSP里如何将String转换成Double
  • 我刚装好,是不是需要配制环境变量?求教。
  • 400分求教JAVA皮肤的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3