当前位置: 首页 > news >正文

Linux wlan网络协议栈-路由框架详解

明确文章具体内容框架流程

在这里插入图片描述

明确文章具体内容所属框架位置

在这里插入图片描述
代码位置
在这里插入图片描述
基础流程图
在这里插入图片描述
ip_rcv_finish为Netfilter PRE_ROUTING 处理后的回调函数,负责路由查找和后续调度
根据PRE_ROUTING钩子点的作用,我们也可以得来ip_rcv_finish和PRE_ROUTING的关系

  1. 函数参数解析
    struct sk_buff *skb // 数据包缓冲区
    struct net_device *dev // 接收数据的网络设备
    struct packet_type *pt // 包类型(对于IP协议固定)
    struct net_device *orig_dev // 原始设备(用于桥接等场景)

  2. ip_rcv_core 的作用:确保IP包的基本合法性
    检查数据包长度和完整性
    验证IP头版本和校验和
    处理IP选项
    如果处理失败返回NULL

  3. ip_rcv_finish:它决定了每个数据包的最终命运:是发给本机、转发出去、还是丢弃
    在这里插入图片描述

  4. 是一个函数指针,它的值由路由查找的结果决定!
    在这里插入图片描述

  5. 路由查找
    在这里插入图片描述

  6. 这个函数是核心,它根据数据包的目标IP地址决定数据包的命运
    在这里插入图片描述
    检查目标地址是否是IPv4组播地址
    在这里插入图片描述
    在这里插入图片描述

  7. 单播数据包的常规处理,走常规的慢速路径
    在这里插入图片描述
    在这里插入图片描述
    基础函数内容:
    1)初始化和基本检查
    2)火星地址检测和过滤
    3)路由表查找 (FIB)
    4)根据路由类型处理
    5)创建路由缓存条目

  8. 基础框架流程
    在这里插入图片描述

  9. 源地址不能是组播或广播
    在这里插入图片描述
    在这里插入图片描述
    地址理解:
    在这里插入图片描述
    组播地址范围:224.0.0.0 到 239.255.255.255
    在这里插入图片描述

  10. 检测有限广播地址的函数

#define INADDR_BROADCAST  ((unsigned long int) 0xffffffff)
static inline bool ipv4_is_lbcast(__be32 addr)
{/* limited broadcast */return addr == htonl(INADDR_BROADCAST);
}

有限广播地址的概念
1)有限广播地址:255.255.255.255
2)作用范围:只在本地网络段内广播,不会被路由器转发
3)用途:用于在不知道网络地址的情况下向本地网络所有主机发送数据

  1. 环回地址路由策略检查
    在这里插入图片描述
    环回地址的IP范围:127.0.0.0/8 (127.0.0.1 到 127.255.255.254)
    在这里插入图片描述

  2. 核心路由查找
    在这里插入图片描述
    在这里插入图片描述
    基础流程框架
    在这里插入图片描述

  3. 路由类型处理
    在这里插入图片描述
    包含:
    1)广播包处理
    2)本机的包
    3)是否允许转发
    4)其他类型(组播、黑洞等)
    在这里插入图片描述
    fib_validate_source 的作用:
    1)反向路径检查(防止IP欺骗)
    2)验证源地址是否来自合理的网络接口
    3)检查是否允许从该源地址接收数据
    下面举例合法的应用场景:
    在这里插入图片描述
    如下是非法的广播用例:
    在这里插入图片描述

  4. local_input
    在这里插入图片描述
    local_input内容:
    1)路由缓存查找(快速路径)
    2)创建新路由条目(慢速路径)
    3)路由缓存更新
    4)数据包目标设置

疑问?

  1. 如果是local_input的包,是哪里更改了input函数的指针呢?
    在这里插入图片描述
    将dst的指针指向了ip_local_deliver
    那走分路的make_route转发包呢?
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 为什么需要环回地址检查?
    出于安全原因
    1)防止地址欺骗:环回地址不应该从外部接口进入
    2)协议合规:遵循TCP/IP协议规范
    3)网络隔离:环回流量应该只在本地主机内循环

内容补充

  1. 组播地址类型区分
    本地组播地址 vs 全局组播地址
    在这里插入图片描述
  2. 有限广播地址的
    1)有限广播地址(Limited Broadcast Address):255.255.255.255
    2)作用范围:只在本地网络段内广播,不会被路由器转发
    3)用途:用于在不知道网络地址的情况下向本地网络所有主机发送数据
    实际网络中的应用场景
    1)DHCP客户端发现: 客户端发送目标为255.255.255.255的DHCP发现包
    2)网络配置: 当主机不知道网络地址时的本地通信
    3)网络诊断: 向本地网络所有主机发送诊断信息
    在这里插入图片描述
http://www.dtcms.com/a/477860.html

相关文章:

  • 廊坊安次区网站建设公司上海高登联合建设网站
  • 凡科网站手机投票怎么做wordpress vr主题
  • 【ElasticSearch】text 和 keyword 类型区分
  • vue3的组件通信方式汇总
  • PortSwigger靶场之将 XSS 存储到onclick带有尖括号和双引号 HTML 编码以及单引号和反斜杠转义的事件中通关秘籍
  • 哪些方法可以建设网站后台网站模板下载
  • 根据PID获取K8S-Pod名称-反之POD名称获取PID
  • 做网站三年3万块钱论坛搭建一键
  • C#进阶技巧掌握外部进程的启动与控制(一):进程基础与基本操作
  • 昂瑞微:实现精准突破,攻坚射频“卡脖子”难题
  • 延安做网站的公司电话如何用云服务器搭建个人网站
  • shellSort
  • idea一直卡在build不动(Writing class)
  • LSTM自然语言处理情感分析项目(四)整合调用各类与方法形成主程序
  • MySQL为什么选择B+tree索引作为核心索引结构?
  • 在 Windows 11 上使用 JetBrains Rider 2025.2 创建 Avalonia 项目完整指南
  • 隐私保护与数据安全合规(十)
  • 【工业场景】用YOLOv8实现人员打电话识别
  • 丽水建设网站制作几年前我为客户建设网站
  • 主线程 MainLooper 和一般 Looper 的异同?
  • 【论文精读】STAR:基于文本到视频模型的空间-时间增强真实世界视频超分
  • 建设银行的积分网站百度渠道开户
  • 万网 速成网站嘉定品牌网站建设
  • Ruby on Rails 从0 开始入门到进阶到高级 - 10分钟速通版
  • Windows Docker Desktop占用C盘空间过大解决办法集合
  • 平面的方程公式
  • 2025年“羊城杯”网络安全大赛 线上初赛 (WriteUp)
  • 网络安全概念之网闸防火墙AI版
  • 学习笔记2: 深度学习之logistic回归梯度下降
  • 网络安全等级测评师能力评估样卷及答案