Linux网络驱动整理
网络设备是 完成用户数据包在网络媒介上发送和接收的设备 ,它将上层协议传递下来的数据包以 特定的媒介访问控制方式 进行发送,并将接收到的数据包传递给上层协议。应用程序使用 套接字(socket) 完成与网络设备的接口。 Linux网络设备驱动的结构 Linux 系统对网络设备驱动的驱动体系从上到下划分为4个层次,依次为为 网络协议接口层、网络设备接口层、提供实际功能的设备驱动功能层和网络设备与媒介层 ,4层的作用如下: 网络协议接口层 向 网络层协议提供统一的数据包收发接口 ,不论上层协议为 ARP 还是 IP,都通过 dev_queue_init()函数发送数据 ,并通过 netif_rx()函数接收数据 。这一层的存在使得上层协议独立于具体的设备。 网络设备接口层 向 协议接口层提供统一的用于描述具体网络设备属性和操作的结构体net_device ,该结构体是设备驱动功能层中各函数的容器。实际上,网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能层的结构。 设备驱动功能层 各函数是 网络设备接口层 net_device 数据结构的具体成员 ,是驱使网络设备硬件完成相应动作的程序,它通过 hard_start_xmit()函数启动发送操作 ,并通过网络设备上的 中断触发接收操作 网络设备与媒介层 是完成数据包发送和接收的物理实体,包括网络适配器和具体的传输媒介