从驱动层截获的数据包,应用层如何才能有效的接收这些数据包,要用buffer吧,可能还要用队列,具体该怎么做?接收来的数据包怎样一层层的提取包头信息,最后得到数据包的内容,想修改数据包的内容重新发出去,该如何实现?

解决方案 »

  1.   

    补充一下具体要解决的问题:1、应用层怎样用buffer快速读取驱动层已经捕获的数据?
    2、如何判段链路层的各种协议,或者如何实现链路层数据包过滤?
    3、如何还原应用层解析出来的数据
    4、修改数据包的内容然后发出去,只还原或修改各层协议头就可以了吗? 
      

  2.   

    1、指针,我习惯用memcpy
    2、链路层数据包,第13和第14个字节就是协议类型
    3、还原?什么意思?
    4、MAC地址、IP、端口、长度、checksum之类的都要改
      

  3.   

    没事多用sniffer抓抓包,里边解析的很清楚,多用用就差不多了
      

  4.   

    sniffer可以抓包,好像还有个差不多的软件,也可以抓包的。
      

  5.   

    首先要知道协议,然后是buffer接收数据,再按照协议拆分即可
      

  6.   

    就是buffer接收数据时具体如何实现?总不能一次一次去读吧,那样好像效率太低了
      

  7.   

    用WinPcap,可以在应用层捕获、发送报文。
      

  8.   

    有了个开发包,在Linux下叫libpcap,windows下的叫winpcap
    你下载这个包安装后,下面有例子和文档