以下内容源于朱有鹏《物联网大讲堂》课程的学习,如有侵权,请告知删除。
一、网络设备驱动概述
1、什么是网络设备
(1)网络设备:物理网卡在linux中形成的体系软件表现。
(2)物理网卡: 真正的硬件网卡设备。
2、网络设备接口
(1)网络设备的访问方法
- /dev下没有设备文件,也不通过/sys下的属性文件访问。
- 直观上,应用层都是通过一些特殊的命令(如ifconfig、ping等)来访问网卡硬件(调用驱动)的。
- 本质上,应用调用驱动的方法可以通过分析ping、ifconfig等命令的实现得知,实际就是通过socket、bind、listen、connect、send、recv等API来实现。
(2)网络设备被抽象成一个能够发送和接收数据包的“网络接口”
- 软件虚拟出来的网卡。
(3)struct net_device,来管理所有网络接口
- 填充结构体,然后注册
3、学习方法
(1)注意网络设备的访问方法和前两种不同;
(2)2个数据结构(net_device(网络设备的抽象结构体)和sk_buff(数据包的抽象));
(3)一个虚拟网卡案例代码分析 + DM9000驱动源码分析。
二、虚拟网卡驱动分析
(此网卡不能实际用,是虚拟的,不能ping通。,主要目的是对网络设备驱动的框架进行理解和分析)代码
虚拟网卡安装、卸载、打开、关闭、设置IP地址等实践。
1、
2、
3、
4、
三、DM9000驱动源码分析
见博文http://blog.csdn.net/oqqhutu12345678/article/details/78513482
四、网络设备驱动框架