1,ip_rcv收到包之后,调用NF_HOOK,NF_HOOK首先调用nf_hook遍历NFPROTO_IPV4,
NF_INET_PRE_ROUTING的钩子点上的hook,然后执行ip_rcv_finish

2,ip_rcv_finish调用首先调用查找路由获取rtable,得到input方法,对于RTN_LOCAL,input=ip_local_ip_local_deliver,非RTN_LOCAL,input=ip_forward;之后调用dst_input;

3,如果是RTN_LOCAL进入ip_local_ip_local_deliver,遍历NFPROTO_IPV4
NF_INET_LOCAL_IN的钩子点的hook,最后执行ip_local_deliver_finish

4,非RTN_LOCAL则进入ip_forward,之后遍历NFPROTO_IPV4
NF_INET_FORWARD的钩子点的hook,之后执行ip_forward_finish

5,ip_forward_finish调用ip_output,遍历NFPROTO_IPV4
NF_INET_POST_ROUTING钩子点的hook,之后执行ip_finish_output

[netfilter]-ip_rcv包转发流程相关推荐

  1. NGFW中数据包转发流程

    状态检测防火墙报文处理流程 查询会话前的处理过程:基础处理 查询会话中的处理过程:转发处理,关键是会话建立 查询会话后的处理过程:安全业务处理及报文发送 了解转发流程之前,先给报文分个类 协议报文:使 ...

  2. ip数据包转发和iptables

    Linux内核数据包转发功能和iptables的关系 内核数据包转发(路由)功能是内核将从A网卡接收到的目的地址不是自身地址的ip数据包通过B网卡发送出去的功能(即路由器的功能). 使用以下命令即可开 ...

  3. Linux Kernel TCP/IP Stack — 协议栈收包处理流程

    目录 文章目录 目录 L2 NIC Controller 收包处理流程 L3-4 收包处理流程 Socket Layer 收包处理流程 参考文档 L2 NIC Controller 收包处理流程 硬件 ...

  4. vxlan 分布式网关数据包转发过程_Vxlan基础

    一.为什么需要Vxlan 普通的VLAN数量只有4096个,无法满足大规模云计算IDC的需求,而IDC为何需求那么多VLAN呢,因为目前大部分IDC内部结构主要分为两种L2,L3.L2结构里面,所有的 ...

  5. 数据中心AR G3系列路由器的数据转发流程

    数据转发流程 - AR150&160&20 LAN口间的二层数据转发直接在LSW完成. LAN口间的三层数据转发,或LAN口与WAN口间的数据转发,需要经过LSW和CPU处理. 数据转 ...

  6. C 语言网络编程 — 内核协议栈收包/发包流程

    目录 文章目录 目录 关键技术 DMA sk_buff 结构体 Net driver Rx/Tx Ring Buffer Buffer Descriptor Table NAPI 收包机制 网卡多队列 ...

  7. Ejabberd源码学习——端口监听及报文转发流程

    这篇文章是我之前在RYTong内部分享的一篇文章.上一篇文章说到Ejabberd在启动的时候会监听配置的端口,但没有详细解释监听的流程.这篇我们就来看看Ejabberd监听端口的实现逻辑,了解下一个X ...

  8. 路由个数据包转发简介

    第一章: 网络的核心是路由器, 路由器的作用就是将各个网络彼此连接起来.因此,路由器需要负责不同网络之间的数据包传送.网际通信的效率取决于路由器的性能,即取决于路由器是否能以最有效的方式转发数据包. ...

  9. linux net.ipv4.ip_forward 数据包转发

    出于安全考虑,Linux系统默认是禁止数据包转发的.所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包.这通常 ...

  10. 【Android 应用开发】Android 工程修改包名流程 ( 修改 applicationId | 修改 package | 修改 R 资源引用 | 修改 BuildConfig 引用 )

    文章目录 一. Android 工程修改包名流程 二. 修改 applicationId 三. 修改 package 包名 四. AndroidManifest.xml 清单文件组件 五. 修改 R ...

最新文章

  1. OpenCV中的尺度不变特征变换(SIFT Scale-Invariant Feature Transform)
  2. 循环队列,定义循环队列长度为10,编写初始化队列、入队、出队、求队长,实现10,20,30,40,50,60,70,80入队,10,20,30出队,56,67入队的算法功能。
  3. 二叉树前序遍历-递归与非递归
  4. Windows下VisualSVN Server的安装与配置方法(图文)
  5. 管道的另一端上无任何进程。_历史上突然消失的二位牛人,其下落无任何记载...
  6. System类的常用方法及类字段
  7. java final 方法重载_java方法重载和覆写的定义,static和final修饰符的讲解,java面试题...
  8. Swift中的延迟加载(懒加载)
  9. VBScript的参数引用
  10. 机器人视觉场景理解挑战赛
  11. linux tlhelp32.h,CreateToolhelp32Snapshot
  12. ftp ---- 本地用户登录(实例配置1:)
  13. SQL Server Reporting Services最佳做法
  14. elementos php开发,PHPWord
  15. SIP协议详解(二)
  16. python正版软件多少钱_多款正版软件 + 付费教程迎来史低价,少数派「双十一」活动全面开始...
  17. 局域网聊天程序 java MySQL_局域网聊天软件设计与实现(Linux,C++,MySQL)
  18. Windows系统通过cmd查找结束进程
  19. 虚函数指针 虚函数表
  20. GPS测量误差来源分析

热门文章

  1. 著名的光伏系统设计——pvsyst7.2中文版
  2. 2022---hgame第一周WriteUp
  3. caffe源码学习:Blobs
  4. java序列化算法透析_java--序列化及其算法透析
  5. Snappy Installer
  6. 20200804自编译openwrtx86_64固件,源码来自L大
  7. 與情分析系统,包括爬虫、文本摘要、主题分类、情感倾向性识别以及可视化...
  8. 正则表达式中的前瞻,后顾,负前瞻,负后顾
  9. CSDN如何删除上传的资源
  10. IDEA中 Maven name group、artifact、package区别