编辑推荐
1. 这是一本智能路由器开发的必读指南。
2. 本书以理论和实际相结合,以virtualBox来讲解,没有智能路由设备的开发者也可学习实践。
3. 以代码为基础进行讲解,代码放在国内托管网站上供大家自由下载。
4. 本书提供进一步深入阅读的参考资料链接,读者可以进一步深入学习。
内容简介
OpenWrt是在实现路由器功能方面很受欢迎的开源软件之一。本书基于OpenWrt,详细介绍了智能路由器的开发。
本书共计15章,按照认识路由器的顺序进行编写,介绍了智能路由器、开发环境及编译分析、OpenWrt包管理系统、OpenWrt配置、软件开发、GDB调试、网络基础知识、路由器基础软件模块、常用软件模块、IP路由、DNS与DHCP、iptables防火墙、UCI防火墙、UPnP、网络测试及分析工具等。丰富的理论知识和代码示例可以帮助读者深入认识和理解OpenWrt技术,并能够提升开发水平和开发效率。
本书适合软件架构师、软件开发工程师、软件测试工程师以及计算机相关专业的学生阅读。读者通过阅读本书,不仅可以掌握OpenWrt技术,还能进一步提升自己的软件开发水平。
作者简介
张永智,1979年出生于山西省临猗县,本科毕业于太原理工大学,并于中国科学院大学取得硕士学位。曾在联想、中国数码、畅讯、山石等公司从事各种软件研发工作。在研发岗位上,他参与了TPM安全芯片、拯救系统、OpenOffice、网络感知与流控系统、可视IP电话、路由协议、防火墙、HTTP代理和VPN等功能的开发,并曾在中国数码担任研发经理,负责多个项目的研发工作。现就职于北京邦天信息技术有限公司,负责防火墙、VPN等功能的开发。
他长期致力于搭建并维护OpenWrt的代码搜索服务,网址为openwrt.bjbook.net/source。除此之外,他还作为开源项目Frog的发起人,对中国人口普查数据进行研究。该项目对2010年第六次人口普查数据进行程序算法分析,预测中国人口将在2021年左右达到高峰,以后中国人口数量将逐年下降。
李章明,1986年出生于山西省昔阳县,2009年毕业于河北科技师范学院计算机科学与技术专业。曾在华为、德信无线等公司从事通信设备研发工作。并参与过机顶盒,CDMA基站、CDMA固定台、路由器、交换机、防火墙、VPN等设备的功能开发。现就职于鹏博士电信传媒集团,负责智能家居、物联网设备、SDN项目的开发。
目录
第1章 智能路由器概述 1
1.1 OpenWrt简介 1
1.2 整体功能组件 3
1.2.1 整体架构 3
1.2.2 网络功能 5
1.2.3 系统管理 5
1.2.4 状态监控 6
1.3 开源嵌入式操作系统比较 7
1.3.1 和Android比较 9
1.3.2 和其他WRT比较 10
1.4 参考资料 12
第2章 开发环境及编译分析 13
2.1 安装编译环境 13
2.1.1 Ubuntu安装 13
2.1.2 安装编译工具 15
2.1.3 下载代码 17
2.1.4 配置及编译 19
2.2 编译脚本分析 27
2.2.1 顶层目录概述 27
2.2.2 编译脚本 29
2.2.3 下载工具 29
2.2.4 patch-kernel.sh 30
2.2.5 编译扩展机制feeds 31
2.3 使用VirtualBox部署 34
2.4 编译部署出现问题的解决方法 37
2.5 VirtualBox虚拟机网络设置 38
2.5.1 网络地址转换模式 39
2.5.2 桥接网络模式 40
2.5.3 内部网络模式 41
2.5.4 仅主机网络模式 41
2.5.5 网络模式比较 42
2.5.6 组建路由器实验环境 42
2.6 参考资料 43
第3章 OpenWrt包管理系统 44
3.1 工作原理 44
3.2 OPKG命令 45
3.2.1 命令用法 45
3.2.2 软件包的管理 46
3.2.3 查询信息 48
3.2.4 选项 49
3.3 OPKG配置 50
3.3.1 调整软件仓库地址 50
3.3.2 调整安装目录 51
3.3.3 代理设置 51
3.4 使用举例 52
3.4.1 安装软件包 52
3.4.2 查询已安装的OPKG
软件包文件列表 53
3.4.3 自定义安装目录 53
3.5 OPKG包结构 55
3.6 参考资料 57
第4章 OpenWrt配置 58
4.1 UCI简介 58
4.1.1 文件语法 58
4.1.2 统一配置原理 60
4.1.3 UCI工具 61
4.1.4 配置脚本 66
4.2 UCI API编程接口 68
4.2.1 Libubox 69
4.2.2 UCI 69
4.2.3 UCI API接口 70
4.3 系统内核设置 71
4.3.1 sysctl.conf 71
4.3.2 sysctl 72
4.4 系统配置 73
4.4.1 /etc/rc.local 74
4.4.2 /etc/profile 74
4.4.3 /etc/shells 75
4.4.4 /etc/fstab 75
4.4.5 /etc/services 76
4.4.6 /etc/protocols 77
4.5 名词解释 78
4.6 参考资料 78
第5章 软件开发 79
5.1 编译构建系统 79
5.1.1 概述 79
5.1.2 变量定义 85
5.1.3 软件包定义 87
5.1.4 构建 88
5.2 HelloWorld 89
5.2.1 目录结构 91
5.2.2 Makefile 92
5.2.3 编译 94
5.3 软件启动机制 95
5.4 补丁生成及应用工具 99
5.4.1 补丁 99
5.4.2 diff工具 100
5.4.3 patch工具 102
5.5 参考资料 104
第6章 GDB调试 105
6.1 什么是GDB 105
6.2 如何启动程序调试 106
6.2.1 使用GDB启动程序 106
6.2.2 环境变量设置 107
6.2.3 设置日志文件 108
6.2.4 获取帮助 108
6.2.5 命令总结 109
6.3 断点管理 110
6.3.1 指令断点管理 110
6.3.2 观察点管理 112
6.3.3 捕获点管理 113
6.3.4 单步调试 113
6.3.5 命令总结 114
6.4 查看程序运行状态 115
6.4.1 查看栈帧信息 115
6.4.2 查看运行中的源程序
信息 117
6.4.3 查看运行时数据 117
6.4.4 命令总结 119
6.5 动态改变——改变程序的执行 120
6.6 名词解释 121
6.7 参考资料 121
第7章 网络基础知识 122
7.1 概述 122
7.1.1 网络设备 123
7.1.2 计算机网络分类 124
7.2 数据链路层 124
7.2.1 以太网 124
7.2.2 MAC寻址 125
7.2.3 冲突和冲突域 125
7.2.4 广播域 126
7.2.5 ARP协议 126
7.3 IP协议 127
7.3.1 IP报文格式 127
7.3.2 IP地址分类 129
7.3.3 协议功能 131
7.4 ICMP 132
7.4.1 概述 132
7.4.2 报文格式 133
7.4.3 差错报文 134
7.4.4 查询报文及响应报文 135
7.4.5 ping 136
7.4.6 TraceRoute 137
7.5 传输层协议 137
7.6 综合 138
7.7 名词解释 141
7.8 参考资料 141
第8章 路由器基础软件模块 143
8.1 libubox 143
8.1.1 libubox 143
8.1.2 jshn 145
8.2 ubus 147
8.2.1 ubusd 148
8.2.2 ubus命令行工具 149
8.3 netifd 152
8.3.1 概述 152
8.3.2 netifd方法 154
8.3.3 netifd文件 158
8.3.4 网络配置 159
8.4 ubox 160
8.5 procd 163
8.5.1 reload_config 164
8.5.2 procd进程 164
8.5.3 procd.sh 167
8.5.4 rc.common 169
8.5.5 综合示例 170
8.6 参考资料 172
第9章 常用软件模块 173
9.1 CWMP 173
9.1.1 概述 173
9.1.2 方法和流程 174
9.1.3 如何配置 176
9.2 SSH服务器 177
9.2.1 概述 177
9.2.2 配置 177
9.3 QoS 178
9.3.1 服务模型 178
9.3.2 QoS配置 180
9.4 uHTTPd服务器 181
9.4.1 概述 181
9.4.2 配置 182
9.5 SMTP 183
9.6 NTP 184
9.7 PPPoE 185
9.7.1 CHAP验证过程 186
9.7.2 PPPoE配置 188
9.8 无线基础 188
9.8.1 什么是无线 188
9.8.2 优点 188
9.8.3 缺点 188
9.8.4 安全 189
9.8.5 认识OpenWrt无线
接口 189
9.8.6 OpenWrt无线配置 191
9.9 参考资料 192
第10章 IP路由 194
10.1 路由分类 194
10.2 单播路由 195
10.2.1 路由表管理 195
10.2.2 静态路由配置 198
10.3 策略路由 199
10.3.1 概述 199
10.3.2 配置策略路由 200
10.3.3 典型配置举例 203
10.4 组播路由 205
10.4.1 组播原理 205
10.4.2 IGMP原理 207
10.4.3 IGMP代理 207
10.4.4 IGMP Proxy管理 209
10.4.5 验证及调试 210
10.5 名词解释 211
10.6 参考资料 212
第11章 DNS与DHCP 213
11.1 主机系统 213
11.2 DNS基础 215
11.2.1 域名结构 215
11.2.2 DNS报文格式 216
11.2.3 域名解析器原理 217
11.2.4 域名解析实例 218
11.3 DHCP基础 220
11.3.1 引言 220
11.3.2 DHCP原理 220
11.3.3 DHCP报文 221
11.3.4 DHCP工作流程 222
11.4 dnsmasq 223
11.4.1 概述 223
11.4.2 配置 224
11.5 动态DNS 228
11.5.1 DDNS原理 228
11.5.2 DDNS配置 229
11.5.3 DNS更新协议及
算法 230
11.6 DNS测试工具 232
11.6.1 nslookup 232
11.6.2 dig 232
11.7 参考资料 234
第12章 iptables防火墙 235
12.1 防火墙概述 235
12.2 iptables中的表 236
12.2.1 filter(过滤表) 236
12.2.2 nat(网络地址转换表) 237
12.2.3 mangle(修改表) 237
12.2.4 raw(原始表) 238
12.3 处理目标 238
12.3.1 REJECT(拒绝) 239
12.3.2 DNAT(目的网络地址
转换) 240
12.3.3 SNAT(源网络地址转换) 240
12.3.4 MASQUERADE(伪装) 241
12.3.5 LOG 241
12.3.6 REDIRECT 241
12.4 报文处理流程 242
12.5 报文规则匹配 245
12.6 管理防火墙规则 247
12.7 其他工具集 249
12.8 小结 250
12.9 参考资料 250
第13章 UCI防火墙 251
13.1 概述 251
13.2 防火墙配置 252
13.2.1 Defaults 252
13.2.2 Zones-安全域 253
13.2.3 转发 253
13.2.4 重定向 254
13.2.5 规则 255
13.2.6 include 257
13.3 常见用法 258
13.3.1 MAC地址黑白
名单 258
13.3.2 家长控制 260
13.4 防火墙管理及调试 261
13.4.1 管理防火墙 261
13.4.2 测试防火墙 262
13.5 名词解释 263
13.6 参考资料 263
第14章 UPnP 264
14.1 UPnP简介 264
14.1.1 起源 264
14.1.2 概述 264
14.2 UPnP架构 265
14.2.1 UPnP协议术语 265
14.2.2 UPnP组件 266
14.3 UPnP协议 267
14.4 UPnP工作流程 268
14.4.1 寻址 268
14.4.2 发现 269
14.4.3 描述 269
14.4.4 控制 270
14.4.5 事件 270
14.4.6 表达 272
14.5 UPnP应用之IGD 272
14.5.1 IGD框架 272
14.5.2 端口映射在IGD中的应用 274
14.6 参考资料 277
第15章 网络测试及分析工具 278
15.1 NetCat 278
15.2 TcpDump 283
15.2.1 抓取报文 283
15.2.2 匹配规则 285
15.2.3 使用举例 287
15.3 参考资料 288
智能路由器开发指南 下载 mobi epub pdf txt 电子书 格式