Git Product home page Git Product logo

zboya / linux_kernel_netstack_reading Goto Github PK

View Code? Open in Web Editor NEW
67.0 8.0 12.0 60.97 MB

linux kernel-4.17 协议栈源码阅读, reading linux kernel 4.17 netstack, once one has started to experience the rich insights that can be gained from the kernel sources, it is hard to escape the fascination of Linux

Makefile 0.15% C 97.49% C++ 1.79% Shell 0.01% Objective-C 0.57% Awk 0.01% Assembly 0.01%
linux-kernel netstack tcpip source-code bbr linux

linux_kernel_netstack_reading's Introduction

linux内核协议栈源码阅读

有任何理解错误的地方,还望指出

linux官网

目标

理解tcp/ip的协议栈,结合RFC和代码加深理解。

微信群

想一起阅读的小伙伴可以加我微信sheepbao-520,加入阅读群,备注阅读linux kernel

github地址

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版本

linux kernel 4.17

准备工作

  • 有一台能上网的电脑
  • 安装zoom软件,并注册
  • 装一个阅读linux源码的编译器或者ide,推荐vscode
  • 下载linux 4.17的源码

可以先阅读的资料

活动步骤

线上阅读主要用来督催进度,及解决难点,需要线下自己多看多思考

  • 线上用zoom共享屏幕,阅读linux kernel源码,一起讨论添加注释,尽量让每个人都理解
  • 提交结果到github
  • 有任何不理解的地方可以提issue,大家一起讨论

阅读的方式

整体从上层往下层读,先读socket层,然后传输层,网络层,链路层。

  1. 选好一个主题,并查询资料阅读该主题的相关背景
  2. 大概浏览阅读相关源码
  3. 仔细阅读源码实现原理
  4. 最后再整理整个流程

暂定的主题

  1. socket的实现
  2. udp的实现(先看udp,因为相对简单)
  3. tcp的实现
  4. ip层的实现
  5. 邻居子系统的实现
  6. ethernet层的实现

相似的项目

感谢以下的项目及作者,让我能够更快的理解协议栈代码
https://github.com/y123456yz/Reading-and-comprehense-linux-Kernel-network-protocol-stack

linux_kernel_netstack_reading's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.