图书介绍

嵌入式Linux网络体系结构设计与TCP/IP协议栈【2025|PDF下载-Epub版本|mobi电子书|kindle百度云盘下载】

嵌入式Linux网络体系结构设计与TCP/IP协议栈
  • 单立平编著 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121129766
  • 出版时间:2011
  • 标注页数:462页
  • 文件大小:256MB
  • 文件页数:478页
  • 主题词:Linux操作系统-程序设计;计算机网络-通信协议

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

嵌入式Linux网络体系结构设计与TCP/IP协议栈PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 概述1

1.1 Linux内核组件1

1.2 Linux内核中的活动3

1.2.1 进程和系统调用3

1.2.2 硬件中断4

1.2.3 tasklet6

1.2.4 workqueue6

1.2.5 软件中断7

1.3 互斥机制7

1.3.1 spin lock8

1.3.2 读—写spin lock10

1.3.3 读—复制—更新(Read-Copy-Update,RCU)10

1.4 内核模块(module)11

1.4.1 管理内核模块11

1.4.2 自动装载模块12

1.4.3 模块功能的注册和取消13

1.4.4 在模块装载时给模块传递参数14

1.4.5 内核和模块的符号表14

1.5 内存资源15

1.5.1 高速缓冲区(memory cache)15

1.5.2 高速缓存和哈希链表16

1.6 时间管理16

1.7 嵌入式的挑战17

1.8 本章总结18

第2章 Linux网络包传输的关键数据结构——Socket Buffer19

2.1 Socket Buffer设计概述19

2.1.1 Socket Buffer与TCP/IP协议栈19

2.1.2 Socket Buffer的对外接口20

2.1.3 Socket Buffer的特点20

2.2 Socket Buffer的构成20

2.2.1 Socket Buffer的基本组成21

2.2.2 Socket Buffer穿越TCP/IP协议栈22

2.3 sk_buff数据域的设计和含义24

2.3.1 sk_buff中的结构管理域24

2.3.2 常规数据域27

2.3.3 sk_buff的网络功能配置域32

2.4 操作sk_buff的函数34

2.4.1 创建和释放Socket Buffer35

2.4.2 数据空间的预留和对齐40

2.4.3 复制和克隆41

2.4.4 操作队列的函数43

2.4.5 引用计数的操作44

2.4.6 协议头指针操作44

2.5 数据分片和分段45

2.5.1 为什么要分割数据包45

2.5.2 设计skb_shared_info数据结构的目的46

2.5.3 操作skb_shared_info的函数46

2.6 本章总结47

第3章 网络设备在内核中的抽象——struct net_device数据结构48

3.1 协议栈与网络设备49

3.1.1 协议栈软件与网络设备硬件之间的接口49

3.1.2 设备独立接口文件dev.c50

3.1.3 设备驱动程序51

3.1.4 struct net_device数据结构51

3.2 struct net_device数据结构52

3.2.1 struct net_device数据结构的数据域52

3.2.2 struct net_device数据结构的其他数据域56

3.3 struct net_device数据结构中数据域的功能分类63

3.3.1 设备管理域64

3.3.2 设备配置管理域64

3.3.3 设备状态65

3.3.4 统计65

3.3.5 设备链表66

3.3.6 链路层组传送66

3.3.7 流量管理66

3.3.8 常规域69

3.3.9 操作函数结构69

3.4 函数指针69

3.4.1 设备初始化70

3.4.2 传送71

3.4.3 硬件协议头71

3.4.4 网络统计状态73

3.4.5 修改配置73

3.5 本章总结74

第4章 网络设备在Linux内核中识别75

4.1 内核初始化的特点76

4.1.1 命令行参数76

4.1.2 网络子系统的命令行参数78

4.2 内核启动过程80

4.2.1 用do_initcall函数完成的初始化83

4.2.2 标记初始化函数的宏84

4.2.3 网络子系统初始化85

4.2.4 网络设备的初始化86

4.3 网络设备的注册和struct net_device数据结构实例的初始化88

4.3.1 初始化函数的任务88

4.3.2 网络设备的注册和注销92

4.3.3 网络设备的引用计数(reference count)97

4.3.4 允许和禁止网络设备98

4.4 网络设备的管理99

4.4.1 管理网络设备的链表99

4.4.2 网络设备的搜索函数101

4.5 事件通知链102

4.5.1 事件通知链构成103

4.5.2 注册回调函数到事件通知链104

4.5.3 通知子系统有事件发生106

4.5.4 网络子系统中的事件通知链107

4.5.5 网络子系统传送的事件108

4.6 本章总结108

第5章 网络设备驱动程序109

5.1 网络设备驱动程序概述109

5.1.1 网络设备驱动程序的任务110

5.1.2 网络设备驱动程序的构成110

5.2 网络设备与内核的交互113

5.2.1 设备与内核的交互方式113

5.2.2 硬件中断115

5.2.3 中断在内核的实现117

5.2.4 软件中断120

5.3 网络设备驱动程序的实现127

5.3.1 网络适配器的初始化127

5.3.2 网络设备活动功能函数132

5.3.3 网络设备管理函数143

5.3.4 在适配器中支持组发送145

5.4 CS8900A网络适配器驱动程序的实现149

5.4.1 CS8900A网络控制芯片的功能概述149

5.4.2 CS8900A的PacketPage结构151

5.4.3 CS8900A的操作153

5.4.4 CS8900A设备驱动程序分析157

5.5 本章总结167

第6章 数据链路层数据帧的收发168

6.1 关键数据结构170

6.1.1 struct napi_struct数据结构170

6.1.2 struct softnet_data数据结构171

6.2 数据帧的接收处理173

6.2.1 NAPI的实现174

6.2.2 netif_rx函数分析178

6.3 网络接收软件中断182

6.3.1 net_rx_action的工作流程182

6.3.2 net_rx_action函数的实现细节183

6.3.3 从输入队列中读取数据帧185

6.3.4 处理输入数据帧186

6.4 数据链路层与网络层的接口190

6.4.1 输入数据帧协议解析190

6.4.2 实现数据链路层与网络层接口的关键数据结构192

6.4.3 接口的组织194

6.5 数据链路层对数据帧发送的处理196

6.5.1 启动/停止设备发送数据197

6.5.2 调度设备发送数据帧198

6.5.3 队列策略接口200

6.5.4 dev_queue_xmit函数203

6.5.5 发送软件中断206

6.5.6 Watchdog时钟209

6.6 本章总结211

第7章 网络层传送212

7.1 Internet协议的基本概念213

7.1.1 Internet协议的任务213

7.1.2 Internet协议头214

7.1.3 Linux内核中描述IP协议头的数据结构217

7.2 IP协议实现前的准备工作217

7.2.1 协议初始化217

7.2.2 与网络过滤子系统的交互219

7.2.3 与路由子系统的交互220

7.3 输入数据包在IP层的处理220

7.3.1 ip_rcv函数分析221

7.3.2 ip_rcv_finish函数分析224

7.3.3 接收操作中IP选项的处理226

7.4 IP选项228

7.4.1 IP选项的格式228

7.4.2 描述IP选项的数据结构234

7.4.3 Linux内核对IP选项的处理235

7.4.4 Linux内核对IP选项处理的具体实现237

7.5 IPv4数据包的前送和本地发送245

7.5.1 数据包的前送245

7.5.2 dst_output函数的实现249

7.5.3 本地发送的处理250

7.6 在IP层的发送254

7.6.1 执行发送的关键函数255

7.6.2 发送数据包相关信息的数据结构256

7.6.3 ip_queue_xmit函数260

7.6.4 ip_append_data函数预备264

7.6.5 ip_append_data函数分析274

7.6.6 ip_append_page函数279

7.6.7 ip_push_pending_frames函数280

7.6.8 发送数据包的整体过程282

7.7 与相邻子系统的接口284

7.8 数据包的分片与重组286

7.8.1 数据分片需要考虑的问题287

7.8.2 在上层分片的效率287

7.8.3 数据包分片/重组使用的IP协议头数据域287

7.9 本章总结288

第8章 传输层UDP协议的实现289

8.1 UDP协议基础289

8.2 UDP协议实现的关键数据结构290

8.2.1 UDP协议头的数据结构290

8.2.2 UDP的控制缓冲区290

8.2.3 UDP套接字的数据结构291

8.2.4 应用程序发送给UDP负载数据的数据结构291

8.3 UDP、套接字层、IP层之间的接口292

8.3.1 UDP协议实例与套接字层间的接口292

8.3.2 UDP协议与IP层之间的接口293

8.4 发送UDP数据报的实现294

8.4.1 初始化一个连接294

8.4.2 在UDP套接字上发送数据包297

8.4.3 向IP层发送数据包301

8.4.4 从用户地址空间复制数据到数据报304

8.5 UDP协议接收的实现305

8.5.1 UDP协议接收的处理函数305

8.5.2 将数据包放入套接字接收队列的处理函数307

8.5.3 UDP协议接收广播与组发送数据包308

8.5.4 UDP的哈希链表309

8.5.5 将数据包放到套接字接收队列312

8.6 UDP协议在套接字层的接收处理313

8.6.1 函数输入参数313

8.6.2 函数处理流程313

8.7 本章总结315

第9章 传输层TCP协议的实现316

9.1 CP协议简介316

9.1.1 CP是可靠协议316

9.1.2 TCP是面向连接的协议318

9.1.3 TCP是按字节流交换的协议319

9.1.4 TCP协议实现的功能320

9.2 描述TCP协议实现的关键数据结构320

9.2.1 TCP协议头数据结构320

9.2.2 TCP的控制缓冲区321

9.2.3 TCP套接字的数据结构322

9.2.4 TCP协议选项Options323

9.2.5 应用层传送给传输层信息的数据结构325

9.3 在TCP协议、套接字、IP层之间的接口326

9.3.1 管理套接字与TCP接口的数据结构326

9.3.2 初始化套接字与传输层之间的接口327

9.3.3 TCP与IP层之间的接收接口328

9.3.4 TCP与IP层之间的发送接口329

9.3.5 初始化TCP套接字331

9.4 TCP协议实例接收过程的实现332

9.4.1 tcp_v4_rcv函数的实现333

9.4.2 Fast Path和prequeue队列的处理338

9.4.3 处理TCP的Blocklog队列340

9.4.4 套接字层的接收函数342

9.5 Linux内核中TCP发送功能的实现348

9.5.1 将数据从用户地址空间复制到内核SocketBuffer349

9.5.2 TCP数据段输出354

9.5.3 发送过程的状态机358

9.6 TCP套接字的连接管理358

9.6.1 TCP连接初始化361

9.6.2 TCP状态从CLOSED切换到SYN_SENT362

9.6.3 TCP连接的状态管理365

9.6.4 TCP连接为ESTABLISHED状态时的接收处理370

9.6.5 TCP的TIME_WAIT状态处理374

9.7 本章总结379

第10章 套接字层实现380

10.1 套接字概述380

10.1.1 什么是套接字381

10.1.2 套接字与管理套接字的数据结构383

10.1.3 套接字与文件390

10.2 套接字层的初始化391

10.3 地址族的值和协议交换表392

10.3.1 协议交换表的数据结构392

10.3.2 套接字支持多协议栈的实现393

10.4 IPv4中协议成员注册和初始化396

10.5 套接字API系统调用的实现397

10.5.1 系统调用简述397

10.5.2 套接字API系统调用的实现398

10.6 创建套接字403

10.6.1 sock_create函数创建套接字404

10.6.2 协议族套接字创建函数的管理406

10.6.3 AF_INET套接字的创建407

10.7 I/O系统调用和套接字408

10.8 本章总结409

第11章 应用层——网络应用套接字编程411

11.1 套接字描述符413

11.1.1 family参数413

11.1.2 type参数413

11.1.3 protocol参数414

11.1.4 AF_XXX与PF_XXX形式的常数414

11.2 地址格式416

11.2.1 字节顺序416

11.2.2 地址结构417

11.2.3 支持地址格式转换的函数419

11.2.4 获取网络配置信息419

11.2.5 编程示例423

11.2.6 将地址与套接字绑定426

11.3 套接字连接427

11.3.1 connect函数分析427

11.3.2 服务器套接字建立侦听队列428

11.3.3 建立套接字连接429

11.4 数据的传送430

11.4.1 send函数430

11.4.2 传送数据的函数431

11.4.3 接收数据的函数432

11.4.4 recvfrom、recvmsg函数432

11.4.5 编程示例433

11.5 套接字选项441

11.5.1 设置套接字选项441

11.5.2 读取套接字选项442

11.6 out-of-band数据443

11.7 非阻塞和异步I/O操作444

11.8 本章总结444

第12章 嵌入式系统网络应用技术445

12.1 嵌入式系统的设计要素445

12.2 嵌入式系统开发环境的构成445

12.2.1 硬件构成446

12.2.2 典型的硬件开发环境447

12.2.3 软件交叉平台开发环境448

12.2.4 嵌入式软件的开发步骤448

12.3 将网络设备驱动程序加入内核450

12.3.1 配置新网络设备450

12.3.2 编译新驱动程序451

12.4 内核配置452

12.4.1 目标硬件及内核、库配置452

12.4.2 内核组件配置454

12.4.3 应用配置459

12.5 集成应用程序并下载至目标板460

12.5.1 集成应用程序460

12.5.2 将执行文件下载至目标板461

12.6 本章总结462

热门推荐