• Linux 网络子系统之结构介绍


    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 系统而言,网络设备和媒介都可以是虚拟的。
  • 相关阅读:
    CF1253F Cheap Robot(神奇思路,图论,最短路,最小生成树/Kruskal 重构树/并查集)
    [算法模版]子序列DP
    [Codeforces1250E] The Coronation
    Comet OJ
    [算法模版]种类并查集
    浅析容斥和DP综合运用
    FWT-快速沃尔什变换
    [算法模版]同余最短路
    卡特兰数
    [算法模版]同余最短路
  • 原文地址:https://www.cnblogs.com/chenfulin5/p/6541964.html
Copyright © 2020-2023  润新知