《深入理解Linux网络技术内幕》配套学习大纲 + 源码Demo + 进阶实战实例

书籍核心定位

全书围绕Linux内核网络协议栈完整实现 ,从数据包接收→协议层处理→转发→发送全链路拆解,覆盖网卡驱动、sk_buff、NAPI、TCP/IP四层协议、路由、Netfilter、套接字、拥塞控制等核心源码逻辑。


整体学习总纲

学习路线

网络硬件层 → 内核数据包载体(sk_buff) → 网卡收发包机制(NAPI/中断) → 链路层 → IP层 → 路由子系统 → 传输层(TCP/UDP) → 套接字层 → 防火墙Netfilter → 高级网络特性 → 性能调优 + 嵌入式工程落地


第一部分:Linux网络整体架构与基础环境

第1章:Linux网络体系整体架构

核心知识点

  1. Linux网络五层架构划分:硬件网卡→设备层→链路层→网络层→传输层→应用层
  2. 数据包完整流转路径:
    网线物理帧 → 网卡DMA → sk_buff → NAPI收包 → 内核协议栈逐层解析 → 用户态Socket
  3. 内核网络核心子系统划分
    • 网络设备子系统 net/core/dev.c
    • 数据包管理子系统 skbuff.c
    • IPv4协议栈 net/ipv4/
    • 路由子系统 fib
    • Netfilter过滤子系统
    • 套接字管理子系统

配套实操命令Demo

bash 复制代码
# 查看本机网络协议栈运行状态
cat /proc/net/sockstat
# 查看所有网络协议注册情况
cat /proc/net/protocols
# 查看本机路由表(内核路由)
route -n
ip route show

进阶实例

  1. 绘制RK3588平台千兆网卡数据包全流程时序图
  2. 区分协议栈接收路径转发路径底层差异

第二部分:网络设备层核心(书籍重点·底层根基)

第2章:网络设备net_device结构体详解

核心知识点

  1. struct net_device 完整成员解析:硬件信息、MAC、队列、操作集、状态标志
  2. 网卡状态机:DOWN→UP→RUNNING→NO-CARRIER
  3. 网卡发送队列/接收队列原理
  4. 虚拟网卡与物理网卡内核统一抽象设计

基础Demo:自定义虚拟网卡(复用你已有工程)

c 复制代码
#include <linux/module.h>
#include <linux/netdevice.h>
static struct net_device *vdev;
static netdev_tx_t demo_xmit(struct sk_buff *skb,struct net_device *dev)
{
    pr_info("内核设备层发送数据包 长度:%d\n",skb->len);
    dev_kfree_skb(skb);
    return NETDEV_TX_OK;
}
static const struct net_device_ops dev_ops={
    .ndo_start_xmit = demo_xmit,
};
static int __init dev_demo_init(void)
{
    vdev = alloc_netdev(0,"testnic%d",NET_NAME_UNKNOWN,ether_setup);
    vdev->netdev_ops = &dev_ops;
    register_netdev(vdev);
    return 0;
}
static void __exit dev_demo_exit(void)
{
    unregister_netdev(vdev);free_netdev(vdev);
}
module_init(dev_demo_init);
module_exit(dev_demo_exit);
MODULE_LICENSE("GPL");

讲解 :所有物理网卡(GMAC)、虚拟网卡(tap/veth)在内核全部统一使用net_device抽象,上层协议栈无感知差异。

进阶实例

  1. 读取net_device内部统计字段,实现内核态网卡流量统计
  2. 编写内核模块动态修改网卡MTU、MAC地址、速率模式

第3章:sk_buff数据包缓冲区(全书重中之重)

核心知识点

  1. sk_buff内存布局:head/data/tail/end 四区划分
  2. 头部预留、数据追加、数据剥离、线性化、分片重组
  3. skb内存池分配机制、预分配缓存优化
  4. 共享skb与独立skb拷贝区别:skb_clone / skb_copy

基础Demo:skb标准操作(已配套工程)

实现预留协议头、填充数据、头部删减、释放流程

进阶实例

  1. 内核实现IP数据包自定义篡改(修改源IP/目的IP)
  2. 实现大报文skb_segment分片与skb_coalesce合并
  3. 基于skb实现内核层抓包过滤系统

第4章:网卡收包机制:中断 + NAPI机制

核心知识点

  1. 传统中断收包弊端:中断风暴、CPU占用高
  2. NAPI混合收包完整状态机
  3. 收包预算budget、轮询权重、繁忙轮询机制
  4. RK3588 GMAC多队列RSS多核负载均衡原理

基础Demo

精简NAPI注册+轮询收包标准内核代码

进阶实例

  1. 手动关闭硬件中断,纯NAPI轮询收包压测
  2. 网络中断CPU亲和性绑定,把收包线程固定到大核A76
  3. 高并发场景下NAPI参数调优实战

第5章:MDIO总线与PHY芯片驱动

核心知识点

  1. MDIO总线读写PHY寄存器原理
  2. 以太网自动协商、速率双工协商底层流程
  3. 链路状态检测、断线重连内核实现
  4. RGMII/RMII时序延迟配置原理

实操Demo

bash 复制代码
# 读取PHY寄存器
mdio-tool eth0 read 0 1
# 强制设置网卡千兆全双工
ethtool -s eth0 speed 1000 duplex full autoneg off

进阶实例

  1. 自定义非标工业PHY驱动开发
  2. 内核实时监听网线插拔事件并上报状态

第三部分:链路层与ARP协议

第6章:二层以太网帧处理

核心知识点

  1. 以太网帧头部格式解析
  2. 广播帧、组播帧、单播帧内核分发逻辑
  3. VLAN标签内核剥离与硬件加速原理

进阶实例

  1. 内核模块拦截二层以太网帧实现二层数据转发
  2. 基于VLAN实现嵌入式多网段隔离组网

第7章:ARP地址解析协议

核心知识点

  1. ARP请求/应答内核处理流程
  2. ARP缓存表老化、更新、失效机制
  3. 免费ARP、ARP代理底层实现
  4. ARP攻击内核防护原理

实操查看

bash 复制代码
# 查看内核ARP缓存表
cat /proc/net/arp

进阶实例

  1. 编写内核模块伪造ARP应答实现内网ARP欺骗实验
  2. 内核态清理异常ARP缓存,解决静态IP不通故障

第四部分:网络层 IPv4 协议栈(书籍核心)

第8章:IP头部解析与数据包分片

核心知识点

  1. IPv4头部12个字段完整内核解析逻辑
  2. 入站IP校验和校验流程
  3. 大数据包IP分片、接收重组完整流程
  4. 不同协议号分发:ICMP/TCP/UDP/IGMP

基础Demo

内核模块解析skb内IP头部,打印源目IP、协议类型、TTL

进阶实例

  1. 内核修改IP报文TTL值实现路由跳数伪装
  2. 手动控制IP分片大小,优化嵌入式窄带宽传输

第9章:路由子系统FIB与路由查找

核心知识点

  1. 内核路由表结构:静态路由/动态路由
  2. 最长前缀匹配路由查找算法
  3. 路由缓存、路由策略、默认路由优先级
  4. 本机路由、直连路由、网关路由区分

实操命令

bash 复制代码
# 查看内核路由缓存
cat /proc/net/route
# 追踪内核路由走向
ip route get 114.114.114.114

进阶实例

  1. 内核态动态添加/删除路由条目
  2. 实现双网卡多路由策略分流(内网走eth0,外网走eth1)

第10章:ICMP网络控制报文协议

核心知识点

  1. Ping请求/应答内核完整处理流程
  2. 超时、不可达、重定向ICMP报文处理
  3. ICMP限速、防洪水攻击内核机制

进阶实例

  1. 内核拦截禁止本机被ping通
  2. 自定义ICMP错误报文回复

第五部分:传输层 TCP/UDP 协议栈(全书最难)

第11章:UDP协议源码实现

核心知识点

  1. UDP无连接特性内核实现
  2. UDP头部校验、端口分发、队列缓冲
  3. UDP接收缓冲区/发送缓冲区内核参数原理
  4. UDP洪水攻击原理与内核防御

基础Demo

用户态UDP服务端+客户端通信Demo

进阶实例

  1. 内核态批量加速UDP报文收发
  2. 关闭UDP校验和实现高速数据透传

第12章:TCP协议完整内核实现(重中之重)

核心知识点

  1. TCP四次握手建立连接底层流程
  2. TCP滑动窗口、拥塞窗口、接收窗口原理
  3. 超时重传、快速重传、SACK选择确认
  4. TCP状态机全状态流转:LISTEN/SYN_SENT/ESTABLISHED/TIME_WAIT
  5. 内核拥塞控制算法:CUBIC / BBR / DCTCP源码逻辑
  6. TCP粘包、拆包内核底层成因

基础Demo

标准Socket TCP服务端客户端通信实例

进阶实例

  1. 内核开启/关闭TCP Fast Open快速连接
  2. 修改内核TCP参数优化高延迟嵌入式网络
  3. 实战切换BBR拥塞控制并压测对比吞吐
  4. 内核模块劫持TCP报文实现内容过滤

第13章:套接字Socket层实现

核心知识点

  1. Socket文件描述符在内核的抽象实现
  2. 阻塞/非阻塞Socket内核等待队列原理
  3. IO多路复用select/poll/epoll内核底层机制
  4. 原始套接字、数据报套接字、流式套接字差异

进阶实例

  1. 嵌入式高并发epoll服务端编写
  2. AF_PACKET原始套接字抓取二层三层裸数据包

第六部分:Netfilter 防火墙与网络安全

第14章:Netfilter五大钩子完整原理

核心知识点

  1. PRE_ROUTING / LOCAL_IN / FORWARD / LOCAL_OUT / POST_ROUTING五大挂载点
  2. 数据包在内核经过钩子的完整顺序
  3. iptables/nftables底层依托Netfilter实现原理
  4. 数据包丢弃、放行、修改、转发、地址转换原理

基础Demo

IP黑名单拦截内核模块(你已完成工程)

进阶实例

  1. 内核态端口流量限速模块
  2. 实现内核级端口映射NAT转发
  3. 恶意畸形数据包内核清洗过滤

第七部分:高级网络特性

第15章:虚拟网络技术

核心知识点

  1. tun/tap虚拟设备原理
  2. veth成对虚拟网卡通信机制
  3. macvlan/ipvlan物理网卡多IP虚拟化
  4. 内核网桥bridge转发原理

实操Demo

bash 复制代码
# 创建macvlan虚拟网卡
ip link add link eth0 macv0 type macvlan mode bridge
ifconfig macv0 192.168.2.20 up

进阶实例

  1. 基于tun设备实现简易VPN隧道通信
  2. RK3588搭建嵌入式极简网桥局域网

第16章:网卡绑定Bonding与网络冗余

核心知识点

  1. Bonding七种工作模式内核实现差异
  2. 主备模式热切换、负载聚合模式带宽叠加原理
  3. 链路故障检测内核机制

进阶实例

工业设备双网口自动热备份工程实战

第17章:流量控制与QoS内核实现

核心知识点

  1. 内核TC流量调度队列原理
  2. 优先级队列、限流、整形、抖动消除
  3. 工业以太网QoS报文优先级映射

进阶实例

嵌入式网关按端口划分带宽优先级


第八部分:嵌入式Linux网络性能调优(工程落地)

第18章:内核网络全局参数调优

核心知识点

  1. 套接字缓冲区、连接数、超时时间全套参数原理
  2. 网络软中断调度优化
  3. 网卡队列、NAPI、RSS极限性能优化
  4. RK3588大小核网络任务调度优化策略

配套最优调优配置(可直接写入sysctl)

conf 复制代码
shturl.cc/YjxvAKkw = 4096
shturl.cc/JgFKeFi = 16777216
shturl.cc/8hHfHki = 16777216
shturl.cc/vXBokHIGtd6 = 1
shturl.cc/iP6mhN06PtBQWp = 10
shturl.cc/HgSU0h8n9uwFe1xg7QTJd = bbr

进阶实战

  1. iperf3千兆满速压测+性能瓶颈定位
  2. 高并发短连接服务内核最优参数调优

第九部分:书籍学习配套实战项目(由浅入深)

入门级项目

  1. sk_buff数据包读写与拷贝实验
  2. 虚拟网卡驱动编写与通信测试
  3. 简易ARP状态查看工具

进阶级项目

  1. Netfilter内核防火墙黑白名单系统
  2. 内核态UDP/TCP流量限速系统
  3. 基于NAPI优化千兆网卡收包性能

企业级嵌入式实战项目

  1. RK3588工业多协议网关(TCP/UDP/ModbusTCP转发)
  2. 双网卡冗余热备份网络系统
  3. 嵌入式轻量级内核VPN隧道
  4. 基于原始套接字的网络抓包分析工具
  5. 千兆零拷贝高速数据转发服务

第十部分:书籍学习高效研读方法

  1. 先抓链路+设备层:搞定sk_buff、NAPI、net_device,打通底层
  2. 再啃IP路由层:理解数据包转发核心逻辑
  3. 攻坚TCP传输层:状态机、拥塞控制是全书最难重点
  4. 最后学习安全与虚拟化:Netfilter、虚拟网络做工程落地
  5. 源码对照 :看书同时对照 Linux7.0.3 内核对应.c文件逐行研读
  6. 边学边写:每章节写完对应Demo内核模块/应用层代码

附赠:书籍对应内核源码快速索引

书籍章节内容 内核源码路径
网络设备 net/core/dev.c
sk_buff管理 net/core/skbuff.c
NAPI机制 net/core/dev.c / include/linux/napi.h
IPv4协议 net/ipv4/ip_input.c ip_output.c
路由系统 net/ipv4/fib_frontend.c
TCP协议 net/ipv4/tcp_*.c
Netfilter net/netfilter/
网桥 net/bridge/
Bonding drivers/net/bonding/

后续可提供

  1. 本书每一章课后练习题+答案
  2. 全套配套Demo源码打包(应用层+内核层)
  3. TCP协议栈逐行源码深度解析文档
  4. 结合RK3588硬件的书本知识点硬件落地教程
相关推荐
楼田莉子1 小时前
C++17新特性:结构化绑定/inline变量/if相关的变化
c++·后端·学习
青梅橘子皮1 小时前
Linux---开发工具(2)(makefile、进度条、git、gdb)
linux·运维·服务器
AI算法沐枫1 小时前
大一学生如何入门机器学习,深度学习,学习顺序如何?
人工智能·python·深度学习·学习·线性代数·算法·机器学习
剑神一笑1 小时前
Linux less 命令深度解析:从源码看分页器的设计智慧
linux·运维·less
IT大白鼠2 小时前
Dirty Frag漏洞深度分析:Linux内核页缓存污染漏洞的技术原理与安全防护
linux·安全·dirty frag漏洞
他们叫我阿冠2 小时前
实习前自我培训-Day2学习
学习
wuxinyan1232 小时前
工业级大模型学习之路020:LangChain零基础入门教程(第三篇):提示词工程与提示模板系统
人工智能·python·学习·langchain
李白你好2 小时前
Linux 本地提权工具支持Linux 内核和 Polkit 漏洞
linux·运维·服务器
陳10302 小时前
Linux:System V IPC
linux·运维·服务器