封面
版权信息
前言
第1章 概述
1.1 Linux内核组件
1.2 Linux内核中的活动
1.2.1 进程和系统调用
1.2.2 硬件中断
1.2.3 tasklet
1.2.4 workqueue
1.2.5 软件中断
1.3 互斥机制
1.3.1 spin lock
1.3.2 读-写spin lock
1.3.3 读-复制-更新(Read-Copy-Update,RCU)
1.4 内核模块(module)
1.4.1 管理内核模块
1.4.2 自动装载模块
1.4.3 模块功能的注册和取消
1.4.4 在模块装载时给模块传递参数
1.4.5 内核和模块的符号表
1.5 内存资源
1.5.1 高速缓冲区(memory cache)
1.5.2 高速缓存和哈希链表
1.6 时间管理
1.7 嵌入式的挑战
1.8 本章总结
第2章Linux网络包传输的关键数据结构——Socket Buffer
2.1 Socket Buffer设计概述
2.1.1 Socket Buffer与TCP/IP协议栈
- APP免费
2.1.2 Socket Buffer的对外接口
- APP免费
2.1.3 Socket Buffer的特点
- APP免费
2.2 Socket Buffer的构成
- APP免费
2.2.1 Socket Buffer的基本组成
- APP免费
2.2.2 Socket Buffer穿越TCP/IP协议栈
- APP免费
2.3 sk_buff数据域的设计和含义
- APP免费
2.3.1 sk_buff中的结构管理域
- APP免费
2.3.2 常规数据域
- APP免费
2.3.3 sk_buff的网络功能配置域
- APP免费
2.4 操作sk_buff的函数
- APP免费
2.4.1 创建和释放Socket Buffer
- APP免费
2.4.2 数据空间的预留和对齐
- APP免费
2.4.3 复制和克隆
- APP免费
2.4.4 操作队列的函数
- APP免费
2.4.5 引用计数的操作
- APP免费
2.4.6 协议头指针操作
- APP免费
2.5 数据分片和分段
- APP免费
2.5.1 为什么要分割数据包
- APP免费
2.5.2 设计skb_shared_info数据结构的目的
- APP免费
2.5.3 操作skb_shared_info的函数
- APP免费
2.6 本章总结
- APP免费
第3章 网络设备在内核中的抽象——struct net_device数据结构
- APP免费
3.1 协议栈与网络设备
- APP免费
3.1.1 协议栈软件与网络设备硬件之间的接口
- APP免费
3.1.2 设备独立接口文件dev.c
- APP免费
3.1.3 设备驱动程序
- APP免费
3.1.4 struct net_device数据结构
- APP免费
3.2 struct net_device数据结构
- APP免费
3.2.1 struct net_device数据结构的数据域
- APP免费
3.2.2 struct net_device数据结构的其他数据域
- APP免费
3.3 struct net_device数据结构中数据域的功能分类
- APP免费
3.3.1 设备管理域
- APP免费
3.3.2 设备配置管理域
- APP免费
3.3.3 设备状态
- APP免费
3.3.4 统计
- APP免费
3.3.5 设备链表
- APP免费
3.3.6 链路层组传送
- APP免费
3.3.7 流量管理
- APP免费
3.3.8 常规域
- APP免费
3.3.9 操作函数结构
- APP免费
3.4 函数指针
- APP免费
3.4.1 设备初始化
- APP免费
3.4.2 传送
- APP免费
3.4.3 硬件协议头
- APP免费
3.4.4 网络统计状态
- APP免费
3.4.5 修改配置
- APP免费
3.5 本章总结
- APP免费
第4章 网络设备在Linux内核中识别
- APP免费
4.1 内核初始化的特点
- APP免费
4.1.1 命令行参数
- APP免费
4.1.2 网络子系统的命令行参数
- APP免费
4.2 内核启动过程
- APP免费
4.2.1 用do_initcall函数完成的初始化
- APP免费
4.2.2 标记初始化函数的宏
- APP免费
4.2.3 网络子系统初始化
- APP免费
4.2.4 网络设备的初始化
- APP免费
4.3 网络设备的注册和struct net_device数据结构实例的初始化
- APP免费
4.3.1 初始化函数的任务
- APP免费
4.3.2 网络设备的注册和注销
- APP免费
4.3.3 网络设备的引用计数(reference count)
- APP免费
4.3.4 允许和禁止网络设备
- APP免费
4.4 网络设备的管理
- APP免费
4.4.1 管理网络设备的链表
- APP免费
4.4.2 网络设备的搜索函数
- APP免费
4.5 事件通知链
- APP免费
4.5.1 事件通知链构成
- APP免费
4.5.2 注册回调函数到事件通知链
- APP免费
4.5.3 通知子系统有事件发生
- APP免费
4.5.4 网络子系统中的事件通知链
- APP免费
4.5.5 网络子系统传送的事件
- APP免费
4.6 本章总结
- APP免费
第5章 网络设备驱动程序
- APP免费
5.1 网络设备驱动程序概述
- APP免费
5.1.1 网络设备驱动程序的任务
- APP免费
5.1.2 网络设备驱动程序的构成
- APP免费
5.2 网络设备与内核的交互
- APP免费
5.2.1 设备与内核的交互方式
- APP免费
5.2.2 硬件中断
- APP免费
5.2.3 中断在内核的实现
- APP免费
5.2.4 软件中断
- APP免费
5.3 网络设备驱动程序的实现
- APP免费
5.3.1 网络适配器的初始化
- APP免费
5.3.2 网络设备活动功能函数
- APP免费
5.3.3 网络设备管理函数
- APP免费
5.3.4 在适配器中支持组发送
- APP免费
5.4 CS8900A网络适配器驱动程序的实现
- APP免费
5.4.1 CS8900A网络控制芯片的功能概述
- APP免费
5.4.2 CS8900A的PacketPage结构
- APP免费
5.4.3 CS8900A的操作
- APP免费
5.4.4 CS8900A设备驱动程序分析
- APP免费
5.5 本章总结
- APP免费
第6章 数据链路层数据帧的收发
- APP免费
6.1 关键数据结构
- APP免费
6.1.1 struct napi_struct数据结构
- APP免费
6.1.2 struct softnet_data数据结构
- APP免费
6.2 数据帧的接收处理
- APP免费
6.2.1 NAPI的实现
- APP免费
6.2.2 netif_rx函数分析
- APP免费
6.3 网络接收软件中断
- APP免费
6.3.1 net_rx_action的工作流程
- APP免费
6.3.2 net_rx_action函数的实现细节
- APP免费
6.3.3 从输入队列中读取数据帧
- APP免费
6.3.4 处理输入数据帧
- APP免费
6.4 数据链路层与网络层的接口
- APP免费
6.4.1 输入数据帧协议解析
- APP免费
6.4.2 实现数据链路层与网络层接口的关键数据结构
- APP免费
6.4.3 接口的组织
- APP免费
6.5 数据链路层对数据帧发送的处理
- APP免费
6.5.1 启动/停止设备发送数据
- APP免费
6.5.2 调度设备发送数据帧
- APP免费
6.5.3 队列策略接口
- APP免费
6.5.4 dev_queue_xmit函数
- APP免费
6.5.5 发送软件中断
- APP免费
6.5.6 Watchdog时钟
- APP免费
6.6 本章总结
- APP免费
第7章 网络层传送
- APP免费
7.1 Internet协议的基本概念
- APP免费
7.1.1 Internet协议的任务
- APP免费
7.1.2 Internet协议头
- APP免费
7.1.3 Linux内核中描述IP协议头的数据结构
- APP免费
7.2 IP协议实现前的准备工作
- APP免费
7.2.1 协议初始化
- APP免费
7.2.2 与网络过滤子系统的交互
- APP免费
7.2.3 与路由子系统的交互
- APP免费
7.3 输入数据包在IP层的处理
- APP免费
7.3.1 ip_rcv函数分析
- APP免费
7.3.2 ip_rcv_finish函数分析
- APP免费
7.3.3 接收操作中IP选项的处理
- APP免费
7.4 IP选项
- APP免费
7.4.1 IP选项的格式
- APP免费
7.4.2 描述IP选项的数据结构
- APP免费
7.4.3 Linux内核对IP选项的处理
- APP免费
7.4.4 Linux内核对IP选项处理的具体实现
- APP免费
7.5 IPv4数据包的前送和本地发送
- APP免费
7.5.1 数据包的前送
- APP免费
7.5.2 dst_output函数的实现
- APP免费
7.5.3 本地发送的处理
- APP免费
7.6 在IP层的发送
- APP免费
7.6.1 执行发送的关键函数
- APP免费
7.6.2 发送数据包相关信息的数据结构
- APP免费
7.6.3 ip_queue_xmit函数
- APP免费
7.6.4 ip_append_data函数预备
- APP免费
7.6.5 ip_append_data函数分析
- APP免费
7.6.6 ip_append_page函数
- APP免费
7.6.7 ip_push_pending_frames函数
- APP免费
7.6.8 发送数据包的整体过程
- APP免费
7.7 与相邻子系统的接口
- APP免费
7.8 数据包的分片与重组
- APP免费
7.8.1 数据分片需要考虑的问题
- APP免费
7.8.2 在上层分片的效率
- APP免费
7.8.3 数据包分片/重组使用的IP协议头数据域
- APP免费
7.9 本章总结
- APP免费
第8章 传输层UDP协议的实现
- APP免费
8.1 UDP协议基础
- APP免费
8.2 UDP协议实现的关键数据结构
- APP免费
8.2.1 UDP协议头的数据结构
- APP免费
8.2.2 UDP的控制缓冲区
- APP免费
8.2.3 UDP套接字的数据结构
- APP免费
8.2.4 应用程序发送给UDP负载数据的数据结构
- APP免费
8.3 UDP、套接字层、IP层之间的接口
- APP免费
8.3.1 UDP协议实例与套接字层间的接口
- APP免费
8.3.2 UDP协议与IP层之间的接口
- APP免费
8.4 发送UDP数据报的实现
- APP免费
8.4.1 初始化一个连接
- APP免费
8.4.2 在UDP套接字上发送数据包
- APP免费
8.4.3 向IP层发送数据包
- APP免费
8.4.4 从用户地址空间复制数据到数据报
- APP免费
8.5 UDP协议接收的实现
- APP免费
8.5.1 UDP协议接收的处理函数
- APP免费
8.5.2 将数据包放入套接字接收队列的处理函数
- APP免费
8.5.3 UDP协议接收广播与组发送数据包
- APP免费
8.5.4 UDP的哈希链表
- APP免费
8.5.5 将数据包放到套接字接收队列
- APP免费
8.6 UDP协议在套接字层的接收处理
- APP免费
8.6.1 函数输入参数
- APP免费
8.6.2 函数处理流程
- APP免费
8.7 本章总结
- APP免费
第9章 传输层TCP协议的实现
- APP免费
9.1 CP协议简介
- APP免费
9.1.1 CP是可靠协议
- APP免费
9.1.2 TCP是面向连接的协议
- APP免费
9.1.3 TCP是按字节流交换的协议
- APP免费
9.1.4 TCP协议实现的功能
- APP免费
9.2 描述TCP协议实现的关键数据结构
- APP免费
9.2.1 TCP协议头数据结构
- APP免费
9.2.2 TCP的控制缓冲区
- APP免费
9.2.3 TCP套接字的数据结构
- APP免费
9.2.4 TCP协议选项Options
- APP免费
9.2.5 应用层传送给传输层信息的数据结构
- APP免费
9.3 在TCP协议、套接字、IP层之间的接口
- APP免费
9.3.1 管理套接字与TCP接口的数据结构
- APP免费
9.3.3 TCP与IP层之间的接收接口
- APP免费
9.3.4 TCP与IP层之间的发送接口
- APP免费
9.3.5 初始化TCP套接字
- APP免费
9.4 TCP协议实例接收过程的实现
- APP免费
9.4.1 tcp_v4_rcv函数的实现
- APP免费
9.4.2 Fast Path和prequeue队列的处理
- APP免费
9.4.3 处理TCP的Blocklog队列
- APP免费
9.4.4 套接字层的接收函数
- APP免费
9.5 Linux内核中TCP发送功能的实现
- APP免费
9.5.1 将数据从用户地址空间复制到内核Socket Buffer
- APP免费
9.5.2 TCP数据段输出
- APP免费
9.5.3 发送过程的状态机
- APP免费
9.6 TCP套接字的连接管理
- APP免费
9.6.1 TCP连接初始化
- APP免费
9.6.2 TCP状态从CLOSED切换到SYN_SENT
- APP免费
9.6.3 TCP连接的状态管理
- APP免费
9.6.4 TCP连接为ESTABLISHED状态时的接收处理
- APP免费
9.6.5 TCP的TIME_WAIT状态处理
- APP免费
9.7 本章总结
- APP免费
第10章 套接字层实现
- APP免费
10.1 套接字概述
- APP免费
10.1.1 什么是套接字
- APP免费
10.1.2 套接字与管理套接字的数据结构
- APP免费
10.1.3 套接字与文件
- APP免费
10.2 套接字层的初始化
- APP免费
10.3 地址族的值和协议交换表
- APP免费
10.3.1 协议交换表的数据结构
- APP免费
10.3.2 套接字支持多协议栈的实现
- APP免费
10.4 IPv4中协议成员注册和初始化
- APP免费
10.5 套接字API系统调用的实现
- APP免费
10.5.1 系统调用简述
- APP免费
10.5.2 套接字API系统调用的实现
- APP免费
10.6 创建套接字
- APP免费
10.6.1 sock_create函数创建套接字
- APP免费
10.6.2 协议族套接字创建函数的管理
- APP免费
10.6.3 AF_INET套接字的创建
- APP免费
10.7 I/O系统调用和套接字
- APP免费
10.8 本章总结
- APP免费
第11章 应用层——网络应用套接字编程
- APP免费
11.1 套接字描述符
- APP免费
11.1.1 family参数
- APP免费
11.1.2 type参数
- APP免费
11.1.3 protocol参数
- APP免费
11.1.4 AF_XXX与PF_XXX形式的常数
- APP免费
11.2 地址格式
- APP免费
11.2.1 字节顺序
- APP免费
11.2.2 地址结构
- APP免费
11.2.3 支持地址格式转换的函数
- APP免费
11.2.4 获取网络配置信息
- APP免费
11.2.5 编程示例
- APP免费
11.2.6 将地址与套接字绑定
- APP免费
11.3 套接字连接
- APP免费
11.3.1 connect函数分析
- APP免费
11.3.2 服务器套接字建立侦听队列
- APP免费
11.3.3 建立套接字连接
- APP免费
11.4 数据的传送
- APP免费
11.4.1 send函数
- APP免费
11.4.2 传送数据的函数
- APP免费
11.4.3 接收数据的函数
- APP免费
11.4.4 recvfrom、recvmsg函数
- APP免费
11.4.5 编程示例
- APP免费
11.5 套接字选项
- APP免费
11.5.1 设置套接字选项
- APP免费
11.5.2 读取套接字选项
- APP免费
11.6 out-of-band数据
- APP免费
11.7 非阻塞和异步I/O操作
- APP免费
11.8 本章总结
- APP免费
第12章 嵌入式系统网络应用技术
- APP免费
12.1 嵌入式系统的设计要素
- APP免费
12.2 嵌入式系统开发环境的构成
- APP免费
12.2.1 硬件构成
- APP免费
12.2.2 典型的硬件开发环境
- APP免费
12.2.3 软件交叉平台开发环境
- APP免费
12.2.4 嵌入式软件的开发步骤
- APP免费
12.3 将网络设备驱动程序加入内核
- APP免费
12.3.1 配置新网络设备
- APP免费
12.3.2 编译新驱动程序
- APP免费
12.4 内核配置
- APP免费
12.4.1 目标硬件及内核、库配置
- APP免费
12.4.2 内核组件配置
- APP免费
12.4.3 应用配置
- APP免费
12.5 集成应用程序并下载至目标板
- APP免费
12.5.1 集成应用程序
- APP免费
12.5.2 将执行文件下载至目标板
- APP免费
12.6 本章总结
更新时间:2018-12-27 18:14:17