有任何理解错误的地方,还望指出
理解tcp/ip的协议栈,结合RFC和代码加深理解。
想一起阅读的小伙伴可以加我微信sheepbao-520
,加入阅读群,备注阅读linux kernel
https://github.com/sheepbao/linux_kernel_netstack_reading
- 2018-08-09 大概阅读了socket层的代码
- 2018-08-17 大概阅读了二层收发包的代码
- 2018-08-22 阅读网络设备的初始化和网络设备收发的大概流程,阅读vlan处理的注释
- 2018-08-26 对ip_output进行注释,大概看完ip发送的流程
- 2018-09-05 大概阅读邻居子系统
- 2018-09-12 阅读tcp接收数据的处理
- 2018-09-18 阅读tcp发送数据的处理(未完)
- 2018-09-26 阅读tcp发送数据的处理(未完)
- 2018-10-10 阅读tcp发送数据的处理(未完)
- 2018-10-17 阅读一点route系统
- 2018-10-24 阅读一些传输控制层的结构
- 2018-10-31 着重看了一下tcp的拥塞控制
- 2018-11-07 添加对发送窗口的理解
- 2018-11-22 阅读tcp rate算法实现
- 2018-12-15 vrf阅读
- 2018-12-26 阅读tuntap驱动的一些源码
- 2019-01-16 阅读vlan的处理和一些raw socket的处理
- 2019-03-12 阅读netfilter子系统
- 2019-04-27 阅读一些内核流控代码
每周三晚9:00-10:00
linux kernel 4.17
- 有一台能上网的电脑
- 安装zoom软件,并注册
- 装一个阅读linux源码的编译器或者ide,推荐vscode
- 下载linux 4.17的源码
线上阅读主要用来督催进度,及解决难点,需要线下自己多看多思考
- 线上用zoom共享屏幕,阅读linux kernel源码,一起讨论添加注释,尽量让每个人都理解
- 提交结果到github
- 有任何不理解的地方可以提issue,大家一起讨论
整体从上层往下层读,先读socket层,然后传输层,网络层,链路层。
- 选好一个主题,并查询资料阅读该主题的相关背景
- 大概浏览阅读相关源码
- 仔细阅读源码实现原理
- 最后再整理整个流程
- socket的实现
- udp的实现(先看udp,因为相对简单)
- tcp的实现
- ip层的实现
- 邻居子系统的实现
- ethernet层的实现
感谢以下的项目及作者,让我能够更快的理解协议栈代码
https://github.com/y123456yz/Reading-and-comprehense-linux-Kernel-network-protocol-stack