Linux内核领接子系统分析


邻接子系统核心 基础知识 Linux 邻接子系统负责发现房钱链路上的节点,并且将 L3(网络层)地址转换为 L2(数据链路层)地址。在 IPv4 中,实现这种转化协议为地址解析协议(Address Resolution Protocol, ARP),而在 IPv6 则为邻居发现协议(Neighbou

传输层分析


套接字分析 每个操作系统都必须提供网络系统入口和 API,Linux 内核网络子系统提供的标准 POSIX 套接字向用户提供接口。在 Linux 传输层之上的一切都属于用户空间。Linux 也遵循 Unix 范式(一切皆文件),因此套接字也与文件相关联,使用统一套接字 API 会让应用程序移植更容易

网络层分析


网络访问层仍受到传输介质的性质和相关适配器的设备驱动程序的影响很大。网络层与网络适配器的硬件性质几乎是完全分离的。为什么是几乎呢?该层不仅负责发送和接受网络数据,还负责在彼此不直接连接的系统之间转发和路由分组。查找最佳路由并选择适当的网络设备来发送分组,也涉及对底层地址簇的处理(比如特定硬件的 MA

13.USB3.0设备控制器驱动分析


USB 驱动框架分析 USB 控制器作为 Host (USB 主机控制器)时,使用 USB 主机控制器驱动。 USB 控制器作为 device (USB 设备控制器)的时候驱动框架分别为:Gadget Function 驱动、Gadget Function API、Composite 及 UDC (

1.IO体系结构与访问设备


IO体系结构 与外设通信通常称为输入输出,一般缩写为I/O。在实现外设IO的时候,内核必须处理三个可能出现的问题: 必须根据具体的设备类型和模型,使用各种方法对硬件寻址。 内核必须向用户应用程序和系统工具提供访问各种设备的方法。但凡有可能,都应当采用统一的方案,确保程序设计的工作量不会过多,同时保证

11.USB驱动分析


基础层次详解 通用串行总线(USB)主要用于连接主机和外部设备(协调主机和设备之间的通讯),USB 设备不能主动向主机发送数据。USB 总线采用拓扑(树形),主机侧和设备侧的 USB 控制器(Host 和 UDC),每个总线只要一个主机控制器。 主机侧的 USB 节点为根节点,所有子节点都连接在根节

10.USB设备驱动代码分析(鼠标)


定义鼠标ID表 static struct usb_device_id usbmouse_as_key_id_table [] = { {USB_INTERFACE_INFO(USB_INTERFACE_CLASS_HID, USB_INTERFACE_SUBCLASS_BOOT,

12.以太网驱动分析


网络驱动架构 Linux 内核网络设备驱动框架分为四个模块:网络协议接口模块、网络设备接口模块、设备驱动模块和网络设备与媒介模块。 网络协议常用数据结构 套接字缓冲区 sk_buff 结构体类型,具体核心成员如下: 存储 IP 数据 skb_shared_info 结构体类型(保存 IP 分片数据)

2.块设备详解


基本概念 磁盘(disk)是指利用磁记录技术存储数据的存储器。磁盘是计算机主要的存储介质,可以存储大量二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(Floppy Disk,简称软盘);如今常用的磁盘是硬磁盘(Hard Disk,简称硬盘)。 块设备(Block Device

3.文件系统关联及字符设备操作


文件系统关联 设备文件都是由标准函数处理,类似普通文件。设备文件也是通过虚拟文件系统来管理的,和普通文件都是通过完全相同的接口访问的。 inode中设备文件的成员数据 虚拟文件系统每个文件都关联到一个inode,用于管理文件的属性。源码如下: