数据发送流程
处理总结图如下:
数据包接收流程
处理总结入下图:
理解浅谈
对应linux内核协议栈代码1.2.13版本整体上学习了,其实也没有想象中的难理解。谈一下在学习内核代码过程中最深的感受。内核代码是用C写的,但给人更多的还是C++的封装、多态特性。
就封装来说每一层协议中对该层中用到的多个协议都是类似于封装的,对上下各层都提供了对应接收和发送的接口。
其实C++多态本质就是函数指针,而内核实现数据包各层之间的数据解析、发送(尤其数据的解析)都是通过接口(函数指针)来实现的,当下层数据解析到往上一层的协议后,会对应调用该协议的解析函数指针,该函数指针是已在初始化被赋了值的。这跟C++的多态思想简直是如出一辙。
上述为笔者的一些浅谈,愿后续能对Linux的内核思想能够理解的更加深刻。