- 博客(11)
- 资源 (9)
- 收藏
- 关注
转载 Linux内核和用户空间通信的方式(一)— proc文件和mmap共享内存
动态的将内核空间的物理地址和大小传给用户空间。本文也演示了内核空间和用户空间进行通信可以使用的两种常用方法:proc文件系统和mmap共享内存。整个内核模块,在模块插入时建立proc文件,分配内存。卸载模块的时候将用户空间写入的内容打印出来。以下是内核模块的代码和用户空间的测试代码。/*This program is used to allocate memory
2016-02-28 20:11:04 854
转载 mmap--最简单的测试程序(用户空间与内核空间数据交换&&用户态和内核态的数据交换用例)
//内核模块测试程序#include #include #include #include static unsigned long p = 0; static int __init shao_init(void){ //分配共享内存(一个页面) p = __get_free_pages(GFP_KERNEL, 0);
2016-02-28 20:10:02 920
转载 Linux网络编程:原始套接字的魔力【续】
如何从链路层直接发送数据帧 本来以为这部分都弄完了,结果有朋友反映说看了半天还是没看到如何从链路层直接发送数据。因为上一篇里面提到的是从链路层“收发”数据,结果只“收”完,忘了“发”,实在抱歉,所以就有这篇续出来了。 上一节我们主要研究了如何从链路层直接接收数据帧,可以通过bind函数来将原始套接字绑定到本地一个接口上,然后该套接字就只接收从该接口收上来的对应的数据
2016-02-28 19:55:44 553
转载 Linux网络编程:原始套接字的魔力【下】
可以接收链路层MAC帧的原始套接字 前面我们介绍过了通过原始套接字socket(AF_INET, SOCK_RAW, protocol)我们可以直接实现自行构造整个IP报文,然后对其收发。提醒一点,在用这种方式构造原始IP报文时,第三个参数protocol不能用IPPROTO_IP,这样会让系统疑惑,不知道该用什么协议来伺候你了。 今天我们介绍原始套接字的另一种用法
2016-02-28 19:54:48 436
转载 Linux网络编程:原始套接字的魔力【上】
基于原始套接字编程 在开发面向连接的TCP和面向无连接的UDP程序时,我们所关心的核心问题在于数据收发层面,数据的传输特性由TCP或UDP来保证: 也就是说,对于TCP或UDP的程序开发,焦点在Data字段,我们没法直接对TCP或UDP头部字段进行赤裸裸的修改,当然还有IP头。换句话说,我们对它们头部操作的空间非常受限,只能使用它们已经开放给我们的诸如源、目的I
2016-02-28 19:53:59 482
转载 mmap - 用户空间与内核空间
版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]mmap概述共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式, 因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据: 一次从输入文件到共享内存区,另一次从共享内存区到输出文
2016-02-28 19:40:26 767
转载 PF_RING实现分析(转自大神独孤九贱)
版权所有,转载请注明出处独孤九贱内核版本:Linux 2.6.30.9PF_RING版本:4.1.0最近看了一个PF_RING的实现,看了个大概,发上来大家讨论讨论,共同学习。一、什么是PF_RINGPF_RING是一个第三方的内核数据包捕获接口,类似于libpcap,它的官方网址是:http://www.ntop.org/PF_RING.html
2016-02-28 09:25:29 3950
转载 Linux内核实践 - 如何添加网络协议[三]:实现
版权声明:本文为博主原创文章,未经博主允许不得转载。内核版本:2.6.34接上篇《添加网络协议》。 为了用户方便查看brcm设备的工作状态,使用proc文件系统是很好的方式。一个网络协议模块可以注册到网络空间中register_pernet_subsys(),这个函数会为子空间分配一个id号,通过id可以在网络空间中找到分配给该子空间的内存:init_net->g
2016-02-28 09:22:36 412
转载 Linux内核实践 - 如何添加网络协议[二]:实现
版权声明:本文为博主原创文章,未经博主允许不得转载。内核版本:2.6.34实现思路: 报文在网络协议栈中的流动,对于接收来讲,是对报文的脱壳的过程,由于报文是已知的输入,只要逐个解析协议号;对于发送来讲,是各层发送函数的嵌套调用,由于没有已知的输入,只能按事先设计好的协议进行层层构造。但无论报文怎样的流动,核心是报文所在设备(skb->dev)的变化,相当于各层之
2016-02-28 09:21:04 949 1
转载 Linux内核实践 - 如何添加网络协议[一]:目的
版权声明:本文为博主原创文章,未经博主允许不得转载。 本文只是一个内核网络协议的实践的例子,先说明添加的目的,下篇开始具体的实现。 内核版本:2.6.34;在支持802.1主机上,报文的一般格式: 现在需要支持一种新的协议[二层] – BRCM协议,与IP等协议不同,它位于2层,拥有6字节的头部和4字节的尾部,添加的层次决定了
2016-02-28 09:19:38 358
转载 Linux平台Boost的编译方法
本博客(http://blog.csdn.net/livelylittlefish )贴出作 者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正!Linux平台Boost的编译方法 Boost的编译使用的不是已经成为公认标准的make,而是专门为Boost开发的工具bjam(boost jam)。本文以boost1.40为例,在Linu
2016-02-16 19:51:26 307
刘文涛 网络安全开发包 难得宝库
2010-02-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人