一直想深入的研究内核协议栈的源码,但是由于各种原因,感觉都没有什么进展。也许是知识储备和方法论的问题——所谓的内功吧,毕竟对于菜鸟,能读懂协议栈源码真是件不容易的事。最近终于感觉有点眉目了,所以做一次记录。一方面希望从浩如烟淼的资料,总结出适合自己的蓝图;另一方面,方便其他借鉴。
协议栈实现了标准BSD套接字,我们学习了套接字API就可以方便编写网络程序;实现了VFS虚拟文件系统的接口,我们可以像访问文件一样使用套接字;协议栈高效得实现了TCP/IP协议...要读懂协议栈,感觉需要的知识真实太多,但是也正是因为此,我认为可以很好得串起关于内核的知识。
通过这段时间的学习,自己的一个感悟是:要用面向对象的思维阅读内核源码:抽象与继承,万物皆对象。另外一个感悟是关于认知的规律问题:先知其然,然后知其所以然。