1、分析网卡的工作原理即是分析网卡的驱动程序
2、为了屏蔽网络环境中物理网络设备的多样性,Linux对所有的设备进行抽象并定义了一个统一的概念,称之为接口
3、一个网络接口被看作是一个发送和接收数据包的实体。
4、对于每个网络接口,都用一个net_device的数据结构来表示。
5、所有被发送和接收的包都用数据结构sk_buff表示
6、要发送数据时,网络系统将分局系统路由表选择相应的网络接口进行数据传输;当接收数据包时,通过驱动程序登记的中断服务程序进行数据的接口处理。
2、为了屏蔽网络环境中物理网络设备的多样性,Linux对所有的设备进行抽象并定义了一个统一的概念,称之为接口
3、一个网络接口被看作是一个发送和接收数据包的实体。
4、对于每个网络接口,都用一个net_device的数据结构来表示。
5、所有被发送和接收的包都用数据结构sk_buff表示
6、要发送数据时,网络系统将分局系统路由表选择相应的网络接口进行数据传输;当接收数据包时,通过驱动程序登记的中断服务程序进行数据的接口处理。
7、Linux网络驱动程序从上到下分为四层:协议接口层、网络设备接口层、设备驱动功能层、网络设备和网络媒介层。如下图所示:
网卡初始化
1、网络设备初始化主要工作时检测设备的存在、初始化描述设备的net_device结构及在系统中登记该设备。
2、在系统初始化完成以后,系统检测到的网络设备将保存在链表dev_base中,其中每个链表单元net_device对应一个存在的物理网络设备。