Linux 网络设备驱动程序的体系结构


  • 图片说明如下:


  • 网络协议接口层

    网络协议接口层向网络层协议提供统一的数据包收发接口,不论上层协议是ARP还是IP,都通过 dev_queue_xmit() 函数发送数据,
    并通过 netif_rx() 函数接受数据,这一层的存在使得上层协议独立于具体的设备。

    它们的代码的声明在 kernel 源码目录的 include/linux/netdevice.h
    它们的代码的实现在 kernel 源码目录的 net/core/dev.c


  • 网络设备接口层

    网络设备接口层向协议接口层提供统一的用于描述具体网络设备属性的操作和结构体 net_device
    该结构体是设备驱动功能层中各函数的容器。
    实际上,网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能层的结构。

    该容器的定义是在 kernel 源码目录的 include/linux/netdevice.h


  • 设备驱动功能层

    设备驱动功能层的各函数是网络设备接口层 net_device 数据结构的具体成员,
    是驱动网络设备硬件完成相应动作的程序,他通过 hard_start_xmit() 函数启动发送操作,并通过网络设备上的 中断 触发接收操作。


  • 网络设备与媒介层

    网络设备与媒介层是完成数据包发送和接收的物理实体,包括网络设配器和具体的传输媒介,
    网络设配器被设备驱动功能层中的函数在物理上驱动,对于linux 系统而言,网络设备和媒介都可以是虚拟的。

Linux 网络子系统之结构介绍的更多相关文章

  1. Linux 网络子系统

    今天记录一下Linux网络子系统相关的东西. 因为感觉对这一块还是有一个很大的空白,这件事情太可怕了. 摘抄多份博客进行总结一下Linux网络子系统的相关东西. 一. Linux网络子系统体系结构 L ...

  2. Linux 网络子系统之网络协议接口层(一)

    Linux 网络设备驱动之网络协议接口层介绍. 网络协议接口层最主要的功能是给上层协议提供透明的数据包发送和接收接口. 当上层ARP或IP需要发送数据包时,它将调用网络协议接口层的dev_queue_ ...

  3. Linux网络子系统

    再Linux的世界里,万物皆文件,通过虚拟文件系统VFS,程序可以用标准的Linux系统调用对不同的文件系统,甚至不同介质上的文件系统进行读写操作.下面我们揭示Linux网络子系统的秘密 sockfs ...

  4. linux网络子系统内核分析

    1.选择路由 若要将数据包发至PC2,则linux系统通过查询路由表可知168.1.1.10(目的地址)的网关地址为192.168.1.1,此时linux系统选择网卡1发送数据包. 2.邻居子系统(通 ...

  5. 【Linux 内核网络协议栈源码剖析】网络栈主要结构介绍(socket、sock、sk_buff,etc)

    原文:http://blog.csdn.net/wenqian1991/article/details/46700177 通过前面的分析,可以发现,网络协议栈中的数据处理,都是基于各类结构体,所有有关 ...

  6. Linux 网络子系统之网络协议接口层(二)

    这一篇主要围绕网络协议接口层的发送函数的解析 int dev_queue_xmit(struct sk_buff *skb) 函数解析 声明: /* include/linux/netdevice.h ...

  7. Linux网络子系统之---- PHY 配置

    MII即媒体独立接口,也叫介质无关接口. 它包括一个数据接口,以及一个MAC和PHY之间的管理接口(图1). 数据接口包括分别用于发送器和接收器的两条独立信道.每条信道都有自己的数据.时钟和控制信号. ...

  8. linux网络编程之进程间通信介绍

    从今天起,开始学习进程间通信相关的东东,关于socket的编程先告一段落了,在学习进程间通信之前,首先先要了解一些概念,所以,这次不开始真正的代码编写,先纯理论,理解了为之后的更深入的学习可以打下良好 ...

  9. Linux 网络子系统之NAPI书签

    只是一个书签 http://blog.csdn.net/ustc_dylan/article/details/6116334

随机推荐

  1. 架构-LAMP特级学习(网站大存储量解决方案)

    数据库采用主从.分区技术 数据库优化

  2. ssh之为什么要放弃ssh?

    本文经转载, 源出处不详.https://www.cnblogs.com/hackxiyu/p/6849085.html 最近听一些朋友说,招聘面试的很多人简历都差不多,大部分人的简历上面都写了熟悉s ...

  3. 关于远程访问Oracle数据库的设置(共享数据库)

    写在前面: 需求描述:     我笔记本上安装了oracle数据库, 现在同事也想连接这个数据库. 也就是设置为别人能远程访问我本地的数据库. 思路:     通过在我笔记本WiFi共享,别人连接该W ...

  4. 系统加速解决方案之Windows XP

    系统加速解决方案之Windows XP 在使用Windows XP的过程中,系统速度会随着时间的推移越来越慢,你可重装系统,但重装后,那么多的应用软件也要重新安装,如何在不安装系统的前提下提升Wind ...

  5. Jersey框架

    我从别人博客那儿搬点东西过来,原博请看最下面~看的顺序反了..应该先看JAX-RS整体的东西再看具体实现的Jersey例子的= =无数次改这个日记了不能忍...所以决定把JAX-RS系列的文章搬过来. ...

  6. Linux下su与su -命令的本质区别

    大部分Linux发行版的默认账户是普通用户,而更改系统文件或者执行某些命令,需要root身份才能进行,这就需要从当前用户切换到root用户.Linux中切换用户的命令是su或su -.前天我在使用us ...

  7. PS_Form个性化选择Block自动查询和查询条件排序实现(案例)

    2014-06-01 BaoXinjian

  8. VC6.0编译DLL,使用VS2010调用问题及解决方法

    1.做驱动的时候.做应用程序须要和驱动通信,必须建立一个DLL. 2.由于客户使用版本号太低,须要使用到VC6.0编写DLL 3.在VC6.0上编写DLL的时候,导出的函数名会出现和原函数名不正确,导 ...

  9. shell 获取不同目录下指定文件,并把文件复制到一个文件夹下面

    resource_dir=/tmp/jobs20170711/jobs/*/config.xmltarget_dir=/tmp/jobs20170711/bakefilelist=`ls $resou ...

  10. 利用eChart绘制网页图表

    首先,最好的教程在这里:eCchart eChart所需JS: echarts.min.js china.js echarts.js 页面代码如下: 一.图表 <!DOCTYPE html> ...