一、(20211031)Linux内核网络学习之路

820 阅读3分钟

一、 学习动机

  • 本科网络工程专业,接触了基本的传统分布式互联网络,但是感觉对于底层网络协议栈的理解几乎为零,对于路由器、交换机等网络设备是如何实现路由交换功能的存在疑惑,是硬件模块?还是软件代码?
  • 云计算已经发展的非常成熟了,容器、虚拟机技术在如今非常火热,但是物理主机中的容器之间的网络是如何构建的?我对此非常有兴趣,是通过网络功能虚拟化(NFV)或者软件定义网络(SDN)吗?
  • 虽然我对上面这些问题仍然存在非常多的疑问,但是似乎网络上对于这些问题的描述仍很难寻找到令人满意的答案,目前而言,我觉得从Linux内核网络入手,慢慢去探究上面的问题,可能是对我而言相对最现实的方案

二、 学习资源

书籍

  1. 《深入理解Linux网络技术内幕》

    • 没有选择英文版的原因是,学习过程中更应该注重效率,英文版读起来可能比较吃力,对于中文版阅读不太通顺的地方,可以翻阅英文版的部分。

    • 个人觉得可行的阅读方案:模块化的阅读,针对自己感兴趣的部分,选择性去阅读,在初期没有形成基本认知的技术上,一字一句去扣很会低效。同时对于某个模块的阅读也不必太过于较真,比如具体代码用的宏、每个函数的参数等,我的基本思路是大概形成一个完整的认知是主要目的。

      —— 此处的思路借鉴于b站King老师的视频

  2. 《Linux内核源码剖析 TCPIP实现》.(樊东东)

    • 此书为中文作者,基本思路于上书相似,有些部分看上书不太清楚的地方可以参考。
  3. 《精通Linux内核网络》

    • 此书网上推荐也较多,但是目前尚未翻阅。

视频

  • B站:没有非常好的视频,有的视频感觉质量也一般
  • YouTube : 也没有找到非常满意的视频
    • The Linux Channel ,这个用户上传的视频质量貌似还不错,对应网站好像也介绍了很多关于Linux内核的内容,但是视频博主好像是印度人,该说不说还是有点口音,而且不带字幕,对我来说有点吃力,甚至谷歌浏览器实时字幕识别都识别不出,链接如下 www.youtube.com/watch?v=RN1…
结论

总体来说,目前没有看到非常合适的视频,可能对于偏底层的理论学习的话,还是需要自己钻研,通过相关书籍结合网络博客资源以及阅读源码的方式来进步。

学习方式
  • 主体通过阅读上文书籍对应的某些模块,形成基本认识
  • 通过网络搜索相关博客或视频介绍,对该模块形成进一步的认识
  • 针对尚存疑虑的地方,阅读相应的源码,进行进一步分析
  • 以上步骤完成之后,通过笔记方式加深自己的认识,同时便于之后的反思与review

三、学习环境

  • WSL : Ubuntu 20.04
  • IDE : VScode
  • 神奇 : global + vscode对应插件,实现跳转功能

四、学习目标

总体: 期望在半年的时间内形成一个比较全面的认识
小目标 : 争取每天都给抽出一定时间进行学习,一周能输出三篇笔记