代码改变世界
[登录 · 注册]
  • 使用socket BPF/Linux内核工程导论——网络:Filter(LSF、BPF、eBPF)
  • 使用socket BPF

    linux 下的 包过滤器 BPF

    Linux内核工程导论——网络:Filter(LSF、BPF、eBPF)

    注意(文中描述的内容):

    此外,这段BPF代码还存在的一个问题是,一般情况下tcpdump只返回所捕获包的头96字节,也就是0×60字节,可见代码的倒数第二行是ret #96。对于需要完整的包处理还是不行的,因此你需要将其设置为0×0000ffff,或者在用tcpdump生成的时候用tcpdump -s 65535 -dd … 来生成

    1、我的tcpdump 生成BPF code时,长度直接就是0x0000ffff 而非0x60,可能与tcpdump版本有关系

    [root@dvrdvs nfs] # ./tcpdump udp -dd 
    device eth0 entered promiscuous mode
    { 0x28, 0, 0, 0x0000000cdevice eth0 left promiscuous mode
     },
    { 0x15, 0, 5, 0x000086dd },
    { 0x30, 0, 0, 0x00000014 },
    { 0x15, 6, 0, 0x00000011 },
    { 0x15, 0, 6, 0x0000002c },
    { 0x30, 0, 0, 0x00000036 },
    { 0x15, 3, 4, 0x00000011 },
    { 0x15, 0, 3, 0x00000800 },
    { 0x30, 0, 0, 0x00000017 },
    { 0x15, 0, 1, 0x00000011 },
    { 0x6, 0, 0, 0x0000ffff },
    { 0x6, 0, 0, 0x00000000 },
    [root@dvrdvs nfs] # ./tcpdump -dd ether proto 0x8033
    device eth0 entered promiscuous mode
    { 0x28, 0, 0, 0xdevice eth0 left promiscuous mode
    0000000c },
    { 0x15, 0, 1, 0x00008033 },
    { 0x6, 0, 0, 0x0000ffff },
    { 0x6, 0, 0, 0x00000000 },
    [root@dvrdvs nfs] # ./tcpdump --help                
    ./tcpdump: invalid option -- -
    tcpdump version 4.5.1
    libpcap version 1.5.2
    

    BPF(BSD Packet Filter)--应用和理念扩展

    Linux下PF_PACKET的使用,RARP的server和client程序 (转)

    .在使用SOCK_RAW, SOCK_DGRAM和SOCK_PACKET的区别
    在socket的第一个参数使用PF_PACKET的时候,上述三种socket的类型都可以使用。但是有区别。
    (1)使用SOCK_RAW发送的数据必须包含链路层的协议头,接受得到的数据包,包含链路层协议头。而使用SOCK_DGRAM则都不含链路层的协议头。
    (2)SOCK_PACKET也是可以使用的,但是已经废弃,以后不保证还能支持,不推荐使用。
    (3)在使用SOCK_RAW或SOCK_DGRAM和SOCK_PACKET时,在sendto和recvfrom中使用的地址类型不同,前两者使用sockaddr_ll类型的地址,而后者使用sockaddr类型的地址。
    (4)如socket的第一个参数使用PF_INET,第二个参数使用SOCK_RAW,则可以得到原始的IP包。

  • 上一篇:操作系统标识宏
    下一篇:使用Iperf工具测试android系统网络wifi的吞吐量wifithrougput
  • 【推广】 阿里云小站-上云优惠聚集地(新老客户同享)更有每天限时秒杀!
    【推广】 云服务器低至0.95折 1核2G ECS云服务器8.1元/月
    【推广】 阿里云老用户升级四重礼遇享6.5折限时折扣!
  • 原文:https://www.cnblogs.com/jingzhishen/p/5777616.html
走看看 - 开发者的网上家园