第1页共28页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共28页Linux网络设备分析[摘要]在本文中,首先概括了网络设备总体特征和工作原理,接着在分析了一个重要的数据结构device后,重点剖析了网络设备的整个初始化工作过程;简单地分析了设备的打开和关闭的操作后,是有关数据包的传输和接收的分析;在最后,本文对写网络设备驱动程序做了一个总结
以上的每部分的分析,都是在NE2000以太网卡的基础上进行的
在附录中是一个虚拟的字符设备驱动程序以及写这个程序的体会,该程序已成功使用过,它是在网络设备分析之前本人做的一个小小的试验
网络设备概述在LINUX中,为了简化对设备的管理,所有外围的硬件设备被归结为三类:字符设备(如键盘、鼠标等)、块设备(如硬盘、光驱、软驱等)和网络设备(也称为网络接口,networkinferface),如以太网卡
在本文中,我们将等效使用“网络设备”和“网络接口”这两个概念,而对某个具体的网络设备,我们将称之为“物理设备”或“物理网络设备”
为了屏蔽网络环境中物理网络设备的多样性,LINUX对所有的物理设备进行抽象并定义了一个统一的概念,称之为接口(Interface)
所有对网络硬件的访问都是通过接口进行的,接口提供了一个对所有类型的硬件一致化的操作集合来处理基本数据的发送和接收
一个网络接口被看作是一个发送和接收数据包(packets)的实体
对于每个网络接口,都用一个device的数据结构表示,有关该数据结构的具体内容,将在本文的后面详细介绍
通常,网络设备是一个物理设备如以太网卡,但软件也可以作为网络设备,如回送设备(loopback)
在内核启动时,通过网络设备驱动程序,将登记存在的网络设备
设备用标准的支持网络的机制来转递收到的数据到相应的网络层
所有被发送和接收的包都用数据结构sk_buff表示