首页 > 试题广场 >

以下哪项不属于网络设备驱动的层次结构?

[单选题]

 以下哪项不属于网络设备驱动的层次结构?

  • 网络协议接口层

  • 网络设备与媒介层

  • 数据链路层

  • 设备驱动功能层

在 Linux 里,网络设备驱动的代码只负责把“数据”从协议栈搬到“网卡”,它自己并不关心 IP、TCP 这些高层语义。
为了把这件事做明白,内核把驱动代码拆成 3 个抽象层(从上到下):
  1. 网络协议接口层
    对应内核结构:struct net_device提供的统一回调(ndo_start_xmit、ndo_set_rx_mode…)。
    作用:给上层协议(IP、ARP…)一个“设备无关”的发包/控包入口。
  2. 设备驱动功能层
    对应各厂商写的 xxx_driver.c,里面实现:
    • 初始化/探测(probe)
    • 发包(tx)
    • 收包(rx,NAPI 轮询或中断)
    • DMA 映射、描述符环维护
    • 错误恢复、ethtool 接口
      作用:把“协议层”下来的 skb 翻译成“硬件能懂的描述符”,再把硬件收到的描述符翻译成 skb 送回去。
  3. 网络设备与媒介层
    对应真正的网卡控制器、PHY、SerDes、光纤、双绞线。
    驱动通过 MMIO、MDIO、PCIe BAR 去配置它们。
    作用:提供物理收发通道,让比特流能跑出去。
—— 三层之外,像“数据链路层”那是 OSI 协议栈里的概念,不属于驱动本身的层次结构。
发表于 2025-09-06 09:52:34 回复(0)