文章总结: 该文档宣布大型专栏《Linux网络编程从应用层到内核实现源码详解》已全部更新完成,共涵盖39篇技术文章,内容从socket创建、sk_buff内存管理、TCP协议实现到epoll事件驱动等内核网络核心主题,为开发者提供了从应用层到底层内核的完整源码级解析,具有较高技术参考价值。 综合评分: 60 文章分类: 其他
Linux内核网络 专栏更新完成
原创
张小方 张小方
CppGuide
2026年9月15日 11:36 上海
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
大型专栏《Linux网络编程从应用层到内核实现源码详解》已经全部更新完了。
大型专栏:Linux网络编程从应用层到内核实现源码详解
第 02 篇 · 工具箱:读源码的工具,和看内核的工具
第 03 篇 · 三层派发总纲:socket 函数如何找到它的内核实现
第 04 篇 · 读内核网络代码的最小 C 知识
第 05 篇 · 谁在和你抢同一个 socket:lock_sock() 到底锁了什么
第 06 篇 · sk_buff(上):一块内存如何同时是帧、是包、是段
第 07 篇 · sk_buff(下):非线性区、克隆与引用计数
第 08 篇 · skb 的分配与回收:一个包的内存从哪来,又还到哪去
第 09 篇 · struct socket 与 struct sock:为什么一个连接要两个结构体
第 10 篇 · sk 的队列与内存记账:SO_SNDBUF 到底限制了什么
第 11 篇 · net_device 与多队列模型:网卡在内核里长什么样
第 12 篇 · network namespace:struct net 为什么无处不在
第 13 篇 · socket() :一个 fd 的诞生
第 14 篇 · bind():端口哈希表的秘密
第 15 篇 · listen():两个队列的真相
第 16 篇 · connect():三次握手的发起端
第 17 篇 · accept():从全连接队列取一个 sk
第 18 篇 · 一次连接的完整生命周期:从第一个 SYN 到最后一个 FIN
第 19 篇 · send 家族:msghdr 与 iov_iter
第 20 篇 · recv 家族:从接收队列拷贝出来
第 21 篇 · 阻塞与非阻塞:同一段代码,只差一个 timeo
第 22 篇 · setsockopt 的一生:level 派发与 sockptr_t
第 23 篇 · 选项 vs sysctl vs cgroup:谁说了算
第 24 篇 · cmsg:被忽略的另一半接口
第 25 篇 · select/poll/epoll:唤醒链是怎么接起来的
第 26 篇 · epoll 内部:一棵红黑树、一条就绪链、一次 ep_poll()
第 27 篇 · close() 与 shutdown():语义差异的内核根源
第 28 篇 · sendfile/splice/mmap:绕开用户态缓冲区
第 29 篇 · 同步与异步:SIGIO 那一代,和 io_uring 那一代
第 30 篇 · tcp_sendmsg_locked:用户数据如何变成 skb
第 31 篇 · tcp_push 与 Nagle:数据什么时候真的发出去
第 32 篇 · tcp_transmit_skb:TCP 头是怎么拼出来的
第 33 篇 · 八个标志位,各自由谁置上
第 34 篇 · 滑动窗口:四个序号,两个窗口
第 35 篇 · TSO / GSO:一个 skb 怎么变成多个报文
第 36 篇 · ip_queue_xmit:路由查找与 IP 头组装
第 37 篇 · 拥塞控制框架:tcp_congestion_ops 的回调表
第 38 篇 · 重传定时器与 RTO:超时时间怎么算出来,超时之后做什么
第 39 篇 · 快速重传与尾部丢包探测:不等 RTO 就判出丢包的两条路
第 40 篇 · RACK:按发送时间判定丢包
第 41 篇 · undo:判错之后怎么撤销这次拥塞窗口下调
第 42 篇 · 邻居子系统、ARP 与 __dev_queue_xmit
第 43 篇 · 从硬中断到软中断:napi_schedule
第 44 篇 · net_rx_action:软中断主循环与 budget
第 45 篇 · threaded NAPI、napi_config 与 busy_poll
第 46 篇 · 驱动 poll 内部:从 DMA 描述符环到 skb
第 47 篇 · GRO:把小报文粘成大报文
第 48 篇 · __netif_receive_skb_core:packet_type 分发与 RPS/RFS
第 49 篇 · ip_rcv到 ip_local_deliver:IP 层收包的三道关
第 50 篇 ·tcp_v4_do_rcv:socket 查找、backlog 与 prequeue 的消亡
第 51 篇 · tcp_rcv_established:快速路径为什么快
第 52 篇 · tcp_ack 与 SACK 处理:收到一个 ACK,发送方更新哪些状态
第 53 篇 · 乱序队列:一棵红黑树,进树、出树与内存不够时先丢谁
第 54 篇 · 延迟 ACK、QUICKACK 与 ACK 压缩
第 55 篇 · 状态机:握手、挥手、TIME_WAIT 与保活
第 56 篇 · CUBIC 与 BBR 源码对读
第 57 篇 · 接收窗口与内存自动调优
第 58 篇 · 路由子系统与 dst_entry 的生命周期
第 59 篇 · FIB trie、策略路由与 nexthop 对象
第 60 篇 · netfilter:hook 点如何嵌进收发路径
第 61 篇 · TC 与 qdisc:pfifo_fast、fq、fq_codel
第 62 篇 · 桥接与 VLAN:帧进桥之后怎么查表转发,VLAN 标签在哪一步加减
第 63 篇 · 隧道与封装:一个帧被 VXLAN 套上 50 字节,再原样拆开的全程
第 64 篇 · XDP:在 skb 诞生之前拦截
第 65 篇 · eBPF 网络钩子全景
第 66 篇 · 硬件卸载:NETIF_F_*如何改变代码路径
第 67 篇 · BIG TCP:64KB 这道上限卡在哪,内核用什么办法绕过去
第 68 篇 · devmem TCP:数据直落 GPU 内存
第 69 篇 · io_uring 零拷贝收发
第 70 篇 · MPTCP 与 PSP:新协议如何嵌进旧框架
第 71 篇 · dropreason 与观测工具箱:内核怎么给出丢包原因码,你又怎么读到它
第 72 篇 · 性能排查实战:四个现场案例,以及怎么把这套方法用到你自己的内核上
专栏总结
配一张思维导图:
购买了本专栏的同学可以加微信cppxiaofang进内核源码交流群。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:CppGuide 张小方 张小方《Linux内核网络 专栏更新完成》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论