
LINUX 源码
me败家懒妞
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux协议栈-netfilter(1)-框架
文章转载----------------------点击打开链接1. netfilter框架Netfilter 是Linux内核中进行数据包过滤、连接跟踪、地址转换等的主要实现框架。当我们希望过滤特定的数据包或者需要修改数据包的内容再发送出去,这些动作主要都在netfilter中完成。iptables工具就是用户空间和内核的Netfilter模块通信的手段,iptables命令提供很多选项来实现过...转载 2018-07-05 11:10:24 · 515 阅读 · 0 评论 -
Linux内核中的RCU机制
http://blog.chinaunix.net/uid-23769728-id-3080134.htmlRCU的设计思想比较明确,通过新老指针替换的方式来实现免锁方式的共享保护。但是具体到代码的层面,理解起来多少还是会有些困难。在《深入Linux设备驱动程序内核机制》第4章中,已经非常明确地叙述了RCU背后所遵循的规则,这些规则是从一个比较高的视角来看,因为我觉得过多的代码分析反而容易让读...转载 2019-03-13 14:59:51 · 368 阅读 · 0 评论 -
理解获取结构体内偏移值 (size_t)&(((s *)0)->m) 原理
#define offsetof(s,m) (size_t)&(((s *)0)->m)((s *)0):强制转化成数据结构指针,并使其指向地址0;((s *)0)->m:使该指针指向成员m&(((s *)0)->m):获取该成员m的地址(size_t)&(((s *)0)->m):转化这个地址为合适的类型 ANSI C标准允许任何...原创 2019-01-07 14:22:09 · 961 阅读 · 0 评论 -
skb_clone 与skb_copy
skb_copy是一个深拷贝,skb_clone只是一个浅拷贝1、skb_clone()Skb_clone()函数只是复制sk_buff结构,并不复制skb的数据缓冲区。Clone后的sk_buff结构与原始的sk_buff指向同一数据缓冲区。原始的和clone后的skb描述符的cloned值都会被置1,clone的skb描述符的users值置1,同时数据缓冲区的引用计数dataref增加1...原创 2018-12-25 10:05:26 · 3276 阅读 · 0 评论 -
automake等自动生成makefile 的相关有用文档
automake等自动生成makefile 的相关有用文档Automake 使用手册 https://blog.youkuaiyun.com/wangxiaoqin00007/article/details/35225783图解acloal autoheader automakehttps://my.oschina.net/qihh/blog/66113makefile.am 与config...原创 2018-10-08 18:51:54 · 216 阅读 · 0 评论 -
Linux协议栈-netfilter(5)-iptables
文章转载------------------------------点击打开链接iptables是用户态的配置工具,用于实现网络层的防火墙,用户可以通过iptables命令设置一系列的过滤规则,来截获特定的数据包并进行过滤或其他处理。iptables命令通过与内核中的netfilter交互来起作用。我们知道netfilter通过挂在每个hook点上的hook函数来过滤数据包,并且将过滤规则存放在几...转载 2018-07-05 11:19:07 · 307 阅读 · 0 评论 -
Linux协议栈-netfilter(4)-期望连接
文章转载--------------------点击打开链接传统的conntrack和NAT处理只对IP层和传输层头部进行转换处理,但是一些应用层协议,在协议数据报文中包含了地址信息。为了使得这些应用也能透明地完成NAT转换,NAT使用一种称作ALG的技术,它能对这些应用程序在通信时所包含的地址信息也进行相应的NAT转换。例如:对于FTP协议的PORT/PASV命令,在数据包载荷中需要包含地址信息...转载 2018-07-05 11:17:32 · 590 阅读 · 0 评论 -
Linux协议栈-netfilter(3)-NAT
文章转载----------------点击打开链接本文对netfilter中NAT部分的源码进行分析,读者需要先对NAT的基本概念有一个大致了解。1. NAT模块的初始化NAT模块的初始化过程主要是初始化一些全局变量以及注册NAT相关的hook函数。在下面nf_nat_init()函数和nf_nat_standalone_init()函数的流程图中用红色标记了要初始化的全局数据结构。nf_nat...转载 2018-07-05 11:16:02 · 571 阅读 · 0 评论 -
Linux协议栈-netfilter(2)-conntrack
文章转载------------------------------点击打开链接连接跟踪(conntrack)用来跟踪和记录一个连接的状态,它为经过协议栈的数据包记录状态,这为防火墙检测连接状态提供了参考,同时在数据包需要做NAT时也为转换工作提供便利。本文基于Linux内核2.6.31实现的conntrack进行源码分析。1. conntrack模块初始化1.1 conntrack模块入口con...转载 2018-07-05 11:13:47 · 966 阅读 · 0 评论 -
socket与sock的联系
套接字究竟是什么如果你知道Linux系统中进程间通信的方式,就应该知道套接字也是其中一种。但套接字特别之处在于它不仅可以用来实现同一台主机上进程间的通信,还可以用来实现主机间的进程间的通信。通信的双方各自打开一个套接字,套接字之间通过通信链路相连。如果把两个套接字之间的‘连接’比喻成‘水管’,那么套接字就是‘水龙头’Unix有一句格言:everything is a file,即‘万物皆...转载 2019-06-21 17:56:43 · 4839 阅读 · 0 评论