在工作中或多或少需要和协议栈打交道,因为公司的策略,公司自有的协议栈基本都是基于开源协议栈的理解重写的协议栈,在可维护性和性能方面均比开源软件强势很多,可惜在公司时更多是调用API,并未从头到尾研究过一个完整的协议栈。从事网络工作没有研究过完整的协议栈,不得不说是个严重的缺失。
本想基于2.6内核进行协议栈分析,分析了一段时间,感觉有些吃力,估计得分析几遍才能理解透彻,而且并不能真正掌握。
发现了《linux内核网络栈源代码情景分析》,此书是基于1.2.3版本Linux进行的分析,20多年前的版本,不过对于协议栈的一些理论分析为不错的参考。整个协议栈收发包流程以及协议设计并没有太大的改变,更多的是基于性能考虑优化了数据结构以及相应的算法,当然此版本不支持多核,所以整个过程没有锁,或者使用变量标志作为锁。
下一步准备分析一下最新版本Linux的协议栈。