- 博客(23)
- 收藏
- 关注
转载 linux netlink机制介绍与实例
开发和维护内核是一件很繁杂的工作,因此,只有那些最重要或者与系统性能息息相关的代码才将其安排在内核中。其它程序,比如GUI,管理以及控制部分的代码,一般都会作为用户态程序。在linux系统中,把系统的某个特性分割成在内核中和在用户空间中分别实现一部分的做法是很常见的(比如linux系统的防火墙就分成了内核态的Netfilter和用户态的iptables)。然而,内核程序与用户态的程序又是怎样行通讯
2017-03-30 16:51:55 443
转载 Linux 系统内核空间与用户空间通信的实现与分析
多数的 Linux 内核态程序都需要和用户空间的进程交换数据,但 Linux 内核态无法对传统的 Linux 进程间同步和通信的方法提供足够的支持。本文总结并比较了几种内核态与用户态进程通信的实现方法,并推荐使用 netlink 套接字实现中断环境与用户态进程通信。1 引言Linux 是一个源码开放的操作系统,无论是普通用户还是企业用户都可以编写自己的内核代码,再加上对标准内核的裁剪从而制
2017-03-30 16:19:54 245
转载 Linux模块机制浅析
Linux允许用户通过插入模块,实现干预内核的目的。一直以来,对linux的模块机制都不够清晰,因此本文对内核模块的加载机制进行简单地分析。模块的Hello World!我们通过创建一个简单的模块进行测试。首先是源文件main.c和Makefile。florian@florian-pc:~/module$ cat main.c#include#include
2017-03-30 16:00:02 867
转载 SKB_BUFF说明
一. SKB_BUFF的基本概念1. 一个完整的skb buff组成(1) struct sk_buff--用于维护socket buffer状态和描述信息(2) header data--独立于sk_buff结构体的数据缓冲区,用来存放报文分组,使各层协议的header存储在连续的空间中,以方便协议栈对其操作(3) struct skb_shared_info --作为heade
2017-03-30 15:31:09 2987
转载 Linux 内核网络协议栈 ------sk_buff 结构体 以及 完全解释 (2.6.16)
在2.6.24之后这个结构体有了较大的变化,此处先说一说2.6.16版本的sk_buff,以及解释一些问题。一、先直观的看一下这个结构体~~~~~~~~~~~~~~~~~~~~~~在下面解释每个字段的意义~~~~~~~~~~~[cpp] view plain copy print?struct sk_buff { /* T
2017-03-30 14:31:08 429
转载 改变Windows服务的启动顺序
要改变Windows服务的启动顺序,只要修改Windows的注册表就可 以了。任何Windows服务的注册信息可以在注册表的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\\键下找到。下面就介绍几个与服务启动顺序相关的服务的值: Group值:一个REG_SZ类型的值。它用来描述服务属于那一个服务组。如果服务没有这一项,那么它
2017-03-28 17:06:30 2647
转载 Linux Netfilter实现机制和扩展技术
本文从Linux网络协议栈中报文的流动过程分析开始,对Linux 2.4.x内核中最流行的防火墙构建平台Netfilter进行了深入分析,着重介绍了如何在Netfilter-iptables机制中进行应用扩展,并在文末给出了一个利用扩展Netfilter-iptables实现VPN的方案。2.4.x的内核相对于2.2.x在IP协议栈部分有比较大的改动, Netfilter-iptabl
2017-03-23 17:16:10 506
转载 Linux内核--基于Netfilter的内核级包过滤防火墙实现
测试内核版本:Linux Kernel 2.6.35----Linux Kernel 3.2.1原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7572382更多请查看专栏http://blog.csdn.net/column/details/linux-kernel-net.html作者:闫明知识基
2017-03-23 17:14:24 465
转载 IPTables工具及其与netfilter关系介绍
IPTables概述 IPTables是基于Netfilter基本架构实现的一个可扩展的数据报高级管理系统或核外配置工具,利用table、chain、rule三级来存储数据报的各种规则。Netfilter-iptables由两部分组成,一部分是Netfilter的"钩子",另一部分则是知道这些钩子函数如何工作的一套规则--这些规则存储在被称为iptables的数据结构之中。钩子函
2017-03-23 17:06:00 1257
转载 Linux内核中Netfilter架构介绍
Netfilter概述 Netfilter/IPTables是Linux2.4.x之后新一代的Linux防火墙机制,是linux内核的一个子系统。Netfilter采用模块化设计,具有良好的可扩充性。其重要工具模块IPTables从用户态的iptables连接到内核态的Netfilter的架构中,Netfilter与IP协议栈是无缝契合的,并允许使用者对数据报进行过滤、地址转换
2017-03-23 17:04:05 322
转载 Linux Netfilter开发小结
前置知识:IP包:[cpp] view plain copy print?struct ip { #if BYTE_ORDER == LITTLE_ENDIAN unsigned char ip_hl:4, /* header length */ ip_v:4; /*
2017-03-23 17:02:07 381
原创 IRP 同步IO、异步IO及延迟IO完成
同步与异步kernel32.dllCreateFileW /* translate the flags that need no validation */ if (!(dwFlagsAndAttributes & FILE_FLAG_OVERLAPPED)) { /* yes, nonalert is correct! apc's are not delivere
2017-03-17 17:24:11 992
转载 读wrk系列 关于IRP(1)
NtReadFile为例, 1. 建立irp[cpp] view plain copy print?PIRP IopAllocateIrpPrivate( IN CCHAR StackSize, IN BOOLEAN ChargeQuota ) //如果大小小于IopLargeIrpStackLocatio
2017-03-17 17:11:47 630
转载 总结:使用IoMarkPending的原因及原理
为了使系统吞吐量最大化,I/O管理器希望驱动程序推迟其耗时IRP的完成。驱动程序通过在某个派遣例程中调用IoMarkIrpPending函数并返回STATUS_PENDING来表示完成操作被推迟。(注意:以下讨论未加说明均指在操作被推迟情况下)I/O管理器的原始调用者通常希望在继续执行之前等待操作完成,所以I/O管理器在处理推迟完成时有下面类似的逻辑(不代表真正的Microsoft源代码):
2017-03-14 17:21:54 497
转载 通俗解析IRP和I/O设备栈在内核程序中的作用(转自看雪)
言归正传,所有的I/O请求都是以IRP(I/O请求包)的形式来提交的,同时内核程序的所有分发函数(Dispatch Function)的第二个参数都是PIRP(也即是指向IRP的指针)。为了说明问题,防止跳跃性太大,先解释几个名词(都按自己理解的),可以帮助会的人复习,不会的人学习1:DRIVER_OBJECT:驱动对象,由即插即用管理创建和传递到DriverEntry,作为D
2017-03-14 16:29:08 1069
原创 NDIS中间层驱动网络连接属性隐藏
修改inf文件的 Characteristics=0x4418Characteristics项可以有1个或多个如下的值(多值应计算总和):十六进制值 名字 描述ox1 NCF_VIRTUAL
2017-03-10 16:39:25 544
转载 中间层驱动工作原理
中间层驱动工作原理转自:http://www.nsfocus.net/(1)注册表常识:1)、设备数据库所在的注册表健值为: HKLM\SYSTEM\CurrentControlSet\Enum\ ENUM子项中是一个设备数据库,在数据库存放计算机中所有安装的,并且被系统认识到的设备。 所有的用户(包括管理员)都不能更改ENUM项的内容。这是为了保护操
2017-03-10 15:03:50 411
转载 NDIS PACKET结构,如何COPY?
NDIS PACKET封装了一个网络数据包,在以太网中,就是以太网封包,有时需要对数据进行拷贝再进行特殊的处理,如何做,它的结构体是什么样了?基本框架结构:typedef struct _NDIS_PACKET{NDIS_PACKET_PRIVATE Private;union{struct // For Connection-less miniports{
2017-03-09 14:07:53 411
转载 个人总结NDIS中NDIS_PACKET,NDIS_BUFFER的关系
1 // 2 // NDIS_PACKET结构的定义 3 // 4 typedef struct _NDIS_PACKET 5 { 6 NDIS_PACKET_PRIVATE Private; 7 //这个其实是一个链表结构,Private.Head指向第一个链表,Private.Tail指向最后一个 8 //以下有关于这个结构的解释
2017-03-09 13:55:29 415
转载 vs2010 wdk配置问题:_In_opt_z_未声明的标识符
我按照http://blog.csdn.net/ljinshuan/article/details/7255198这里配置,但是测试的时候还是出错了,要怎么解决?//------------------------------------下面是出错提示--------------------------------------1>E:\Microsoft Visual Studio
2017-03-03 17:12:51 2857 1
转载 windows 网路驱动安装
最近在开发网路协议及小端口驱动,在http://www.ndis.com/下载了协议驱动安装的例子ProtInstall(http://www.ndis.com/ndis-general/ndisinstall/programinstall.htm),研究了一下,特记录一下。网络方面的驱动可以使用INetCfg接口安装,其安装步骤大致如下1. 使用CoCreateInstance创建Com
2017-03-01 15:55:44 856
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人