- 博客(17)
- 收藏
- 关注
原创 linux网络栈
OSI模型定义了七个逻辑网络层1、物理层:提供电信号和一些底层的细节2、数据链路层:处理端点间的数据传输3、网络层:负责数据包转发和主机编址,IPV4和IPV64、传输层/协议层:完成结点间的数据发送,TCP和UDP5、会话层:处理端点间的会话6、表示层:处理数据传送和格式设置7、应用层:向最终用户应用程序提供网络服务linux内核栈的任务就是将接收到的数据包...
2019-04-23 14:29:54
219
原创 iptables
Iptable 作为防火墙在应用层的配置工具,功能是配置相关的规则链,在底层相对应的是netfilter。iptables的精华就在下图:如果能够理解此图,那么掌握iptables就不难。...
2019-03-28 13:58:08
142
转载 报文接收流程
转自:https://www.ibm.com/developerworks/cn/linux/l-ntflt/报文接收流程之驱动程序阶段报文接收流程之协议栈阶段报文转发流程
2019-03-28 11:43:32
1641
原创 Netfilter笔记-03
当我们使用nf_register_hook在内核中注册好hook之后,内核是如何来引用的呢?当设备的硬件接收帧以后,会使用中断事件通知CPU,该帧已经可用了,CPU接收到终端事件之后,会执行do_IRQ函数,IRQ编号会引发正确的处理函数被启用,在该过程中,内核会把帧拷贝到sk_buff数据结构中进行处理。按照IP数据包接收流程内核会调用ip_rcv函数,此函数内会调用NF_HOOK...
2019-03-28 10:28:39
189
转载 IP 数据包接收流程
转载自:https://blog.youkuaiyun.com/suiyuan19840208/article/details/19684883
2019-03-27 17:30:55
512
原创 Netfilter笔记-02
Netfilter说白了就是针对不同的协议(协议类型和hook节点我们上一章已经讲过)在kernel中放置了不同的hook节点,等数据包sk_buff,到来的时候,要给hook节点进行过滤,下图为IP层的五个hook点的位置:在讲具体流程之前我们要介绍一个结构体:struct nf_hook_opsstruct nf_hook_ops { struct list...
2019-03-27 16:14:51
278
原创 Netfilter笔记-01
Netfilter是Linux 2.4.x引入的一个子系统,它作为一个通用的、抽象的框架,提供一整套的hook函数的管理机制,使得诸如数据包过滤、网络地址转换(NAT)和基于协议类型的连接跟踪成为了可能。netfilter的架构就是在整个网络流程的若干位置放置了一些检测点(HOOK),而在每个检测点上登记了一些处理函数进行处理。netfilter架构中不同的协议类型有不同的HOOK。协议类...
2019-03-27 15:45:47
532
原创 iptables链表
iptabes作为linux应用层配置防火墙的工具,具体是搞规则链表,进行插入,删除链表等操作。在内核层是由netfilter具体来实现的,其是由5个hook实现的,网上有很多详解,就不一一叙述。下图是IPtables的链表框架图,如果理解此图,那么iptables就不难。此图来自Iptables 指南 1.1.19,详细内容也可参考Iptables 指南 1.1.19。...
2019-03-25 10:32:58
922
转载 关于内核通知链notifier_block
关于内核通知链,这篇文章有不错的讲解和示例转自:http://bbs.chinaunix.net/thread-2011776-1-1.html
2019-03-22 14:03:51
3700
原创 linux 下的ioctl简介
这几天有时间看了一下《深入理解linux网络系统内幕》,有关于ioctl部分和大家分享一下。ioctl说白了就是用户通过调用ioctl函数可以修改驱动相关的东西,函数原型如下:int ioctl(int handle, int cmd,[int *argdx, int argcx]);如我们使用ifconfig eth0 mtu 1250 这样的命令,用来改变接口eth0的MTU是,...
2019-03-22 10:45:56
1651
转载 关于typedef的用法总结
本文转载自http://blog.youkuaiyun.com/wangqiulin123456/article/details/8284939,很好的typedef总结文章
2019-03-21 15:14:16
105
原创 C语言调试打印
#if DEBUG#define DBG_PRINTF(fmt, ...) do { \ fprintf(stderr, "[%s,%s,%d]:" fmt, __FILE__, __FUNCTION__, __LINE__ , ##__VA_ARGS__); \ fprintf(stderr, "\n"); \ } while(0)#el...
2016-08-04 11:13:06
1248
原创 openwrt 单独编译某个模块
openwrt 编译一般都是make V=s,编译整个固件。如果需要编译某个模块的话可以使用make V=s trunk/package/XXX/compile (XXX代表你的模块)。这样既方便又省时间。
2016-08-03 16:29:30
2021
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人