学习网络设备驱动之前,先来分析一下网络子系统的结构等知识。
1.分为用户空间和内核空间,以及物理设备空间;
2.用户空间是应用层,内核空间与应用层交互的是系统文件调用层(system call interface),系统调用和网络协议层之间有个协议无关接口(protocol agnostic interface),网络协议层和设备驱动层(device dirver )之间有个设备无关接口(device agnostic interface);
3.为什么要有协议无关接口?这样系统调用可以用统一的接口来将不同类型的传输协议包送给协议无关接口,经过协议无关接口后来送给协议层处理,方便了应用层的系统调用。
4.为什么要有设备无关接口?这一层提供一组通用函数供底层驱动程序使用,让它们可以对高层协议栈进行操作。向上,为我们的网络协议层来访问设备驱动提供了统一的接口,不管网卡驱动如何写,我们的协议层访问网卡驱动都是用的统一的接口;向下,它为设备驱动程序处理协议提供了统一的接口,比如说网卡接收到了IP包,我们的驱动程序不需要去关心这个IP包是TCP的还是UDP的,甚至它都不需要关心是不是IP包,它将这个包直接丢给设备无关接口来处理了。
有了网络框架结构的了解,下面从net_device这个结构体来讲起。
1.每个网络接口都由一个net_device来描述,这个结构可以用alloc_netdev或者alloc_etherdev()来分配;
2.这个结构体主要的成员有

最低0.47元/天 解锁文章
3462

被折叠的 条评论
为什么被折叠?



