Skip to content

网络学习笔记

欢迎来到网络学习笔记部分!这里包含了我在学习网络协议和网络编程过程中的各种笔记和总结。

阅读路径(推荐顺序)

阶段目录定位适合
入门tcpip/ + osi_phy_mac协议概念与原理想理解协议本身
进阶linux_net-stack/译文集(plantegg / arthurchiao.art / lsgxeva)—— 行业专家的网络栈全景文章想看别人怎么写
实战linux_kernel/源码级别拆解(55 个子模块:Socket/TCP/UDP/Netfilter/Bridge/AF_XDP...)想看 Linux 实现
专题linux_netfilter/子系统深度(Netfilter/conntrack/nftables)想钻特定子系统
调优performance/性能与高级特性想做性能优化

三个易混目录的快速区分:

  • linux_net-stack/ = 译文(转载) —— 不是自己的笔记
  • linux_kernel/ = Linux 网络核心源码解析 —— 是自己的笔记,覆盖面广
  • linux_netfilter/ = Netfilter 专项深入 —— 是自己的笔记,但只聚焦一个子系统

Netfilter 主题在 3 处的区分

同样讲 Netfilter,仓库里有 3 个层次,从"零基础入门"到"源码逐行跟踪":

层次位置视角适合
综合(中 · 概念)linux_netfilter/netfilter_subsystem.md中文综述:Hook 点 / Verdict / 协议族 / 数据包处理流程入门 / 教学
综合(英 · 源码)linux_netfilter/net_subsystem_netfilter.md英文源码分析:含 core.c 行号 / 结构体定义 / hook 注册函数想跳源码
源码概述linux_kernel/netfilter.md在 linux_kernel/ 下的源码概述(292 行)看快速框架
单一组件core/net_subsystem_conntrack.mdConntrack(连接跟踪)单一组件深入(817 行)钻 conntrack 实现

建议阅读顺序:概念源码概述conntrack 单一组件,需要时再跳 core.c 行号。

主题交叉引用索引

同一个主题在 network/ 下可能有多个文件,下面是几个跨子目录主题的快速定位。

TCP 主题(11 个文件)

层次位置视角
协议概念tcpip/tcp.mdTCP 协议详解(中文概念)
TCP 选项tcpip/tcp-sack-dsack.mdSACK / DSACK 实现
调试实战tcpip/tcp-troubleshooting-plantegg.md疑难问题汇总(plantegg 译文)
调试实战tcpip/tcp-self-connection-plantegg.md自己连自己(plantegg 译文)
子系统概述tcpip/net_subsystem_tcpip.mdTCP/IP 子系统(英)
内核实现linux_kernel/ipv4_tcp.mdIPv4 TCP 实现(中,概念)
内核实现linux_kernel/net_tcp_ip.mdTCP/IP 协议栈源码分析(中)
内核实现linux_kernel/ipv6_tcp_udp.mdIPv6 TCP/UDP
Netfilterlinux_kernel/netfilter_tcpmss.mdxt_TCPMSS
Netfilterlinux_netfilter/netfilter_tcp_deep_dive.mdTCP 深度源码分析(第二轮)
性能performance/tcp-bypass-notes.mdTCP Bypass 绕过方案
工具tools/tcpdump.mdtcpdump 使用指南

Socket 主题(5 个文件)

层次位置视角
子系统概述core/net_subsystem_socket.mdBSD Socket Layer Analysis(英,1606 行)
概念linux_kernel/socket.mdSocket 层 - 通用套接字层(中,510 行)
系统调用linux_kernel/socket_syscall.mdSocket 系统调用(279 行)
源码分析linux_kernel/net_socket_core.mdSocket Core 源码分析(780 行)
特定类型linux_kernel/unix_socket.mdUnix Domain Socket(268 行)

core/net_subsystem_socket.mdlinux_kernel/net_socket_core.md 内容有部分重叠但视角不同(英 vs 中 / 侧重不同结构体),不需要合并。

路由主题(6 个文件)

层次位置视角
子系统概述core/net_subsystem_routing.mdPacket Routing + Neighbor(英,976 行)
源码分析linux_kernel/net_routing.mdIPv4 路由子系统分析(中,1092 行)
数据结构linux_kernel/routing.mddst_entry 和路由缓存(402 行)
概述linux_kernel/ipv4_routing.mdIPv4 路由子系统(191 行)
数据结构linux_kernel/ipv4_fib.mdFIB 路由结构(235 行)
IPv6linux_kernel/ipv6_routing.mdIPv6 路由子系统(263 行)

IPv6 主题(5 个文件,都在 linux_kernel/

子主题位置视角
协议栈ipv6_core.mdIPv6 协议栈核心
地址管理ipv6_addrconf.mdSLAAC / DAD / 路由器发现
邻居发现ipv6_ndisc.mdNDisc(地址解析 / 重定向)
路由ipv6_routing.mdIPv6 路由子系统
传输层ipv6_tcp_udp.mdTCP/UDP over IPv6

目录结构

TCP/IP 协议栈

Linux Netfilter

学习目标

通过系统学习网络协议栈和 Linux 网络子系统,掌握:

  1. 协议理解 - 深入理解 TCP/IP 协议栈的工作原理
  2. 内核机制 - 掌握 Linux 网络子系统的核心机制
  3. 性能优化 - 学习网络性能调优和问题排查
  4. 实际应用 - 将理论知识应用到实际网络编程中

基于 VitePress 构建