本文主要讲解了Linux内核二层数据包接收流程,使用的内核的版本是2.6.32.27
为了方便理解,本文采用整体流程图加伪代码的方式从内核高层面上梳理了二层数据包接收的流程,希望可以对大家有所帮助。阅读本文章假设大家对C语言有了一定的了解
整体流程如下:
数据报文接收流程伪代码分析如下
/*在基于中断收发报文的网卡设备驱动中,
* 当有数据报文进来的时候,使用net_interrupt()进行中断触发
*如 isa-skeleton设备驱动中*/
static int __init netcard_probe1(struct net_device *dev,