linux netfilter 与helper相关的hook:

点击(此处)折叠或打开

{

.hook = ipv4_conntrack_in,

.owner = THIS_MODULE,

.pf = PF_INET,

.hooknum = NF_IP_PRE_ROUTING,

.priority = NF_IP_PRI_CONNTRACK,

}

{

.hook = ipv4_conntrack_help,

.owner = THIS_MODULE,

.pf = PF_INET,

.hooknum = NF_IP_POST_ROUTING|NF_IP_LOCAL_IN,

.priority = NF_IP_PRI_CONNTRACK_HELPER,

}

第一个数据包到来的流程:

ipv4_conntrack_in --> nf_conntrack_in --> resolve_normal_ct --> nf_ct_get_tuple --> nf_conntrack_find_tuple(1) --> init_conntrack --> nf_ct_find_expection(2) --> nf_ct_helper_find(3) --> nf_ct_helper_ext_add(4)

(1) 查找tuple五元组,因为是第一个连接,所有查找不到

(2) 查找期待连接,因为没有添加过期待连接,所有也查找不到

(3) 查找注册的helper,这里以tftp为例,找到了tftp注册的helper

(4) 将找到的helper添加到ct结果体中

在之后的ipv4_conntrack_help的hook函数中,会执行ct->helper->help函数,这个help函数tftp_help会添加一个exp到全局期待连接表中

当期待的链接的第一个数据包到达的时候,会在(2)中找到,从而将新的连接与之前的链接联系起来。

linux netfilter 分析,Linux Kernel Netfilter Helper 分析相关推荐

  1. linux Netfilter在网络层的实现详细分析(iptables)

    我在之前已经写过两篇关于netfilter的文章: Linux netfilter hook源码分析(基于内核代码版本4.18.0-80)_yg@hunter的博客-CSDN博客 Linux下使用Ne ...

  2. Linux Kernel Oops异常分析

    0.linux内核异常常用分析方法 异常地址是否在0附近,确认是否是空指针解引用问题 异常地址是否在iomem映射区,确认是否是设备访问总线异常问题,如PCI异常导致的地址访问异常 异常地址是否在st ...

  3. linux oops产生原理,kernel panic , Oops 等cpu异常的分析与定位

    一.kernel panic 二.mips异常机制 三.linuxkernel 对mips异常的处理 四.kernel panic 实例分析 Kernel  panic 内核代码,相比用户层代码更难以 ...

  4. Linux内核学习(六):linux kernel的Kconfig分析

    Linux内核学习(六):linux kernel的Kconfig分析 前面我们知道了makefile文件,makefile文件会结合配置文件.config来进行操作.这里就再来看看生成内核.conf ...

  5. linux内核oops错误码说明,Linux Kernel Oops异常分析

    0.linux内核异常常用分析方法 异常地址是否在0附近,确认是否是空指针解引用问题 异常地址是否在iomem映射区,确认是否是设备访问总线异常问题,如PCI异常导致的地址访问异常 异常地址是否在st ...

  6. 分析Linux 0.11中的kernel部分的makefile文件

    # # 在UltraEdit下注释 #  # # # if you want the ram-disk device, define this to be the # size in blocks. ...

  7. Linux 内核(Kernel)组成分析

    一.Linux内核简介 Linux 内核采用宏内核架构,即 Linux 大部分功能都会在内核中实现,如进程管理.内存管理.设备管理.文件管理以及网络管理等功能,它们是运行在内核空间中(也可以称之为特权 ...

  8. 【linux驱动分析】之dm9000驱动分析

    [linux驱动分析]之dm9000驱动分析(一):dm9000原理及硬件分析 [linux驱动分析]之dm9000驱动分析(一):dm9000原理及硬件分析 [linux驱动分析]之dm9000驱动 ...

  9. 学习 Linux内核的意义及内核 head_list分析

    转自:http://blog.sina.com.cn/s/blog_6dd71c3c0101mgpf.html 1.分析linux内核的重要性 操作系统作为最核心的软件,关系到国家的战略安全,在现代的 ...

  10. 【linux驱动分析】之dm9000驱动分析(三):sk_buff结构分析

    [linux驱动分析]之dm9000驱动分析(一):dm9000原理及硬件分析 [linux驱动分析]之dm9000驱动分析(二):定义在板文件里的资源和设备以及几个宏 [linux驱动分析]之dm9 ...

最新文章

  1. bzoj 4871: [Shoi2017]摧毁“树状图”
  2. sql 自动递增 在java_java基础 之 操作符
  3. C#中的DateTime:本周,本月,今年,本周
  4. Linux系统安全与应用(二)——安全机制、安全控制、弱口令检测JR、网络扫描NMAP和控制台命令Netstat
  5. 关于:以前的某个程序安装已在安装计算机上创建挂起的文件操作 解决办法
  6. 小白初涉,先试试水。涉及Python,C语言基础,机器学习等
  7. web.config中配置数据库连接的两种方式
  8. winform 获取当前项目所在的路径
  9. CSDN发布博文时出错的截图
  10. linux工具apt、yum和dnf运用
  11. 华为笔记本没有网线口_笔记本电脑没有网线接口的怎么办?
  12. ASUS AC88U 路由器开机自启方法
  13. linux环境下写的C,一元二次方程示例
  14. 【unity 保卫星城】--- 开发笔记08(UI轮盘)
  15. 微信小程序017音乐播放器系统 php java
  16. 离散数学 —— 集合论(集合的传递性与自反性、幂集、交集、并集、相对补集、绝对补集、对称差或异或、序偶或序对、集合的规模或基数)
  17. java aes 工具类_Java中的AES加解密工具类:AESUtils
  18. 帮助你快速懂得心算十进制转二进制。(理解就会)
  19. 求一份很早的MUD文字游戏,海洋2或者海洋3的代码
  20. 计算机教案动作按钮,自定义动画及动作设置》教学设计

热门文章

  1. OpenAI高调站队Pytorch,怎样学Pyorch?
  2. MATLAB_排列组合_组合生成程序
  3. Windows10和Ubuntu双系统下用windows引导Ubuntu
  4. day24 java的集合(1)collection
  5. HTML统计用户浏览页面时间,如何使用JS代码计算用户浏览页面的时间呢?
  6. python绘图颜色深浅代表数值_画图理解Python的深浅拷贝
  7. 商务搜索引擎_网络营销外包——网络营销外包公司如何做好电子商务网站优化?...
  8. java对接支付宝微信银联_JavaWEB后端支付银联,支付宝,微信对接
  9. mysql快速导入导出数据库_mysql快速导出与导入
  10. bat 自动输入密码_三轴自动焊接,三轴搬运机械手示教系统简易说明,分秒学会...