Linux tcp/ip 网路协议栈学习-00 前言
目录
Linux tcp/ip 网路协议栈学习-00 前言
(1)预备知识
(2)前置知识
(3)学习目标
(4)总结
(1)预备知识
好工具事半功倍,做任何事情都需要有方法和工具,同样,阅读 Linux 内核源码也是如此。由于当前内核源码非常庞大,学习上,不能一上来全面铺开,而是要按照模块一个一个去攻克,例如内存管理,网络通信模块,安全模块等等。
工作多年一直想深入底层学习一些底层的知识,"知其然知其所以然"。好在偶然阅读到这本书《Linux 内核源码剖析-TCP/IP 实现》介绍的方法所以想静下心来学习学习内核网络子系统,这一模块。当前,自己还不知道能不能坚持下去,读完这套(上下册的经典书籍)。
本专栏目的就是指导和帮助读者学习Linux 内核网络模块,结合当前各种网络工具,例如kgdb,wireshark,tcpdump工具去分析,参照《Linux 内核源码剖析-TCP/IP 实现》章节,每一节去学习,记录实验过程。
要想比较顺利地阅读内核网络源码,能够基本上对Linux源码的知识背景有一定的了
解。学习完后,可以学习内核其他模块的内容。能做到信手拈来。本专栏,将会带在大家将厚书读博,去粗取精。教会你快速掌握linux 网路
模块工作原理。
(2)前置知识
对于内核网络码来讲,基本要求如下。
- 熟悉C语言,了解GNU对标准C的扩展;
- 熟悉GCC编译器以及使用方法;
- 熟悉操作系统的基本知识;
- 熟悉Linux内核通用技术:包括内存管理、下半部、锁等;
- 熟悉TCP/IP的原理
本专栏基于老版本的sdk ,为啥选择老版本的?因为这块资源多,书籍介绍多(《Linux 内核源码剖析-TCP/IP 实现》书籍使用的版本),包括大家所熟知的内核开发书籍,内核驱动课程书籍都很多。
虽然书籍所使用的版本不一样,但是 2.6.X 版本之间比较起来,介绍内容改动还是比较少的,所以本专栏使用linux 内核版本: 2.6.20
我相信使用好的工具和方法会大大增加你的学习效率,提升知识掌握程度,更能快速深入理解内核网路模块机理。
(3)学习目标
- 对内核里网路模块,里面的函数调用有一个基本的认识,
- 知道网路从应用层怎么经过网络设备到达另外一台设备的应用层,从应用层-->内核-->网卡-->另外一台设备,整个流程进行梳理。
(4)总结
后面,我会参考《Linux 内核源码剖析-TCP/IP 实现》,每阅读一章,记录核心知识点,以及实验过程。