Linux从入门到精通

第1篇 基 础 篇.
第1章 Linux概述 2
1.1 Linux的起源和发展 2
1.1.1 Linux的起源 2
1.1.2 追溯到UNIX 2
1.1.3 影响世界的开源潮流 3
1.1.4 GNU公共许可证:GPL 4
1.2 为什么选择Linux 4
1.2.1 作为服务器 4
1.2.2 作为桌面 5
1.3 Linux的发行版本 5
1.3.1 不同的发行版本 5
1.3.2 哪种发行版本最好 7
1.3.3 本书选择的发行版本 7
1.4 Internet上的Linux资源 9
1.5 小结 9
第2章 Linux安装 11
2.1 安装前的准备工作 11
2.1.1 我能从哪里获得Linux 11
2.1.2 硬件要求 11

.2.1.3 与Windows“同处一室” 12
2.1.4 虚拟机的使用 12
2.1.5 免费的虚拟机软件:VMware Server 13
2.2 安装Linux至硬盘 14
2.2.1 第一步:从光驱启动 14
2.2.2 关于硬盘分区 15
2.2.3 选择软件包 19
2.2.4 设置用户和口令 20
2.2.5 第一次启动 20
2.3 获取帮助信息 21
2.4 进阶:修复受损的Grub 21
2.4.1 Windows惹的祸 22
2.4.2 使用救援光盘 22
2.4.3 重新安装Grub 23
2.5 小结 24
第3章 Linux基本配置 26
3.1 关于超级用户root 26
3.1.1 root可以做什么 26
3.1.2 避免灾难 27
3.1.3 Debian和Ubuntu的root用户 27
3.2 依赖于发行版本的系统管理工具 28
3.3 中文支持 29
3.4 关于硬件驱动程序 30
3.5 获得更新 31
3.6 进阶:配置Grub 31
3.6.1 Grub的配置文件 31
3.6.2 使用Grub命令行 33
3.7 小结 34
第4章 桌面环境 35
4.1 快速熟悉你的工作环境 35
4.1.1 运行应用程序 35
4.1.2 浏览文件系统 35
4.1.3 创建一个文本文件 35
4.2 个性化设置 37
4.2.1 桌面背景和字体 38
4.2.2 屏幕保护程序 39
4.2.3 显示器分辨率 40
4.2.4 代理服务器 40
4.2.5 鼠标和键盘 41
4.2.6 键盘快捷键 42
4.2.7 登录界面 43
4.3 进阶1:究竟什么是“桌面” 43
4.3.1 可以卸载的图形环境 43
4.3.2 X窗口系统的基本组成 44
4.3.3 X系统的启动过程 45
4.3.4 启动X应用程序 45
4.3.5 桌面环境:KDE和Gnome谁更好 46
4.4 进阶2:配置X服务器 47
4.4.1 理解配置文件 47
4.4.2 配置显卡 48
4.4.3 配置显示器 48
4.4.4 联系显卡和显示器 48
4.4.5 如果显示出了问题 49
4.5 小结 49
第2篇 系统管理篇
第5章 Shell基本命令 52
5.1 Shell简介 52
5.2 印刷约定 52
5.3 快速上手:浏览你的硬盘 53
5.4 提高效率:使用命令行补全和通配符 54
5.5 查看目录和文件 56
5.5.1 显示当前目录:pwd 56
5.5.2 改变目录:cd 56
5.5.3 列出目录内容:ls 57
5.5.4 列出目录内容:dir和vdir 58
5.5.5 查看文本文件:cat和more 59
5.5.6 阅读文件的开头和结尾:head和tail 60
5.5.7 更好的文本阅读工具:less 61
5.5.8 查找文件内容:grep 62
5.6 我的东西在哪——find命令 63
5.7 更快速地定位文件——locate命令 64
5.8 从终端运行程序 65
5.9 查找特定程序:whereis 65
5.10 用户及版本信息查看 65
5.11 寻求帮助——man命令 66
5.12 获取命令简介:whatis和apropos 67
5.13 小结 68
第6章 文件目录管理 69
6.1 Linux文件系统的架构 69
6.2 快速上手:和你的团队共享文件 70
6.3 建立文件和目录 71
6.3.1 建立目录:mkdir 71
6.3.2 建立一个空文件:touch 72
6.4 移动、复制和删除 72
6.4.1 移动和重命名:mv 72
6.4.2 复制文件和目录:cp 74
6.4.3 删除目录和文件:rmdir和rm 74
6.5 文件和目录的权限 75
6.5.1 权限设置针对的用户 75
6.5.2 需要设置哪些权限 76
6.5.3 查看文件和目录的属性 76
6.5.4 改变文件所有权:chown和chgrp 77
6.5.5 改变文件权限:chmod 78
6.5.6 文件权限的八进制表示 79
6.6 文件类型 79
6.6.1 查看文件类型 80
6.6.2 建立链接:ln 80
6.7 输入输出重定向和管道 82
6.7.1 输出重定向 82
6.7.2 输入重定向 83
6.7.3 管道:

Linux环境C程序设计

目录回到顶部↑

第1篇 Linux基础.
第1章 Linux系统概述和安装 2
1.1 引言 2
1.1.1 GNU项目简介 2
1.1.2 Linux起源 2
1.1.3 Linux发展现状 3
1.1.4 免费软件与开源软件 4
1.2 Linux内核与版本 4
1.2.1 Linux内核介绍 4
1.2.2 Linux所支持的硬件平台 5
1.2.3 常用Linux版本 5
1.3 系统安装 6
1.3.1 安装前准备 7
1.3.2 系统需求 7
1.3.3 硬盘分区 7
1.3.4 图形方式安装Linux 8
1.3.5 升级最新内核 16
1.3.6 安装中文支持 16
1.4 小结 16
第2章 Linux基本操作 17

.2.1 登录 17
2.1.1 shell程序 17
2.1.2 控制台 17
2.1.3 终端 18
2.2 文件和目录 18
2.2.1 文件系统 19
2.2.2 文件名 20
2.2.3 路径名 20
2.2.4 工作目录 21
2.2.5 起始目录 21
2.3 输入和输出 21
2.3.1 文件描述符 21
2.3.2 标准输入、标准输出和标准错误 21
2.3.3 标准输入输出函数 22
2.4 小结 22
第3章 Linux GCC/G++编译器与调试器 23
3.1 GCC/G++编译器 23
3.1.1 GCC/G++编译器安装 23
3.1.2 GCC/G++编译命令 23
3.1.3 GCC/G++编译选项 24
3.1.4 GCC/G++编译器执行过程 24
3.2 程序和进程 25
3.2.1 程序 25
3.2.2 进程和PID 25
3.3 ANSI C标准 25
3.3.1 函数原型 26
3.3.2 类属指针 26
3.3.3 原始系统数据类型 26
3.4 编译hello world 26
3.4.1 使用VI编写源代码 27
3.4.2 程序的编译与连接 27
3.4.3 使用终端运行程序 28
3.5 GDB调试器 28
3.5.1 GDB调试器概述 28
3.5.2 GDB调试器安装 28
3.5.3 GDB常用调试命令 29
3.5.4 在GDB下运行程序 29
3.5.5 检查数据 29
3.6 小结 30
第4章 Linux开发环境 31
4.1 文本编辑工具 31
4.1.1 VIM使用方法 31
4.1.2 Emacs使用方法 32
4.2 集成开发环境 33
4.2.1 Eclipse介绍 33
4.2.2 Kdevelop介绍 33
4.3 使用Eclipse开发C/C++语言程序 34
4.3.1 安装与配置Eclipse 34
4.3.2 Eclipse界面 34
4.3.3 编译与运行源代码 35
4.3.4 Debug源代码 36
4.4 小结 37
第2篇 C/C++语言基础
第5章 C语言编程基础 40
5.1 程序设计语言的发展 40
5.1.1 机器语言 40
5.1.2 汇编语言 40
5.1.3 高级语言 40
5.2 C语言的特点 41
5.2.1 C语言是中级语言 41
5.2.2 C语言是结构化语言 42
5.2.3 C语言是程序员的语言 42
5.3 C语言的程序结构 42
5.3.1 基本程序结构 43
5.3.2 函数库和链接 44
5.3.3 开发一个C语言程序 45
5.3.4 C语言的关键字 45
5.4 算法 46
5.4.1 流程图与算法的结构化描述 46
5.4.2 用N-S图描述算法 48
5.4.3 用PAD图描述算法 48
5.5 软件工程概览 48
5.5.1 认识软件工程 48
5.5.2 瀑布模型及其改进 50
5.5.3 迭代发布模型 50
5.5.4 朴素软件工程思想 51
5.6 小结 52
第6章 数据类型、运算符和表达式 53
6.1 C语言的数据类型 53
6.1.1 基本类型的字长与范围 53
6.1.2 聚合类型与修饰符 54
6.2 常量与变量 55
6.2.1 标识符命名 55
6.2.2 常量 55
6.2.3 变量 56
6.3 整型数据 56
6.3.1 整型常量 57
6.3.2 整型变量 57
6.4 浮点型数据 58
6.4.1 浮点型常量 58
6.4.2 浮点型变量 58
6.5 字符型数据 58
6.5.1 字符常量 59
6.5.2 字符串常量 59
6.5.3 转义字符 59
6.5.4 符号常量 60
6.5.5 字符变量 60
6.6 运算符 61
6.6.1 算术运算符 61
6.6.2 自增和自减 61
6.6.3 关系和逻辑运算符 62
6.6.4 位操作符 63
6.6.5 问号操作符 63
6.6.6 逗号操作符 64
6.6.7 优先级 64
6.7 表达式 65
6.7.1 表达式中的类型转换 65
6.7.2 构成符cast 65
6.7.3 空格与括号 65
6.7.4 C语言中的简写形式 66
6.8 C语言的预处理命令 66
6.8.1 宏替换命令 66
6.8.2 终止编译命令 67
6.8.3 文件包含命令 67
6.8.4 条件编译命令 68
6.8.5 修改行号命令 69
6.8.6 编译指示命令 70
6.8.7 预定义的宏名 70
6.8.8 注释 71
6.9 小结 71
第7章 程序控制结构 72
7.1 程序的3种基本结构 72
7.2 数据的输入与输出 72
7.2.1 scanf()函数 72
7.2.2 printf()函数 74
7.2.3 getchar()函数与putchar()函数 75
7.3 条件控制语句 76
7.3.1 if语句 76
7.3.2 switch语句 77
7.4 循环控制语句 78
7.4.1 while语句 78
7.4.2 do-while语句 79
7.4.3 for语句 80
7.4.4 break与continue语句 80
7.5 媒体播放器——建立程序结构 81
7.5.1 编写伪代码 82
7.5.2 建立媒体播放器程序结构 82
7.6 小结 85
第8章 数组与指针 86
8.1 一维数组 86
8.1.1 一维数组的一般形式 86
8.1.2 字符串使用的一维数组 88
8.2 二维数组 89
8.2.1 二维数组的一般形式 89
8.2.2 二维字符串数组 89
8.3 多维数组 90
8.4 指针与指针变量 91
8.5 指针变量的定义与引用 92
8.5.1 指针变量的定义 92
8.5.2 指针变量的引用 93
8.6 指针与数组 94
8.6.1 指针与一维数组 94
8.6.2 指针与二维数组 95
8.6.3 指针与字符串数组 96
8.7 指针的地址分配 96
8.8 指针数组 97
8.9 指向指针的指针 97
8.10 媒体播放器——建立播放列表 98
8.10.1 建立一个播放列表 98
8.10.2 对播放列表排序 103
8.11 小结 104
第9章 函数 105
9.1 函数说明与返回值 105
9.1.1 函数的类型说明 105
9.1.2 返回语句 106
9.2 函数的作用域规则 107
9.2.1 局部变量 107
9.2.2 全局变量 108
9.2.3 动态存储变量 109
9.2.4 静态存储变量 110
9.3 函数的调用与参数 110
9.3.1 形式参数与实际参数 110
9.3.2 赋值调用与引用调用 111
9.4 递归 111
9.5 实现问题 112
9.5.1 参数和通用函数 113
9.5.2 效率 113
9.6 函数库和文件 113
9.6.1 程序文件的大小 114
9.6.2 分类组织文件 114
9.6.3 函数库 115
9.7 main()函数的参数 116
9.8 媒体播放器——建立核心控制模块 117
9.8.1 通过函数传递参数 117
9.8.2 建立媒体播放器核心控制模块 120
9.9 小结 124
第10章 字符及字符串处理 125
10.1 字符编码 125
10.1.1 ASCII编码 125
10.1.2 Unicode编码 126
10.2 字符处理库 126
10.3 字符串转换函数 127
10.4 字符串处理函数 129
10.5 字符串比较函数 130
10.6 字符串查找函数 131
10.7 字符串内存函数 132
10.8 字符串其他函数 134
10.9 媒体播放器——实现播放列表检索功能 134
10.9.1 对播放列表中整个字符串进行排序 134
10.9.2 在播放列表中查找字符串 135
10.10 小结 140
第11章 结构体与共用体 141
11.1 结构体类型变量的定义和引用 141
11.1.1 结构体类型变量的定义 141
11.1.2 结构体类型变量的引用 142
11.1.3 结构体类型变量的初始化 143
11.2 结构体数组的定义和引用 144
11.3 结构体指针的定义和引用 144
11.3.1 指向结构体类型变量的使用 145
11.3.2 指向结构体类型数组的指针的使用 145
11.4 共用体 146
11.4.1 共用体的定义 146
11.4.2 共用体变量的引用 147
11.5 媒体播放器——建立媒体库 148
11.5.1 设计媒体库中的数据结构 148
11.5.2 媒体库的基本操作 151
11.5.3 添加文件到媒体库 153
11.5.4 在媒体库中查找文件 155
11.5.5 从媒体库删除选定文件 157
11.5.6 从媒体库删除所有文件 158
11.6 小结 158
第12章 C++语言编程基础 159
12.1 类和数据抽象 159
12.1.1 用类实现数据抽象 159
12.1.2 类作用域和访问类成员 161
12.1.3 从实现中分离接口 161
12.1.4 控制访问成员 162
12.1.5 构造函数和析构函数 162
12.1.6 const对象和const成员函数 163
12.1.7 friend对象和friend类 163
12.1.8 this指针 165
12.1.9 动态内存分配 165
12.1.10 static类成员 165
12.2 C++特性 166
12.2.1 运算符重载 166
12.2.2 继承 167
12.2.3 虚拟函数和多态性 168
12.2.4 流输入与输出 169
12.2.5 模板 169
12.2.6 异常处理 170
12.3 小结 170
第3篇 Linux系统编程
第13章 文件操作 172
13.1 文件属性与权限 172
13.1.1 文件属性 172
13.1.2 文件权限 173
13.1.3 管理文件权限 173
13.2 文件管理 174
13.2.1 系统调用原理 174
13.2.2 打开文件、新建文件和关闭文件操作 174
13.2.3 文件状态和属性操作 177
13.2.4 目录操作 179
13.2.5 删除目录或文件操作 181
13.2.6 错误处理 182
13.3 媒体播放器——增强媒体库功能 182
13.3.1 添加目录到媒体库 183
13.3.2 搜索本地磁盘中所有媒体文件 184
13.4 小结 184
第14章 文件I/O操作 185
14.1 非缓冲文件操作 185
14.1.1 使用read()读取文件 185
14.1.2 使用write()写入文件 186
14.1.3 随机读写文件 187
14.2 缓冲文件操作 188
14.2.1 打开与关闭文件流 188
14.2.2 读取与写入文件流 189
14.2.3 文件流的格式化输入与输出 191
14.2.4 文件流的定位操作 192
14.2.5 文件流操作的其他函数 193
14.2.6 文件流操作的错误处理 193
14.3 媒体播放器——完善播放列表 194
14.3.1 读取播放列表文件 194
14.3.2 将播放列表保存为文件 196
14.4 小结 197
第15章 进程控制 198
15.1 进程的基本概念 198
15.1.1 进程状态和状态转换 199
15.1.2 进程控制 201
15.1.3 进程调度 202
15.2 进程基本操作 202
15.2.1 fork系统调用 202
15.2.2 exec系统调用 204
15.2.3 exit系统调用 205
15.2.4 wait系统调用 206
15.2.5 sleep函数调用 207
15.3 进程的特殊操作 207
15.3.1 获得进程ID 207
15.3.2 setuid和setgid系统调用 208
15.3.3 setpgrp和setpgid系统调用 208
15.3.4 chdir系统调用 209
15.3.5 chroot系统调用 209
15.3.6 nice系统调用 209
15.4 小结 209
第16章 进程间通信 210
16.1 进程间使用管道通信 210
16.1.1 pipe系统调用 211
16.1.2 dup系统调用 212
16.2 进程间使用D-Bus通信 213
16.2.1 D-Bus的基本概念 213
16.2.2 D-Bus的用例 214
16.3 媒体播放器——完善退出和音量控制功能 217
16.3.1 媒体播放器在桌面环境退出时响应 217
16.3.2 调整系统音量 218
16.4 小结 220
第17章 线程控制 221
17.1 线程基本概念 221
17.2 线程的实现 221
17.2.1 用户态线程 222
17.2.2 内核态线程 222
17.3 POSIX线程库 222
17.3.1 创建线程 222
17.3.2 结束线程 223
17.4 同步 226
17.4.1 用信号量进行同步 226
17.4.2 用互斥量进行同步 228
17.5 取消线程 230
17.6 多线程的实现 231
17.7 小结 233
第4篇 Linux网络编程与数据库编程
第18章 网络编程基础 236
18.1 计算机网络组成 236
18.1.1 网络结构 236
18.1.2 OSI 参考模型 238
18.1.3 TCP/IP参考模型 238
18.2 TCP/IP协议.. 240
18.2.1 IP协议与Internet 240
18.2.2 IP互联网协议地址 241
18.2.3 TCP协议 242
18.2.4 UDP协议 243
18.3 Socket套接字 244
18.3.1 Socket套接字简介 244
18.3.2 创建套接字 245
18.3.3 套接字地址 246
18.3.4 套接字的名字 247
18.3.5 创建套接字队列 247
18.3.6 接受连接 248
18.3.7 请求连接 248
18.3.8 关闭连接 249
18.3.9 套接字通信 249
18.4 网络通信 251
18.4.1 查询主机名称 251
18.4.2 Internet守护进程 253
18.5 小结 254
第19章 网络编程函数库 255
19.1 HTTP与FTP函数库 255
19.1.1 libcurl函数库简介 255
19.1.2 libcurl中的主要函数 256
19.1.3 使用libcurl实现简单的HTTP访问 258
19.2 SMTP、POP与IMAP函数库 259
19.2.1 使用libESMTP函数库实现电子邮件发送 260
19.2.2 使用libspopc函数库实现POP访问 261
19.2.3 使用mailutils函数库实现IMAP访问 263
19.3 即时通信函数库 264
19.3.1 libpurple函数库简介 264
19.3.2 即时通信软件工作机制 264
19.3.3 使用libpurple函数库接入服务器 266
19.4 小结 272
第20章 数据库 273
20.1 数据的存储与访问 273
20.1.1 使用数据文件 273
20.1.2 使用数据库 277
20.2 Berkeley DB数据包 279
20.2.1 Berkeley DB数据包简介 279
20.2.2 Berkeley DB数据包连接和使用 282
20.2.3 Berkeley DB数据包访问 287
20.2.4 Berkeley DB数据包中的游标 289
20.3 PostgreSQL数据库服务器介绍 292
20.3.1 PostgreSQL基本概念 292
20.3.2 数据库连接函数 294
20.3.3 命令执行函数 299
20.3.4 检索查询结果函数 303
20.4 小结 306
第21章 Linux系统常用数据库及接口 307
21.1 SQLite数据库 307
21.1.1 SQLite简介 307
21.1.2 连接SQLite数据库 309
21.1.3 SQLite命令执行函数 312
21.1.4 SQLite检索查询结果函数 314
21.2 MySQL数据库 316
21.2.1 MySQL简介 316
21.2.2 连接MySQL数据库 318
21.2.3 查询MySQL数据库 321
21.2.4 处理MySQL查询结果 322
21.3 大型数据库与通用数据库接口 325
21.3.1 连接Oracle数据库 325
21.3.2 通用数据库接口 328
21.4 媒体播放器——媒体库的数据库实现 334
21.4.1 建立和连接数据库 335
21.4.2 建立媒体库数据表 336
21.4.3 管理媒体库数据表 337
21.5 小结 341
第5篇 Linux界面开发
第22章 界面开发基础 344
22.1 Linux常用桌面环境 344
22.1.1 GNOME桌面环境 344
22.1.2 KDE桌面环境 346
22.1.3 移动设备与HILDON桌面环境 348
22.2 GTK+图形环境介绍 349
22.3 GLib库介绍 350
22.3.1 基础类型 351
22.3.2 对核心应用的支持 351
22.3.3 实用功能 353
22.3.4 数据类型 353
22.4 GObject对象介绍 354
22.4.1 对象系统 355
22.4.2 GObject系统中宏定义 356
22.4.3 GTypeInfo结构 358
22.4.4 信号机制 359
22.5 2D图形引擎Cairo介绍 359
22.6 多媒体库GStreamer介绍 361
22.6.1 过滤器 362
22.6.2 衬垫 363
22.6.3 箱柜 365
22.6.4 精灵衬垫 366
22.7 搭建GTK+开发环境 367
22.8 小结 370
第23章 界面构件开发 371
23.1 常用界面构件 371
23.1.1 按钮构件 371
23.1.2 调整对象 374
23.1.3 范围构件 374
23.1.4 标签构件 375
23.1.5 箭头构件 376
23.1.6 工具提示对象 377
23.1.7 进度条 377
23.1.8 对话框 378
23.1.9 标尺 379
23.1.10 状态栏 381
23.1.11 文本输入构件 382
23.1.12 微调按钮 384
23.1.13 组合输入框 387
23.1.14 日历 389
23.1.15 颜色选择 391
23.1.16 文件选择 394
23.2 复合构件 396
23.2.1 快捷标签 396
23.2.2 绘图区 399
23.2.3 字体选择对话框 407
23.2.4 消息对话框 411
23.2.5 图像构件 413
23.2.6 文本视区 417
23.3 菜单构件 418
23.3.1 菜单栏 418
23.3.2 菜单构件 419
23.3.3 菜单项 421
23.3.4 图形菜单项 424
23.3.5 复选菜单项 426
23.3.6 单选菜单项 428
23.3.7 分隔菜单项 429
23.4 RC文件 429
23.4.1 使用RC文件 430
23.4.2 RC文件格式 431
23.5 小结 434
第24章 界面布局 435
24.1 界面布局基本概念 435
24.1.1 界面的宽度与高度 435
24.1.2 窗体基本组成 437
24.1.3 布局约定 439
24.2 组装盒构件 441
24.2.1 组装盒的原理 441
24.2.2 组装盒示范程序 442
24.2.3 表组装的原理 444
24.2.4 表组装示例 445
24.3 容器 447
24.3.1 事件盒 447
24.3.2 对齐构件 448
24.3.3 固定容器 450
24.3.4 布局容器 451
24.3.5 框架构件 453
24.3.6 比例框架 455
24.3.7 分栏窗体构件 456
24.3.8 视角构件 457
24.3.9 滚动条窗体 458
24.3.10 按钮盒 459
24.3.11 工具栏 462
24.3.12 笔记本 464
24.4 媒体播放器——实现界面 469
24.4.1 使用原型法设计媒体播放器界面 469
24.4.2 编写媒体播放器界面代码 472
24.5 小结 481
第25章 信号与事件处理 482
25.1 信号函数与回调函数 482
25.1.1 信号函数 482
25.1.2 回调函数 486
25.2 常用GTK+信号与事件 488
25.2.1 GtkObject类信号 488
25.2.2 GtkWidget界面构件信号 489
25.2.3 GtkWindow窗体构件信号 498
25.2.4 GtkContainer容器构件信号 499
25.2.5 GtkCalendar日历构件信号 499
25.2.6 GtkTextView文本视区构件信号 500
25.3 小结 501
第26章 Glade设计程序界面 502
26.1 Glade简介 502
26.2 构造图形界面 503
26.2.1 添加窗体 503
26.2.2 添加容器 509
26.2.3 添加构件 516
26.2.4 设置构件属性 519
26.2.5 添加事件和回调 520
26.3 C语言代码联编 522
26.3.1 libglade函数库编程基础 522
26.3.2 使用libglade多语言支持 524
26.4 小结 528
第6篇 Linux环境C编程项目实践
第27章 媒体播放器——项目完整实践 530
27.1 软件工程实战 530
27.1.1 项目需求分析 530
27.1.2 软件需求说明 531
27.1.3 项目视图的解决方案 532
27.2 软件设计 533
27.2.1 需求分析 533
27.2.2 制订开发计划 534
27.2.3 分工协作 535
27.3 版本控制 536
27.3.1 CVS服务器配置 536
27.3.2 CVS服务器管理 537
27.4 在Eclipse中使用CVS客户端 540
27.4.1 从CVS服务器签出模块并创建项目 541
27.4.2 签入文件 543
27.4.3 使用Eclipse项目创建CVS模块 544
27.4.4 比较文件 545
27.4.5 管理CVS服务器 545
27.4.6 断开项目与CVS服务器之间的关联 546
27.5 音量控制对话框 547
27.5.1 创建对话框 547
27.5.2 添加垂直比例尺 547
27.5.3 测试 548
27.6 播放列表对话框 550
27.6.1 创建对话框 550
27.6.2 创建工具条和工具条按钮 551
27.6.3 创建树视图 552
27.6.4 创建对话框按钮 553
27.6.5 测试 553
27.7 媒体库对话框 554
27.7.1 创建对话框 555
27.7.2 创建工具条和工具条按钮 555
27.7.3 创建分类部件和媒体信息显示部件 557
27.7.4 创建搜索部件 559
27.7.5 创建对话框按钮 559
27.7.6 测试 560
27.8 播放控制模块实现 562
27.8.1 播放控制模块程序结构 562
27.8.2 MP3播放功能实现 564
27.8.3 播放中的回调处理 567
27.9 系统集成 569
27.10 主程序文件实现 570
27.10.1 头文件和主函数入口 570
27.10.2 媒体库模块初始化 571
27.10.3 图形界面初始化 571
27.10.4 退出前清理 572
27.10.5 编译和运行 572
27.11 媒体库功能集成 572
27.11.1 初始化 573
27.11.2 显示媒体库对话框 573
27.11.3 添加文件 580
27.11.4 添加目录 582
27.11.5 删除文件信息 584
27.11.6 删除所有文件信息 585
27.11.7 搜索本地文件 586
27.11.8 传递到播放列表 587
27.11.9 查找 589
27.12 播放列表功能集成 590
27.12.1 初始化 590
27.12.2 显示播放列表对话框 591
27.12.3 添加文件 593
27.12.4 添加目录 595
27.12.5 打开文件 596
27.12.6 保存文件 597
27.12.7 删除文件 598
27.12.8 删除全部 600
27.12.9 排序 600
27.13 播放控制模块集成 601
27.13.1 播放模式设置 601
27.13.2 开始播放 602
27.13.3 暂停播放 603
27.13.4 停止播放 603
27.13.5 播放上一首 603
27.13.6 播放下一首 604
27.14 小结... 605

Linux网络编程

目录回到顶部↑

第1篇 Linux网络开发基础.
第1章 Linux操作系统概述 2
1.1 Linux发展历史 2
1.1.1 Linux的诞生和发展 2
1.1.2 Linux名称的由来 3
1.2 Linux的发展要素 3
1.2.1 UNIX操作系统 4
1.2.2 Minix操作系统 4
1.2.3 POSIX 标准 4
1.3 Linux与UNIX的异同 5
1.4 操作系统类型选择和内核版本的选择 5
1.4.1 常见的不同公司发行的Linux异同 6
1.4.2 内核版本的选择 6
1.5 Linux的系统架构 7
1.5.1 Linux内核的主要模块 7
1.5.2 Linux的文件结构 9
1.6 GNU通用公共许可证 10
1.6.1 GPL许可证的历史 10
1.6.2 GPL的自由理念 10
1.6.3 GPL的基本条款 11

.1.6.4 关于GPL许可证的争议 12
1.7 Linux软件开发的可借鉴之处 12
1.8 小结 13
第2章 Linux编程环境 14
2.1 Linux环境下的编辑器 14
2.1.1 vim使用简介 14
2.1.2 使用vim建立文件 15
2.1.3 使用vim编辑文本 16
2.1.4 vim的格式设置 18
2.1.5 vim配置文件.vimrc 19
2.1.6 使用其他编辑器 19
2.2 Linux下的GCC编译器工具集 19
2.2.1 GCC简介 19
2.2.2 编译程序的基本知识 21
2.2.3 单个文件编译成执行文件 22
2.2.4 编译生成目标文件 22
2.2.5 多文件编译 23
2.2.6 预处理 24
2.2.7 编译成汇编语言 24
2.2.8 生成和使用静态链接库 25
2.2.9 生成动态链接库 26
2.2.10 动态加载库 29
2.2.11 GCC常用选项 31
2.2.12 编译环境的搭建 33
2.3 Makefile文件简介 34
2.3.1 一个多文件的工程例子 34
2.3.2 多文件工程的编译 36
2.3.3 Makefile的规则 37
2.3.4 Makefile中使用变量 39
2.3.5 搜索路径 43
2.3.6 自动推导规则 44
2.3.7 递归make 44
2.3.8 Makefile中的函数 46
2.4 用GDB调试程序 47
2.4.1 编译可调试程序 48
2.4.2 使用GDB调试程序 49
2.4.3 GDB常用命令 52
2.4.4 其他的GDB 59
2.5 小结 60
第3章 文件系统简介 61
3.1 Linux下的文件系统 61
3.1.1 Linux下文件的内涵 61
3.1.2 文件系统的创建 62
3.1.3 挂接文件系统 64
3.1.4 索引节点inode 65
3.1.5 普通文件 66
3.1.6 设备文件 66
3.1.7 虚拟文件系统VFS 68
3.2 文件的通用操作方法 72
3.2.1 文件描述符 72
3.2.2 打开创建文件open()、create()函数 72
3.2.3 关闭文件close()函数 76
3.2.4 读取文件read()函数 77
3.2.5 写文件write()函数 79
3.2.6 文件偏移lseek()函数 80
3.2.7 获得文件状态fstat()函数 83
3.2.8 文件空间映射mmap()函数 85
3.2.9 文件属性fcntl()函数 88
3.2.10 文件输入输出控制ioctl()函数 92
3.3 socket文件类型 93
3.4 小结 93
第4章 程序、进程和线程 94
4.1 程序、进程和线程的概念 94
4.1.1 程序和进程的差别 94
4.1.2 Linux环境下的进程 95
4.1.3 进程和线程 96
4.2 进程产生的方式 96
4.2.1 进程号 96
4.2.2 进程复制fork() 97
4.2.3 system()方式 98
4.2.4 进程执行exec()函数系列 99
4.2.5 所有用户态进程的产生进程init 100
4.3 进程间通信和同步 101
4.3.1 半双工管道 101
4.3.2 命名管道 107
4.3.3 消息队列 108
4.3.4 消息队列的一个例子 114
4.3.5 信号量 116
4.3.6 共享内存 121
4.3.7 信号 124
4.4 Linux下的线程 127
4.4.1 多线程编程实例 127
4.4.2 Linux下线程创建函数pthread_create() 129
4.4.3 线程的结束函数pthread_join()和pthread_exit() 129
4.4.4 线程的属性 130
4.4.5 线程间的互斥 132
4.4.6 线程中使用信号量 133
4.5 小结 136
第2篇 Linux用户层网络编程
第5章 TCP/IP协议族简介 138
5.1 OSI网络分层介绍 138
5.1.1 OSI网络分层结构 138
5.1.2 OSI的7层网络结构 139
5.1.3 OSI参考模型中的数据传输 140
5.2 TCP/IP协议栈 141
5.2.1 TCP/IP协议栈参考模型 141
5.2.2 主机到网络层协议 143
5.2.3 IP协议 144
5.2.4 网际控制报文协议(ICMP) 146
5.2.5 传输控制协议(TCP) 150
5.2.6 用户数据报文协议(UDP) 154
5.2.7 地址解析协议(ARP) 156
5.3 IP地址分类与TCP/UDP端口 158
5.3.1 因特网中IP地址的分类 159
5.3.2 子网掩码(subnet mask address) 161
5.3.3 IP地址的配置 162
5.3.4 端口 163
5.4 主机字节序和网络字节序 163
5.4.1 字节序的含义 164
5.4.2 网络字节序的转换 164
5.5 小结 166
第6章 应用层网络服务程序简介 167
6.1 HTTP协议和服务 167
6.1.1 HTTP协议概述 167
6.1.2 HTTP协议的基本过程 168
6.2 FTP协议和服务 170
6.2.1 FTP协议概述 170
6.2.2 FTP协议的工作模式 172
6.2.3 FTP协议的传输方式 172
6.2.4 一个简单的FTP过程 173
6.2.5 常用的FTP工具 173
6.3 TELNET协议和服务 174
6.3.1 远程登录的基本概念 174
6.3.2 使用TELNET协议进行远程登录的工作过程 174
6.3.3 TELNET协议 174
6.4 NFS协议和服务 176
6.4.1 安装NFS服务器和客户端 176
6.4.2 服务器端的设定 176
6.4.3 客户端的操作 177
6.4.4 showmount命令 177
6.5 自定义网络服务 177
6.5.1 xinetd/inetd 178
6.5.2 xinetd服务配置 178
6.5.3 自定义网络服务 179
6.6 小结 180
第7章 TCP网络编程基础 181
7.1 套接字编程基础知识 181
7.1.1 套接字地址结构 181
7.1.2 用户层和内核层交互过程 183
7.2 TCP网络编程流程 184
7.2.1 TCP网络编程架构 184
7.2.2 创建网络插口函数socket() 186
7.2.3 绑定一个地址端口对bind() 189
7.2.4 监听本地端口listen 192
7.2.5 接受一个网络请求accept() 194
7.2.6 连接目标网络服务器connect() 199
7.2.7 写入数据函数write() 200
7.2.8 读取数据函数read() 201
7.2.9 关闭套接字函数close() 201
7.3 服务器/客户端的简单例子 202
7.3.1 例子功能描述 202
7.3.2 服务器网络程序 203
7.3.3 服务器读取和显示字符串 205
7.3.4 客户端的网络程序 205
7.3.5 客户端读取和显示字符串 206
7.3.6 编译运行程序 206
7.4 截取信号的例子 207
7.4.1 信号处理 207
7.4.2 信号SIGPIPE 208
7.4.3 信号SIGINT 208
7.5 小结 208
第8章 服务器和客户端信息的获取 210
8.1 字节序 210
8.1.1 大端字节序和小端字节序 210
8.1.2 字节序转换函数 212
8.1.3 一个字节序转换的例子 214
8.2 字符串IP地址和二进制IP地址的转换 217
8.2.1 inet_xxx()函数 217
8.2.2 inet_pton()和inet_ntop()函数 219
8.2.3 使用8.2.1节地址转换函数的例子 220
8.2.4 使用函数inet_pton()和函数inet_ntop()的例子 223
8.3 套接字描述符判定函数issockettype() 223
8.3.1 进行文件描述符判定的函数issockettype() 224
8.3.2 main()函数 224
8.4 IP地址与域名之间的相互转换 225
8.4.1 DNS原理 225
8.4.2 获取主机信息的函数 226
8.4.3 使用主机名获取主机信息的例子 228
8.4.4 函数gethostbyname()不可重入的例子 230
8.5 协议名称处理函数 232
8.5.1 xxxprotoxxx()函数 232
8.5.2 使用协议族函数的例子 233
8.6 小结 236
第9章 数据的IO和复用 237
9.1 IO函数 237
9.1.1 使用recv()函数接收数据 237
9.1.2 使用send()函数发送数据 239
9.1.3 使用readv()函数接收数据 240
9.1.4 使用writev()函数发送数据 240
9.1.5 使用recvmsg()函数接收数据 242
9.1.6 使用sendmsg()函数发送数据 244
9.1.7 IO函数的比较 246
9.2 使用IO函数的例子 246
9.2.1 客户端处理框架的例子 246
9.2.2 服务器端程序框架 248
9.2.3 使用recv()和send()函数 249
9.2.4 使用readv()和write()函数 251
9.2.5 使用recvmsg()和sendmsg()函数 253
9.3 IO模型 256
9.3.1 阻塞IO模型 256
9.3.2 非阻塞IO模型 257
9.3.3 IO复用 257
9.3.4 信号驱动IO模型 258
9.3.5 异步IO模型 258
9.4 select()函数和pselect()函数 259
9.4.1 select()函数 259
9.4.2 pselect()函数 261
9.5 poll()函数和ppoll()函数 262
9.5.1 poll()函数 263
9.5.2 ppoll()函数 264
9.6 非阻塞编程 264
9.6.1 非阻塞方式程序设计介绍 264
9.6.2 非阻塞程序设计的例子 264
9.7 小结 266
第10章 基于UDP协议的接收和发送 267
10.1 UDP编程框架 267
10.1.1 UDP编程框图 267
10.1.2 UDP服务器编程框架 269
10.1.3 UDP客户端编程框架 269
10.2 UDP协议程序设计的常用函数 270
10.2.1 建立套接字socket()和绑定套接字bind() 270
10.2.2 接收数据recvfrom()/recv() 270
10.2.3 发送数据sendto()/send() 275
10.3 UDP接收和发送数据的例子 279
10.3.1 UDP服务器端 279
10.3.2 UDP服务器端数据处理 280
10.3.3 UDP客户端 281
10.3.4 UDP客户端数据处理 281
10.3.5 测试UDP程序 282
10.4 UDP协议程序设计中的几个问题 282
10.4.1 UDP报文丢失数据 282
10.4.2 UDP数据发送中的乱序 284
10.4.3 UDP协议中的connect()函数 287
10.4.4 UDP缺乏流量控制 287
10.4.5 UDP协议中的外出网络接口 289
10.4.6 UDP协议中的数据报文截断 290
10.5 小结 291
第11章 高级套接字 292
11.1 UNIX域函数 292
11.1.1 UNIX域函数的地址结构 292
11.1.2 套接字函数 293
11.1.3 使用UNIX域函数进行套接字编程 293
11.1.4 传递文件描述符 296
11.1.5 socketpair()函数 296
11.1.6 传递文件描述符的例子 297
11.2 广播 302
11.2.1 广播的IP地址 302
11.2.2 广播与单播的比较 303
11.2.3 广播的示例 304
11.3 多播 310
11.3.1 多播的概念 310
11.3.2 广域网的多播 311
11.3.3 多播的编程 311
11.3.4 内核中的多播 313
11.3.5 一个多播例子的服务器端 317
11.3.6 一个多播例子的客户端 318
11.4 数据链路层访问 319
11.4.1 SOCK_PACKET类型 319
11.4.2 设置套接口以捕获链路帧的编程方法 320
11.4.3 从套接口读取链路帧的编程方法 321
11.4.4 定位IP包头的编程方法 322
11.4.5 定位TCP报头的编程方法 323
11.4.6 定位UDP报头的编程方法 325
11.4.7 定位应用层报文数据的编程方法 326
11.4.8 使用SOCK_PACKET编写ARP请求程序的例子 326
11.5 小结 329
第12章 套接字选项 330
12.1 获取和设置套接字选项getsocketopt()/setsocketopt() 330
12.1.1 getsockopt()函数和setsocketopt()函数的介绍 330
12.1.2 套接字选项 331
12.1.3 套接字选项简单示例 332
12.2 SOL_SOCKET协议族选项 336
12.2.1 SO_BROADCAST广播选项 336
12.2.2 SO_DEBUG调试选项 337
12.2.3 SO_DONTROUTE不经过路由选项 337
12.2.4 SO_ERROR错误选项 338
12.2.5 SO_KEEPALIVE保持连接选项 338
12.2.6 SO_LINGER缓冲区处理方式选项 339
12.2.7 SO_OOBINLINE带外数据处理方式选项 342
12.2.8 SO_RCVBUF和SO_SNDBUF缓冲区大小选项 342
12.2.9 SO_RCVLOWAT和SO_SNDLOWAT缓冲区下限选项 343
12.2.10 SO_RCVTIMEO和SO_SNDTIMEO收发超时选项 343
12.2.11 SO_REUSERADDR地址重用选项 344
12.2.12 SO_EXCLUSIVEADDRUSE端口独占选项 344
12.2.13 SO_TYPE套接字类型选项 345
12.2.14 SO_BSDCOMPAT与BSD套接字兼容选项 345
12.2.15 SO_BINDTODEVICE套接字网络接口绑定选项 345
12.2.16 SO_PRIORITY套接字优先级选项 346
12.3 IPPROTO_IP选项 347
12.3.1 IP_HDRINCL选项 347
12.3.2 IP_OPTNIOS选项 347
12.3.3 IP_TOS选项 347
12.3.4 IP_TTL选项 347
12.4 IPPROTO_TCP选项 348
12.4.1 TCP_KEEPALIVE选项 348
12.4.2 TCP_MAXRT选项 348
12.4.3 TCP_MAXSEG选项 349
12.4.4 TCP_NODELAY和TCP_CORK选项 349
12.5 使用套接字选项 351
12.5.1 设置和获取缓冲区大小 351
12.5.2 获取套接字类型的例子 355
12.5.3 使用套接字选项的综合例子 356
12.6 ioctl()函数 361
12.6.1 ioctl()函数的命令选项 361
12.6.2 ioctl()函数的IO请求 363
12.6.3 ioctl()函数的文件请求 365
12.6.4 ioctl()函数的网络接口请求 365
12.6.5 使用ioctl()函数对ARP高速缓存操作 372
12.6.6 使用ioctl()函数发送路由表请求 374
12.7 fcntl()函数 374
12.7.1 fcntl()函数的选项 375
12.7.2 使用fcntl()函数修改套接字非阻塞属性 375
12.7.3 使用fcntl()函数设置信号属主 376
12.8 小结 376
第13章 原始套接字 377
13.1 概述 377
13.2 原始套接字的创建 379
13.2.1 SOCK_RAW选项 379
13.2.2 IP_HDRINCL套接字选项 379
13.2.3 不需要bind()函数 380
13.3 原始套接字发送报文 380
13.4 原始套接字接收报文 380
13.5 原始套接字报文处理时的结构 381
13.5.1 IP头部的结构 381
13.5.2 ICMP头部结构 382
13.5.3 UDP头部结构 384
13.5.4 TCP头部结构 386
13.6 ping的例子 387
13.6.1 协议格式 388
13.6.2 校验和函数 389
13.6.3 设置ICMP发送报文的头部 390
13.6.4 剥离ICMP接受报文的头部 391
13.6.5 计算时间差 392
13.6.6 发送报文 393
13.6.7 接收报文 394
13.6.8 主函数过程 395
13.6.9 主函数main() 397
13.6.10 编译测试 400
13.7 洪水攻击 400
13.8 ICMP洪水攻击 401
13.8.1 ICMP洪水攻击的原理 401
13.8.2 ICMP洪水攻击的例子 401
13.9 UDP洪水攻击 405
13.10 SYN洪水攻击 409
13.10.1 SYN洪水攻击的原理 409
13.10.2 SYN洪水攻击的例子 409
13.11 小结 413
第14章 服务器模型选择 414
14.1 循环服务器 414
14.1.1 UDP循环服务器 414
14.1.2 TCP循环服务器 417
14.2 简单并发服务器 420
14.2.1 并发服务器的模型 420
14.2.2 UDP并发服务器 420
14.2.3 TCP并发服务器 423
14.3 TCP的高级并发服务器模型 426
14.3.1 单客户端单进程,统一accept() 426
14.3.2 单客户端单线程,统一accept() 429
14.3.3 单客户端单线程,各线程独自accept(),使用互斥锁 431
14.4 IO复用循环服务器 435
14.4.1 IO复用循环服务器模型介绍 435
14.4.2 IO复用循环服务器模型的例子 436
14.5 小结 440
第15章 IPv6简介 441
15.1 IPv4的缺陷 441
15.2 IPv6的特点 442
15.3 IPv6的地址 443
15.3.1 IPv6的单播地址 443
15.3.2 可聚集全球单播地址 443
15.3.3 本地使用单播地址 444
15.3.4 兼容性地址 445
15.3.5 IPv6多播地址 446
15.3.6 IPv6任播地址 446
15.3.7 主机的多个IPv6地址 447
15.4 IPv6的头部 447
15.4.1 IPv6头部格式 447
15.4.2 与IPv4头部的对比 448
15.4.3 IPv6的TCP头部 449
15.4.4 IPv6的UDP头部 449
15.4.5 IPv6的ICMP头部 449
15.5 IPv6运行环境 451
15.5.1 加载IPv6模块 451
15.5.2 查看是否支持IPv6 452
15.6 IPv6的结构定义 453
15.6.1 IPv6的地址族和协议族 453
15.6.2 套接字地址结构 453
15.6.3 地址兼容考虑 455
15.6.4 IPv6通用地址 455
15.7 IPv6的套接字函数 456
15.7.1 socket()函数 456
15.7.2 没有发生改变的函数 456
15.7.3 发生改变的函数 457
15.8 IPv6的套接字选项 457
15.8.1 IPv6的套接字选项 457
15.8.2 单播跳限IPV6_UNICAST_HOPS 459
15.8.3 发送和接收多播包 459
15.8.4 IPv6中获得时间戳的ioctl命令 460
15.9 IPv6的库函数 460
15.9.1 地址转换函数的差异 460
15.9.2 域名解析函数的差异 461
15.9.3 测试宏 463
15.10 IPv6的编程的一个简单例子 463
15.10.1 服务器程序 464
15.10.2 客户端程序 465
15.10.3 编译调试 467
15.11 小结 467
第3篇 Linux内核网络编程
第16章 Linux内核中网络部分结构以及分布 470
16.1 概述 470
16.1.1 代码目录分布 470
16.1.2 内核中网络部分流程简介 472
16.1.3 系统提供修改网络流程点 474
16.1.4 sk_buff结构 475
16.1.5 网络协议数据结构inet_protosw 478
16.2 软中断CPU报文队列及其处理 479
16.2.1 Linux内核网络协议层的层间传递手段——软中断 479
16.2.2 网络收发处理软中断的实现机制 481
16.3 socket数据如何在内核中接收和发送 482
16.3.1 socket()的初始化 482
16.3.2 接收网络数据recv() 482
16.3.3 发送网络数据send() 483
16.4 小结 484
第17章 netfilter框架内报文处理 485
17.1 netfilter 485
17.1.1 netfilter简介 485
17.1.2 netfilter框架 486
17.1.3 netfilter检查时的表格.. 487
17.1.4 netfilter的规则 487
17.2 iptables和netfilter 488
17.2.1 iptables简介 488
17.2.2 iptables的表和链 488
17.2.3 使用iptables设置过滤规则 489
17.3 内核模块编程 492
17.3.1 内核“Hello,World!”程序 492
17.3.2 内核模块的基本架构 494
17.3.3 内核模块加载和卸载过程 496
17.3.4 内核模块初始化和清理函数 497
17.3.5 内核模块初始化和清理过程的容错处理 497
17.3.6 内核模块编译所需的Makefile 498
17.4 5个钩子点 499
17.4.1 netfilter的5个钩子点 499
17.4.2 NF_HOOK宏 500
17.4.3 钩子的处理规则 501
17.5 注册/注销钩子 502
17.5.1 结构nf_hook_ops 502
17.5.2 注册钩子 503
17.5.3 注销钩子 504
17.5.4 注册注销函数 504
17.6 钩子的简单处理例子 505
17.6.1 功能描述 505
17.6.2 需求分析 506
17.6.3 ping回显屏蔽实现 506
17.6.4 禁止向目的IP地址发送数据的实现 506
17.6.5 端口关闭实现 506
17.6.6 动态配置实现 508
17.6.7 可加载内核实现代码 509
17.6.8 应用层测试代码实现 516
17.6.9 编译运行 516
17.7 一点多个钩子的优先级 517
17.8 校验和问题 518
17.9 小结 518
第4篇 综 合 案 例
第18章 一个简单Web服务器的例子SHTTPD 522
18.1 SHTTPD的需求分析 522
18.1.1 SHTTPD启动参数可动态配置的需求 523
18.1.2 SHTTPD的多客户端支持的需求 524
18.1.3 SHTTPD支持方法的需求 525
18.1.4 SHTTPD支持的HTTP协议版本的需求 526
18.1.5 SHTTPD支持头部的需求 527
18.1.6 SHTTPD定位URI的需求 527
18.1.7 SHTTPD支持CGI的需求 528
18.1.8 SHTTPD错误代码的需求 529
18.2 SHTTPD的模块分析和设计 530
18.2.1 SHTTPD的主函数 530
18.2.2 SHTTPD命令行解析的分析设计 531
18.2.3 SHTTPD配置文件解析的分析设计 532
18.2.4 SHTTPD的多客户端支持的分析设计 534
18.2.5 SHTTPD头部解析的分析设计 536
18.2.6 SHTTPD对URI的分析设计 537
18.2.7 SHTTPD支持方法的分析设计 537
18.2.8 SHTTPD支持CGI的分析设计 538
18.2.9 SHTTPD错误处理的分析设计 540
18.3 SHTTPD各模块的实现 542
18.3.1 SHTTPD命令行解析的实现 543
18.3.2 SHTTPD文件配置解析的实现 545
18.3.3 SHTTPD的多客户端支持的实现 547
18.3.4 SHTTPD所请求URI解析的实现 551
18.3.5 SHTTPD方法解析的实现 552
18.3.6 SHTTPD响应方法的实现 552
18.3.7 SHTTPD支持CGI的实现 556
18.3.8 SHTTPD支持HTTP协议版本的实现 559
18.3.9 SHTTPD内容类型的实现 559
18.3.10 SHTTPD错误处理的实现 561
18.3.11 SHTTPD生成目录下文件列表文件的实现 563
18.3.12 SHTTPD主函数的实现 565
18.4 SHTTPD的编译、调试和测试 566
18.4.1 建立源文件 566
18.4.2 制作Makefile 566
18.4.3 制作执行文件 567
18.4.4 使用不同的浏览器测试服务器程序 567
18.5 小结 568
第19章 一个简单网络协议栈的例子SIP 569
19.1 SIP网络协议栈的功能描述 569
19.1.1 SIP网络协议栈的基本功能描述 570
19.1.2 SIP网络协议栈的分层功能描述 570
19.1.3 SIP网络协议栈的用户接口功能描述 571
19.2 SIP网络协议栈的架构 571
19.3 SIP网络协议栈的存储区缓存 572
19.3.1 SIP存储缓冲的结构定义 573
19.3.2 SIP存储缓冲的处理函数 577
19.4 SIP网络协议栈的网络接口层 579
19.4.1 SIP网络接口层的架构 579
19.4.2 SIP网络接口层的数据结构 580
19.4.3 SIP网络接口层的初始化函数 581
19.4.4 SIP网络接口层的输入函数 583
19.4.5 SIP网络接口层的输出函数 586
19.5 SIP网络协议栈的ARP层 588
19.5.1 SIP地址解析层的架构 588
19.5.2 SIP地址解析层的数据结构 588
19.5.3 SIP地址解析层的映射表 590
19.5.4 SIP地址解析层的ARP映射表维护函数 591
19.5.5 SIP地址解析层的ARP网络报文构建函数 593
19.5.6 SIP地址解析层的ARP网络报文收发处理函数 595
19.6 SIP网络协议栈的IP层 598
19.6.1 SIP网际协议层的架构 598
19.6.2 SIP网际协议层的数据结构 599
19.6.3 SIP网际协议层的输入函数 601
19.6.4 SIP网际协议层的输出函数 605
19.6.5 SIP网际协议层的分片函数 606
19.6.6 SIP网际协议层的分片组装函数 607
19.7 SIP网络协议栈的ICMP层 611
19.7.1 SIP控制报文协议的数据结构 611
19.7.2 SIP控制报文协议的协议支持 612
19.7.3 SIP控制报文协议的输入函数 613
19.7.4 SIP控制报文协议的回显应答函数 614
19.8 SIP网络协议栈的UDP层 615
19.8.1 SIP数据报文层的数据结构 615
19.8.2 SIP数据报文层的控制单元 615
19.8.3 SIP数据报文层的输入函数 617
19.8.4 SIP数据报文层的输出函数 618
19.8.5 SIP数据报文层的建立函数 618
19.8.6 SIP数据报文层的释放函数 619
19.8.7 SIP数据报文层的绑定函数 620
19.8.8 SIP数据报文层的发送数据函数 621
19.8.9 SIP数据报文层的校验和计算 622
19.9 SIP网络协议栈的协议无关层 623
19.9.1 SIP协议无关层的系统架构 623
19.9.2 SIP协议无关层的函数形式 624
19.9.3 SIP协议无关层的接收数据函数 624
19.10 SIP网络协议栈的BSD接口层 625
19.10.1 SIP用户接口层的架构 625
19.10.2 SIP用户接口层的套接字建立函数 626
19.10.3 SIP用户接口层的套接字关闭函数 627
19.10.4 SIP用户接口层的套接字绑定函数 627
19.10.5 SIP用户接口层的套接字连接函数 628
19.10.6 SIP用户接口层的套接字接收数据函数 628
19.10.7 SIP用户接口层的发送数据函数 629
19.11 SIP网络协议栈的编译 630
19.11.1 SIP的文件结构 630
19.11.2 SIP的Makefile 631
19.11.3 SIP的编译运行 631
19.12 小结 631
第20章 一个简单防火墙的例子SIPFW 633
20.1 SIPFW防火墙的功能描述 633
20.1.1 SIPFW防火墙对主机进行网络数据过滤的功能描述 633
20.1.2 SIPFW防火墙用户设置防火墙规则的功能描述 634
20.1.3 SIPFW防火墙配置文件等附加功能的功能描述 634
20.2 SIPFW需求分析 634
20.2.1 SIPFW防火墙条件和动作 635
20.2.2 SIPFW防火墙支持过滤的类型和内容 635
20.2.3 SIPFW防火墙过滤的方式和动作 638
20.2.4 SIPFW防火墙的配置文件 640
20.2.5 SIPFW防火墙命令行配置格式 640
20.2.6 SIPFW防火墙的规则文件格式 642
20.2.7 SIPFW防火墙的日志文件数据格式 643
20.2.8 SIPFW防火墙构建所采用的技术方案 644
20.3 使用netlink进行用户空间和内核空间数据交互 645
20.3.1 netlink的用户空间程序设计 645
20.3.2 netlink的内核空间API 648
20.4 使用proc进行内存数据用户空间映射 650
20.4.1 proc虚拟文件系统的结构 650
20.4.2 创建proc虚拟文件 651
20.4.3 删除proc虚拟文件 652
20.4.4 proc文件的写函数 652
20.4.5 proc文件的读函数 653
20.5 内核空间的文件操作函数 654
20.5.1 内核空间的文件结构 654
20.5.2 内核空间的文件建立操作 655
20.5.3 内核空间的文件读写操作 656
20.5.4 内核空间的文件关闭操作 657
20.6 SIPFW防火墙的模块分析和设计 657
20.6.1 SIPFW防火墙的总体架构 657
20.6.2 SIPFW防火墙的用户命令解析 660
20.6.3 SIPFW用户空间与内核空间的交互 663
20.6.4 SIPFW防火墙内核链上的规则处理 666
20.6.5 SIPFW防火墙的PROC虚拟文件系统 668
20.6.6 SIPFW防火墙的配置文件和日志文件处理 669
20.6.7 SIPFW防火墙的过滤模块设计 671
20.7 SIPFW防火墙各功能模块的实现 673
20.7.1 SIPFW防火墙的命令解析代码 674
20.7.2 SIPFW防火墙的过滤规则解析模块代码 678
20.7.3 SIPFW防火墙的网络数据拦截模块代码 680
20.7.4 SIPFW防火墙的PROC虚拟文件系统 681
20.7.5 SIPFW防火墙对配置文件的解析 683
20.7.6 SIPFW防火墙内核模块初始化和退出 684
20.7.7 用户空间处理主函数 685
20.8 编译、调试和测试 686
20.8.1 用户程序和内核程序的Makefile 686
20.8.2 编译及运行 687
20.8.3 下发过滤规则,测试过滤结果 688
20.9 小结... 690

ARM嵌入式Linux系统开发详解

卡 423
23.6.6 发送数据包 425
23.6.7 接收数据包 427
23.6.8 中断和定时器处理 429
23.7 小结 431
第24章 Flash设备驱动 432
24.1 Linux Flash驱动结构 432
24.1.1 什么是MTD 432
24.1.2 MTD系统结构 433
24.2 Flash设备基础 434
24.2.1 存储原理 434
24.2.2 性能比较 435
24.3 内核MTD层 436
24.3.1 mtd_info结构 436
24.3.2 mtd_part结构 439
24.3.3 mtd_partition结构 440
24.3.4 map_info结构 440
24.3.5 nand_chip结构 442
24.4 Flash设备框架 443
24.4.1 NOR Flash设备驱动框架 443
24.4.2 NAND Flash设备驱动框架 444
24.5 Flash设备驱动实例——NOR Flash设备驱动剖析 445
24.5.1 数据结构 446
24.5.2 驱动初始化 446
24.5.3 驱动卸载 447
24.6 Flash设备驱动实例——NAND Flash设备驱动分析 448
24.6.1 S3C2440 NAND控制器介绍 448
24.6.2 数据结构 450
24.6.3 驱动初始化 450
24.6.4 驱动卸载 454
24.6.5 初始化NAND控制器 455
24.6.6 设置芯片操作 456
24.6.7 电源管理 458
24.7 小结 459
第25章 USB驱动开发 460
25.1 USB体系介绍 460
25.1.1 USB设计目标 460
25.1.2 USB体系概述 461
25.1.3 USB体系工作流程 462
25.2 USB驱动程序框架 462
25.2.1 Linux内核USB驱动框架 462
25.2.2 主机驱动结构 465
25.2.3 设备驱动结构 468
25.2.4 USB驱动程序框架 470
25.3 USB驱动实例剖析 473
25.3.1 USB串口驱动 473
25.3.2 USB键盘驱动 475
25.4 小结... 478

Linux系统管理与网络管理
内容简介回到顶部↑

经过多年的发展,Linux已成为了当今世界的主流操作系统之一,无论在桌面还是服务器领域都得到了广泛的应用。本书以Red Hat Enterprise Linux 5.2平台为基础,循序渐进、深入浅出、全面系统地介绍了由Linux系统管理到各种网络服务器配置所涉及的所有知识,内容包括Linux系统简介、Linux系统安装、图形桌面系统管理、命令行界面、Linux系统启动过程、用户和用户组管理、磁盘分区管理、文件系统管理、软件包管理、进程管理、网络管理、系统监控、Shell编程、Linux系统安全、FTP服务器配置和管理、Web服务器配置与管理、动态Web服务器配置与管理、DNS服务器配置和管理、邮件服务器配置和管理、DHCP服务器配置和管理、代理服务器配置和管理、VPN服务器配置和管理、NFS服务器配置和管理、Samba服务器配置和管理、NAT服务器配置和管理、MySQL数据库服务器配置和管理、Webmin的配置和管理、Oracle服务器配置和管理以及Oracle RAC服务器配置和管理。.
本书附带1张DVD光盘,内容为专门为本书录制的6.5小时教学视频、Ubuntu安装光盘的镜像文件和另外赠送的37小时Linux专题学习视频。..
本书内容详尽,语言通俗易懂,叙述深入浅出,适合广大Linux初学者、Linux系统管理员、对Linux感兴趣的人员及各大中专院校的学生和社会培训学生阅读,是一本不可多得的Linux参考教材。...

目录回到顶部↑

第1篇 基 础 篇.
第1章 Linux系统简介 2
1.1 Linux系统的起源 2
1.2 Linux版本 3
1.2.1 Linux内核版本 3
1.2.2 Linux发行套件版本 3
1.3 Red Hat Enterprise Linux 5.2简介 5
第2章 Linux系统安装 7
2.1 安装前的准备 7
2.1.1 硬件配置与兼容要求 7
2.1.2 选择安装方式 7
2.2 通过光盘安装Linux 8
2.2.1 启动安装程序 8
2.2.2 进行语言和键盘设置 11
2.2.3 磁盘分区 13
2.2.4 引导装载程序 18
2.2.5 网络设置 19
2.2.6 时区配置 20
2.2.7 设置root用户口令 21
2.2.8 选择安装的软件包 22

.2.2.9 准备安装 23
2.2.10 安装软件包 23
2.3 系统第一次启动 24
2.3.1 欢迎界面和许可协议 24
2.3.2 防火墙 24
2.3.3 配置SElinux访问控制 25
2.3.4 配置Kdump内核崩溃转存 25
2.3.5 设置日期和时间 26
2.3.6 设置软件更新 27
2.3.7 创建用户 27
2.3.8 设置声卡 28
2.3.9 附加光盘 29
2.3.10 登录系统 29
2.4 其他安装方式 30
2.4.1 制作安装引导光盘 30
2.4.2 硬盘安装方式 30
2.4.3 NFS安装方式 31
2.4.4 FTP安装方式 32
2.4.5 HTTP安装方式 33
2.5 升级和删除Linux 33
2.5.1 升级安装 34
2.5.2 删除Linux系统 35
2.6 使用虚拟机安装Linux 36
2.7 系统安装时的常见问题处理 41
2.7.1 无法使用图形安装方式 41
2.7.2 加载第三方的驱动程序 41
2.7.3 无法找到光驱 42
2.7.4 无法使用硬盘的所有剩余空间 42
2.7.5 分区后无法进入下一个安装界面 42
2.7.6 保存安装过程中的错误跟踪信息 43
第3章 图形桌面系统管理 44
3.1 桌面系统简介 44
3.1.1 X-Window系统简介 44
3.1.2 KDE和GNOME的简介 45
3.2 GNOME的使用 46
3.2.1 GNOME桌面 46
3.2.2 文件管理 48
3.2.3 GNOME面板 51
3.2.4 菜单 53
3.2.5 输入法 54
3.2.6 屏幕分辨率 54
3.2.7 屏幕保护程序 54
3.2.8 添加删除软件 55
3.2.9 搜索文件 56
3.2.10 设置系统字体与主题 57
3.2.11 日期时间 57
3.2.12 使用软盘、光盘和移动硬盘 57
3.2.13 更改GNOME语言环境 58
3.2.14 注销和关机 59
3.3 常用应用软件 60
3.3.1 Firefox浏览器 60
3.3.2 gThumb图像浏览器 60
3.3.3 gedit文本编辑器 61
3.3.4 Evince pdf文档查看器 62
3.3.5 远程访问 62
3.4 常见问题处理 66
3.4.1 无法挂载光盘和USB存储设备 66
3.4.2 无法注销系统 68
3.4.3 开机无法进入图形环境 68
第4章 命令行界面 70
4.1 命令行简介 70
4.1.1 为什么要使用命令行 70
4.1.2 Shell简介 71
4.2 命令行的使用 71
4.2.1 进入命令行 71
4.2.2 处理多个终端 72
4.2.3 终端配置文件 72
4.2.4 终端基本操作 73
4.3 常用的基本命令 77
4.3.1 man命令:查看帮助信息 77
4.3.2 date命令:显示时间 77
4.3.3 hostname命令:主机名 78
4.3.4 clear命令:清屏 78
4.3.5 exit命令:退出 79
4.3.6 history命令:历史命令 79
4.3.7 pwd命令:当前目录 79
4.3.8 cd命令:切换目录 79
4.3.9 ls命令:列出目录和文件 80
4.3.10 cat命令:显示文件内容 81
4.3.11 touch命令:创建文件 81
4.3.12 df命令:查看文件系统 81
4.3.13 alias和unalias命令:命令别名 82
4.3.14 echo命令:显示信息 83
4.3.15 export命令:输出变量 83
4.3.16 env命令:显示环境变量 83
4.3.17 ps命令:查看进程 84
4.3.18 whoami和who命令:查看用户 84
4.3.19 su命令:切换用户 84
4.3.20 grep命令:过滤信息 85
4.3.21 wc命令:统计 86
4.3.22 more命令:分页显示 86
4.3.23 管道 86
4.4 VI编辑器 87
4.4.1 3种运行模式 87
4.4.2 VI的使用 88
4.4.3 VI的常用命令 88
4.5 命令行环境常见问题处理 91
4.5.1 开机默认进入命令行环境 91
4.5.2 远程访问命令行环境 92
第2篇 系统管理篇
第5章 Linux系统启动过程 96
5.1 Linux系统启动过程简介 96
5.2 BIOS加电自检 97
5.3 引导加载程序 97
5.3.1 引导加载程序的启动 98
5.3.2 GRUB配置 98
5.4 内核映像 100
5.5 init进程 101
5.5.1 init进程简介 101
5.5.2 init进程的引导过程 102
5.5.3 配置自动运行服务 105
5.6 重启和关闭系统 108
5.6.1 shutdown命令:关闭或重启系统 108
5.6.2 halt命令:关闭系统 109
5.6.3 reboot命令:重启系统 110
5.6.4 init命令:改变运行级别 110
5.6.5 通过图形界面关闭系统 111
5.7 系统启动时常见的问题处理 111
5.7.1 进入Linux救援模式 111
5.7.2 GRUB被Windows覆盖 113
5.7.3 重新分区后GRUB引导失败 114
第6章 用户和用户组管理 116
6.1 用户管理概述 116
6.1.1 用户账号 116
6.1.2 用户账号文件:passwd和shadow 118
6.1.3 用户组 119
6.1.4 用户组文件:group和gshadow 121
6.2 普通用户管理 122
6.2.1 添加用户 123
6.2.2 更改用户口令 124
6.2.3 修改用户信息 126
6.2.4 删除用户 126
6.2.5 禁用用户 127
6.2.6 配置用户Shell环境 127
6.3 用户组管理 130
6.3.1 添加用户组 130
6.3.2 修改用户组 130
6.3.3 删除用户组 131
6.4 用户和用户组的图形化管理 132
6.4.1 查看用户 132
6.4.2 添加用户 133
6.4.3 修改用户 133
6.4.4 删除用户 133
6.4.5 查看用户组 134
6.4.6 添加用户组 134
6.4.7 修改用户组 135
6.4.8 删除用户组 135
6.5 用户管理的常见问题和常用命令 135
6.5.1 忘记root用户口令 135
6.5.2 误删用户账号 136
6.5.3 常用用户管理命令 138
6.6 常用管理脚本 139
6.6.1 批量添加用户 139
6.6.2 完整删除用户账号 140
第7章 磁盘分区管理 143
7.1 磁盘分区简介 143
7.1.1 Linux分区简介 143
7.1.2 磁盘设备管理 144
7.2 使用fdisk进行分区管理 145
7.2.1 fdisk简介 145
7.2.2 fdisk交互模式 146
7.2.3 分区管理 147
7.3 使用parted进行分区管理 150
7.3.1 parted简介 151
7.3.2 parted交互模式 151
7.3.3 分区管理 152
7.4 LVM——逻辑卷管理 155
7.4.1 LVM简介 155
7.4.2 物理卷管理 156
7.4.3 卷组管理 157
7.4.4 逻辑卷管理 159
7.5 磁盘分区管理的常见问题 160
7.5.1 添加新磁盘 160
7.5.2 删除分区后系统无法启动 163
7.5.3 误删Swap分区 163
第8章 文件系统管理 165
8.1 文件系统简介 165
8.1.1 Linux文件系统简介 165
8.1.2 Linux支持的文件系统类型 166
8.1.3 Linux的默认安装目录 167
8.2 文件系统的管理 168
8.2.1 创建文件系统 168
8.2.2 查看已挂载文件系统 170
8.2.3 使用fstab文件自动挂载文件系统 171
8.3 文件和目录管理 172
8.3.1 查看文件和目录属性 172
8.3.2 文件类型 173
8.3.3 链接文件 175
8.3.4 查看文件内容 176
8.3.5 删除文件和目录 177
8.3.6 更改当前目录 177
8.3.7 文件名通配符 178
8.3.8 查看目录空间大小 179
8.3.9 复制文件和目录 180
8.3.10 移动文件和目录 180
8.4 文件和目录权限管理 181
8.4.1 Linux文件和目录权限简介 181
8.4.2 更改文件和目录的所有者 182
8.4.3 更改文件和目录的权限 183
8.4.4 设置文件和目录的默认权限 184
8.5 文件系统管理的常见问题和常用命令 185
8.5.1 无法卸载文件系统 185
8.5.2 修复受损文件系统 185
8.5.3 修复文件系统超级块 187
8.5.4 使用Windows分区 188
8.6 常用管理脚本 188
8.6.1 自动挂载所有Windows分区的脚本 189
8.6.2 转换目录和文件名大小写的脚本 190
第9章 软件包管理 192
9.1 使用RPM软件包 192
9.1.1 RPM简介 192
9.1.2 RPM命令的使用方法 193
9.1.3 安装RPM软件包 194
9.1.4 查看RPM软件包 195
9.1.5 升级软件包 197
9.1.6 删除软件包 197
9.2 打包程序tar 198
9.2.1 tar简介 198
9.2.2 打包文件 199
9.2.3 查看归档文件的内容 199
9.2.4 还原归档文件 200
9.2.5 往归档文件中追加新文件 200
9.2.6 压缩归档文件 201
9.3 压缩和解压 201
9.3.1 使用gzip和gunzip进行压缩 202
9.3.2 使用zip和unzip进行压缩 203
9.3.3 使用bzip2和bunzip2进行压缩 205
9.3.4 使用compress和uncompress进行压缩 206
9.4 其他软件安装方式 206
9.4.1 源代码安装 207
9.4.2 源代码安装实例 208
9.4.3 .bin文件安装 209
9.5 常见问题处理 211
9.5.1 如何安装.src.rpm软件包 211
9.5.2 查看程序是由哪个RPM包安装 211
第10章 进程管理 213
10.1 进程简介 213
10.2 Linux进程管理 214
10.2.1 查看进程 214
10.2.2 启动进程 216
10.2.3 终止进程 218
10.2.4 更改进程优先级 219
10.2.5 进程挂起与恢复 220
10.3 定时任务 220
10.3.1 crontab设置定时任务 221
10.3.2 at命令:设置定时任务 222
10.4 进程管理的常见问题处理 223
10.4.1 如何杀掉所有进程 223
10.4.2 定时任务不生效 223
第11章 网络管理 225
11.1 TCP/IP网络 225
11.1.1 TCP/IP网络历史 225
11.1.2 OSI网络模型 226
11.1.3 TCP/IP网络模型 227
11.2 以太网配置 228
11.2.1 添加以太网连接 229
11.2.2 更改以太网设备 230
11.2.3 更改DNS和主机记录 231
11.3 网络配置文件 232
11.3.1 网络设备配置文件 232
11.3.2 使用resolve.conf文件配置DNS服务器 232
11.3.3 使用network文件配置主机名 233
11.3.4 使用hosts文件配置主机名和IP地址的映射关系 233
11.4 接入互联网 233
11.4.1 xDSL拨号上网 233
11.4.2 调整解调器拨号上网 234
11.4.3 ISDN拨号上网 236
11.4.4 无线连接 237
11.5 常用网络命令 239
11.5.1 使用ifconfig命令管理网络接口 240
11.5.2 使用hostname命令查看主机名 242
11.5.3 使用route命令管理路由 242
11.5.4 使用ping命令检测主机是否激活 244
11.5.5 使用netstat命令查看网络信息 245
11.5.6 使用nslookup命令进行解析 247
11.5.7 使用traceroute命令跟踪路由 248
11.5.8 使用telnet命令管理远程主机 249
11.6 常见问题处理 249
11.6.1 在网卡上绑定多个IP地址 249
11.6.2 Linux网络故障处理步骤 252
11.7 常用管理脚本 253
11.7.1 统计客户端的网络连接数 254
11.7.2 自动发送邮件的脚本 255
第12章 系统监控 256
12.1 系统性能监控 256
12.1.1 性能分析准则 256
12.1.2 内存监控 258
12.1.3 CPU监控 259
12.1.4 磁盘监控 261
12.1.5 网络监控 263
12.1.6 综合监控工具——top 264
12.2 syslog日志 267
12.2.1 syslog简介 267
12.2.2 syslog配置 268
12.2.3 配置实例 270
12.2.4 清空日志文件内容 270
12.2.5 图形化日志工具——系统日志查看器 270
12.3 其他日志 271
12.3.1 dmesg日志:记录内核日志信息 271
12.3.2 用户登录日志 272
12.3.3 用户操作记录 273
12.3.4 应用日志 274
12.4 系统监控常见问题处理 274
12.4.1 内存泄漏 274
12.4.2 定期清理日志文件 275
第13章 Shell编程 276
13.1 Shell编程简介 276
13.1.1 什么是Shell脚本 276
13.1.2 编写Shell脚本 277
13.2 条件测试 277
13.2.1 数值测试 277
13.2.2 字符串测试 278
13.2.3 文件状态测试 279
13.2.4 条件测试的逻辑操作符 279
13.3 控制结构 280
13.3.1 if-then-else分支结构 280
13.3.2 case分支结构 281
13.3.3 for循环结构 282
13.3.4 expr命令计数器 284
13.3.5 while循环结构 284
13.3.6 until循环结构 285
13.4 脚本参数与交互 286
13.4.1 向脚本传递参数 286
13.4.2 用户交互 287
13.4.3 特殊变量 289
13.5 Shell编程中的常见问题 289
13.5.1 如何屏蔽命令的输出结果 290
13.5.2 如何把一条命令分成多行编写 290
第14章 Linux系统安全 291
14.1 用户账号和密码安全 291
14.1.1 删除或禁用不必要的用户 291
14.1.2 使用强壮的用户密码 292
14.1.3 设置合适的密码策略 292
14.1.4 破解shadow口令文件 293
14.1.5 禁用静止用户 294
14.1.6 保证只有一个root用户 295
14.1.7 文件路径中的“.” 296
14.1.8 主机信任关系:host.equiv和.rhosts文件 297
14.2 网络安全 297
14.2.1 ping探测 297
14.2.2 服务端口 298
14.2.3 拒绝攻击 302
14.2.4 使用安全的网络服务 303
14.2.5 增强Xinetd的安全 304
14.3 文件系统安全 305
14.3.1 全球可读文件 305
14.3.2 全球可写文件 306
14.3.3 特殊的文件权限:setuid和setgid 306
14.3.4 没有所有者的文件 308
14.3.5 设备文件 308
14.3.6 磁盘分区 308
14.3.7 设置grub密码 309
14.3.8 限制su切换 310
14.3.9 使用合适的mount选项 310
14.4 备份与恢复 311
14.4.1 使用tar进行备份 311
14.4.2 专用的备份恢复工具:dump和restore 312
14.4.3 底层设备操作命令:dd 315
14.4.4 备份的物理安全 316
14.5 日志记录 316
14.5.1 查看当前登录用户 316
14.5.2 查看用户历史登录日志 317
14.5.3 secure日志中的安全信息 318
14.5.4 messages日志中的安全信息 318
14.5.5 cron日志中的安全信息 319
14.5.6 history日志中的安全信息 319
14.5.7 日志文件的保存 320
14.6 漏洞扫描——Nessus 321
14.6.1 如何获得Nessus安装包 321
14.6.2 安装Nessus服务器 321
14.6.3 启动和关闭Nessus 322
14.6.4 安装Nessus客户端 323
14.6.5 扫描安全漏洞 324
14.6.6 自定义扫描策略 327
14.6.7 Nessus命令行客户端 330
14.7 开源软件OpenSSH 332
14.7.1 SSH和OpenSSH简介 332
14.7.2 安装OpenSSH 332
14.7.3 启动和关闭OpenSSH 334
14.7.4 OpenSSH配置文件 336
14.7.5 OpenSSH服务器配置 336
14.7.6 OpenSSH客户端配置 339
14.7.7 使用SSH远程登录 340
14.7.8 使用sftp进行文件传输 344
14.7.9 使用scp进行远程文件复制 345
14.7.10 在Windows客户端使用SSH 347
14.8 Linux系统安全常见问题 349
14.8.1 Linux是否有病毒 349
14.8.2 系统文件损坏后的解决办法 350
第3篇 网络服务管理篇
第15章 FTP服务器配置和管理 352
15.1 FTP简介 352
15.1.1 FTP服务 352
15.1.2 常用的FTP服务器软件 353
15.2 vsftpd服务器的安装 353
15.2.1 如何获得vsftpd安装包 354
15.2.2 安装vsftpd 354
15.2.3 启动和关闭vsftpd.. 355
15.2.4 检测vsftpd服务 357
15.2.5 vsftpd自动运行 358
15.3 vsftpd服务器配置 360
15.3.1 vsftpd.conf配置文件 360
15.3.2 匿名FTP的基本配置 363
15.3.3 匿名FTP的其他设置 365
15.3.4 配置本地用户登录 367
15.3.5 配置虚拟用户登录 367
15.3.6 控制用户登录 369
15.3.7 设置欢迎信息 369
15.3.8 FTP日志 371
15.3.9 其他设置 373
15.4 FTP客户端 376
15.4.1 FTP命令:通用的FTP客户端程序 376
15.4.2 FTP客户端图形化工具 381
15.5 Ftp服务器配置常见问题 381
15.5.1 取消匿名FTP的口令输入 381
15.5.2 本地用户无法登录FTP服务器 382
第16章 Web服务器配置与管理 383
16.1 Web服务器简介 383
16.1.1 Web服务的历史和工作原理 383
16.1.2 Apache简介 384
16.1.3 Apache的模块 384
16.2 Apache服务器的安装 386
16.2.1 如何获取Apache软件 386
16.2.2 安装Apache服务器 387
16.2.3 启动和关闭Apache 389
16.2.4 检测Apache服务 389
16.2.5 让Apache自动运行 390
16.3 Apache服务器的基本配置和维护 392
16.3.1 查看Apache的相关信息 392
16.3.2 httpd.conf配置文件介绍 393
16.3.3 配置文件的修改 396
16.3.4 符号链接和虚拟目录 397
16.3.5 页面重定向 399
16.3.6 Apache日志文件 401
16.4 日志分析 403
16.4.1 安装Webalizer日志分析程序 403
16.4.2 配置Webalizer 403
16.4.3 使用Webalizer分析日志 404
16.5 Apache安全配置 406
16.5.1 访问控制 406
16.5.2 用户认证 408
16.5.3 分布式配置文件:.htaccess 410
16.6 虚拟主机 411
16.6.1 虚拟主机服务简介 411
16.6.2 基于IP的虚拟主机服务 411
16.6.3 基于主机名的虚拟主机服务 413
16.7 Apache服务器配置的常见问题 415
16.7.1 防止网站图片盗链 415
16.7.2 忽略某些访问日志的记录 416
16.7.3 Apache无法启动 416
第17章 动态Web服务器配置与管理 417
17.1 动态网页技术简介 417
17.1.1 动态网页技术的工作原理和简介 417
17.1.2 实现动态网页的常见技术 418
17.1.3 Tomcat简介 418
17.2 Tomcat服务器的安装 419
17.2.1 如何获取JDK 419
17.2.2 安装JDK 419
17.2.3 如何获取Tomcat 420
17.2.4 安装Tomcat 421
17.2.5 启动和关闭Tomcat 421
17.2.6 检测Tomcat服务 422
17.2.7 让Tomcat自动运行 423
17.3 整合Apache和Tomcat 424
17.3.1 为什么要进行整合 424
17.3.2 安装mod_jk模块 425
17.3.3 Apache和Tomcat的后续配置 426
17.4 Apache和其他动态Web的整合 429
17.4.1 整合CGI 429
17.4.2 整合基于Perl的CGI 431
17.4.3 整合PHP 434
17.5 动态Web服务器配置的常见问题 435
17.5.1 无法载入PHP模块 436
17.5.2 如何压缩PHP模块的容量 436
第18章 DNS服务器配置和管理 437
18.1 DNS简介 437
18.1.1 DNS域名结构 437
18.1.2 DNS工作原理 438
18.2 DNS服务器的安装 440
18.2.1 如何获得Bind安装包 440
18.2.2 安装Bind 440
18.2.3 启动和关闭Bind 441
18.2.4 开机自动运行 442
18.3 Bind服务器配置 444
18.3.1 named.conf配置文件 445
18.3.2 根区域文件named.root 450
18.3.3 正向解析区域文件 452
18.3.4 反向解析区域文件 454
18.4 配置实例 454
18.4.1 网络拓扑 454
18.4.2 配置named.conf 455
18.4.3 配置区域文件 457
18.4.4 测试结果 459
18.5 DNS常见问题及常用命令 460
18.5.1 因TTL值缺失导致的错误 460
18.5.2 dig命令:显示DNS解析结果以及配置信息 461
18.5.3 ping命令:解析域名 461
18.5.4 host命令:正向反向解析 462
18.5.5 named-checkconf命令:检查named.conf文件内容 462
18.5.6 named-checkzone命令:检查区域文件内容 462
第19章 邮件服务器配置和管理 463
19.1 电子邮件简介 463
19.1.1 电子邮件传输过程 463
19.1.2 邮件相关协议 465
19.1.3 Linux下常用的邮件服务器程序 465
19.2 安装邮件服务器 466
19.2.1 安装SASL 466
19.2.2 安装Postfix 468
19.2.3 启动和关闭邮件服务 471
19.2.4 配置saslauthd服务的自动运行 472
19.2.5 配置Postfix服务的自动运行 475
19.3 Postfix配置 477
19.4 POP和IMAP的实现 479
19.4.1 安装Dovecot 479
19.4.2 配置Dovecot 480
19.4.3 启动和关闭Dovecot 481
19.4.4 配置Dovecot服务的自动运行 482
19.5 电子邮件客户端配置 484
第20章 DHCP服务器配置和管理 487
20.1 DHCP简介 487
20.2 DHCP服务器的安装 489
20.2.1 如何获得DHCP安装包 489
20.2.2 安装DHCP 489
20.2.3 启动和关闭DHCP 490
20.2.4 DHCP服务开机自动运行 492
20.3 DHCP服务器配置 495
20.3.1 dhcpd.conf配置文件 495
20.3.2 dhcpd.conf文件的参数 496
20.3.3 dhcpd.conf文件的选项 497
20.3.4 使用dhcpd.leases文件查看已分配的IP地址 498
20.4 配置实例 499
20.4.1 网络拓扑 499
20.4.2 配置步骤 500
20.5 DHCP客户端配置 501
20.5.1 Linux客户端配置 501
20.5.2 Windows客户端配置 502
第21章 代理服务器配置和管理 504
21.1 代理服务器简介 504
21.2 代理服务器的安装 505
21.2.1 如何获得Squid安装包 506
21.2.2 安装Squid 506
21.2.3 启动和关闭Squid 508
21.2.4 Squid服务开机自动运行 510
21.3 Squid的配置 513
21.3.1 squid.conf配置文件 513
21.3.2 与配置文件相关的命令 517
21.3.3 设置Squid使用中文错误提示信息 518
21.3.4 配置透明代理 519
21.4 Squid安全 521
21.4.1 访问控制列表 521
21.4.2 使用http_access选项控制HTTP请求 522
21.4.3 身份认证 524
21.5 Squid日志管理 527
21.6 使用Web方式管理Squid 529
21.7 客户端配置 531
21.7.1 Linux客户端的配置 531
21.7.2 Windows客户端配置 532
21.8 Squid的常见问题处理 534
21.8.1 创建cache目录时出现权限不足的错误 534
21.8.2 启动Squid时提示地址已被占用的错误 534
21.8.3 启动Squid时提示DNS名称解析测试失败的错误 535
第22章 VPN服务器配置和管理 536
22.1 VPN简介 536
22.2 安装VPN服务器 537
22.2.1 如何获得安装包 537
22.2.2 安装dkms 537
22.2.3 安装ppp 538
22.2.4 安装pptpd 539
22.2.5 启动和关闭pptpd 540
22.2.6 pptpd开机自动运行 540
22.3 pptpd的配置 543
22.4 pptpd日志管理 545
22.5 配置VPN客户端 546
22.5.1 配置Linux VPN客户端 546
22.5.2 配置Windows客户端 547
第23章 NFS服务器配置和管理 550
23.1 NFS简介 550
23.2 NFS服务器安装 551
23.2.1 安装NFS 551
23.2.2 启动NFS 552
23.2.3 NFS服务检测 553
23.2.4 NFS服务开机自动启动 554
23.3 NFS服务器端配置 555
23.3.1 exports配置文件 555
23.3.2 NFS权限控制 557
23.3.3 exports命令:输出共享目录 559
23.4 NFS客户端配置 561
23.4.1 客户端安装 561
23.4.2 查看共享目录列表 562
23.4.3 创建挂载点并挂载共享目录 563
23.4.4 卸载NFS文件系统 565
23.4.5 开机自动挂载NFS共享目录 565
23.5 NFS配置实例 566
23.5.1 用户需求 566
23.5.2 exports文件配置 566
23.5.3 在服务器端创建目录 567
23.5.4 输出共享目录 568
23.5.5 人力部门客户端的配置 568
23.6 使用autofs按需挂载共享目录 569
23.6.1 安装autofs 569
23.6.2 启动autofs服务 569
23.6.3 配置autofs服务开机自动启动 569
23.6.4 修改autofs配置文件 570
23.6.5 配置实例 571
23.7 NFS图形化配置 571
23.7.1 配置工具的安装 572
23.7.2 NFS服务器配置方案工具的使用 572
23.8 NFS常见问题处理 573
23.8.1 无法卸载NFS共享目录并提示device is busy 574
23.8.2 挂载共享目录失败 574
23.8.3 NFS请求挂起 575
第24章 Samba服务器配置和管理 576
24.1 Samba简介 576
24.2 Samba服务器的安装 577
24.2.1 如何获得Samba安装包 577
24.2.2 安装Samba 578
24.2.3 启动和关闭Samba 579
24.2.4 开机自动运行Samba 580
24.3 Samba服务器的基本配置 584
24.3.1 smb.conf配置文件 584
24.3.2 全局设置选项 584
24.3.3 共享选项 587
24.3.4 配置文件的生效与验证 588
24.3.5 Samba用户管理 589
24.3.6 用户映射 591
24.4 Samba安全设置 591
24.4.1 安全级别 591
24.4.2 用户访问控制 593
24.5 日志设置 595
24.6 配置实例 596
24.6.1 应用案例 596
24.6.2 配置步骤 597
24.7 Linux客户端配置 599
24.7.1 类似于FTP的客户端程序smbclient 599
24.7.2 mount挂载共享目录 600
24.7.3 挂载Windows共享目录 601
24.7.4 使用图形界面访问共享资源 603
24.8 Windows客户端配置 603
24.9 Samba常见问题处理 605
24.9.1 共享目录无法写入 605
24.9.2 Windows不能在网上邻居中浏览到Samba服务器 605
第25章 NAT服务器配置和管理 606
25.1 NAT简介 606
25.1.1 NAT概述 606
25.1.2 NAT工作原理 606
25.2 NAT地址转换方式 608
25.2.1 NAT地址相关概念 608
25.2.2 静态地址转换NAT 608
25.2.3 动态地址转换NAT 609
25.2.4 网络地址端口转换NAT 610
25.3 NAT配置 611
25.4 配置实例 612
25.4.1 应用案例 613
25.4.2 NAT服务器配置步骤 613
25.4.3 编写NAT管理脚本 616
25.5 NAT客户端配置 617
25.5.1 Linux客户端配置 618
25.5.2 Windows客户端配置 618
第26章 MySQL数据库服务器配置和管理 620
26.1 数据库简介 620
26.1.1 数据库技术简介 620
26.1.2 MySQL简介 621
26.1.3 其他常见的数据库产品 622
26.2 MySQL数据库服务器的安装 622
26.2.1 如何获得MySQL安装包 622
26.2.2 安装MySQL 623
26.2.3 启动和关闭MySQL 626
26.2.4 开机自动运行MySQL服务 628
26.3 MySQL的基本配置 632
26.3.1 MySQL客户端程序 632
26.3.2 MySQL配置文件 633
26.3.3 更改管理员口令 635
26.3.4 MySQL服务器管理程序mysqladmin 635
26.4 数据库管理 637
26.4.1 查看数据库 637
26.4.2 选择数据库 637
26.4.3 创建数据库 638
26.4.4 删除数据库 638
26.5 数据表结构管理 639
26.5.1 数据表结构 639
26.5.2 字段类型 640
26.5.3 创建数据表 641
26.5.4 更改表结构 644
26.5.5 复制数据表 646
26.5.6 删除数据表 646
26.6 数据管理 647
26.6.1 查询数据 647
26.6.2 插入数据 648
26.6.3 更新数据 650
26.6.4 删除数据 651
26.7 索引管理 651
26.7.1 创建索引 651
26.7.2 删除索引 652
26.8 用户和权限管理 652
26.8.1 MySQL权限控制原理 652
26.8.2 用户管理 655
26.8.3 用户授权 656
26.8.4 回收权限 658
26.9 MySQL备份恢复 658
26.9.1 使用mysqldump备份和恢复 658
26.9.2 使用mysqlhotcopy备份和恢复 660
26.9.3 使用SQL语句备份和恢复 661
26.9.4 启用二进制日志 662
26.9.5 直接备份数据文件 663
26.10 MySQL图形化管理工具 663
26.10.1 获得phpMyAdmin安装包 663
26.10.2 安装phpMyAdmin 664
26.10.3 配置phpMyAdmin 664
26.10.4 登录phpMyAdmin 665
26.10.5 数据库管理 666
26.10.6 数据表管理 667
26.10.7 表记录管理 668
26.10.8 用户权限管理 670
26.11 MySQL常见问题处理 672
26.11.1 phpMyAdmin出现“配置文件现在需要绝密的短语密码”警告 672
26.11.2 查询时出现Out of memory错误 672
26.11.3 忘记root用户口令的解决方法 672
第27章 Webmin:Linux上的GUI 管理工具 674
27.1 Webmin简介 674
27.2 Webmin的安装及使用 675
27.2.1 如何获得Webmin安装包 675
27.2.2 安装Webmin 676
27.2.3 启动和关闭Webmin 676
27.2.4 登录Webmin 678
27.2.5 更改Webmin的语言和主题 679
27.3 Webmin各功能模块介绍 680
27.3.1 Webmin类型模块 680
27.3.2 系统类型模块 680
27.3.3 服务器类型模块 681
27.3.4 网络类型模块 682
27.3.5 硬件类型模块 683
27.3.6 集群类型模块 684
27.3.7 其他类型模块 685
27.4 Webmin类型模块 685
27.4.1 Webmin用户管理 685
27.4.2 配置Webmin地址和端口 688
27.4.3 升级Webmin 688
27.5 系统类型模块 689
27.5.1 Cron 任务调度 689
27.5.2 用户与组 690
27.5.3 更改口令 691
27.5.4 磁盘和网络文件系统 692
27.5.5 文件系统备份 693
27.6 服务器类型模块 694
27.6.1 Apache 服务器 694
27.6.2 DHCP服务器 696
27.6.3 Postfix配置 696
27.6.4 Samba Windows 文件共享 697
27.6.5 Squid代理服务器 697
27.7 网络类型模块 698
27.7.1 网络接口 698
27.7.2 路由和网关 699
27.7.3 NFS输出 699
27.8 硬件类型模块 700
27.8.1 GRUB开机加载程序 700
27.8.2 本地磁盘分区 701
27.8.3 系统时间 702
27.9 其他类型模块 703
第28章 Oracle服务器配置和管理 704
28.1 Oracle 11g简介 704
28.2 Oracle数据库服务器的安装 705
28.2.1 如何获得Oracle安装包 705
28.2.2 软、硬件要求 706
28.2.3 安装前的配置 708
28.2.4 安装Oracle 11g 710
28.2.5 配置网络监听程序 715
28.3 数据库管理 719
28.3.1 创建数据库 720
28.3.2 更改数据库 732
28.3.3 删除数据库 734
28.4 Oracle服务管理 735
28.4.1 手工启动和关闭Oracle服务 736
28.4.2 开机自动启动Oracle数据库服务 738
28.4.3 检测Oracle数据库状态 740
28.5 Oracle图形化管理工具——OEM 741
28.5.1 安装和使用OEM 741
28.5.2 数据库性能 744
28.5.3 用户与权限管理 745
28.5.4 数据表管理 747
28.6 Oracle常见问题处理 751
28.6.1 如何获得数据库创建过程中的详细信息 751
28.6.2 访问OEM出现“安全连接失败,使用了无效的安全证书”错误 752
28.6.3 忘记sys用户口令 752
第29章 Oracle RAC服务器配置和管理 753
29.1 Oracle RAC简介 753
29.2 Oracle Clusterware安装 754
29.2.1 如何获得Clusterware安装包 754
29.2.2 安装Clusterware的硬件环境要求 755
29.2.3 安装Clusterware的软件环境要求 755
29.2.4 网络配置 756
29.2.5 配置内核参数 757
29.2.6 创建oracle用户和用户组 757
29.2.7 配置ssh协议 758
29.2.8 配置用户环境 760
29.2.9 配置存储 760
29.2.10 安装Clusterware 762
29.2.11 CRS服务的检测与启动关闭 769
29.3 安装数据库软件 771
29.3.1 安装必须的软件包 771
29.3.2 安装Oracle 11g 772
29.4 创建RAC数据库 775
29.5 RAC数据库的管理 782
29.5.1 RAC数据库进程说明 783
29.5.2 启动和关闭RAC数据库 783
29.5.3 Oracle网络监听程序配置 784
29.5.4 故障切换 786
29.6 Oracle RAC常见问题 787
29.6.1 执行root.sh脚本出现载入共享库错误 788
29.6.2 执行root.sh脚本出现初始化ocrconfig失败的错误 788
29.6.3 执行root.sh脚本出现CRS-0215错误 789
附录:Linux指令速查索引... 790

Linux服务器架设指南

内容简介回到顶部↑

Linux是当今最为流行的开源操作系统,它功能强大、性能稳定、使用灵活,既可以在普通的桌面使用,也可以用于业务庞杂的企业。本书是一本深入学习Linux的理想教程,它以Red Hat Enterprise Linux 5为依托,详细叙述了各种网络服务的安装、运行、配置方法和一些相关的知识。全书分为3篇共23章,包括网络硬件基础知识、Linux操作系统管理、主机与网络安全、防火墙、入侵检测系统,以及Telnet、SSH、VNC、FTP、DHCP、DNS、Web、MySQL、Postfix、NFS、Samba、Squid、LDAP、NTP、VPN、流媒体服务器的架设方法。.
本书附带1张DVD光盘,内容为专门为本书录制的8.5小时教学视频、Ubuntu安装光盘的镜像文件和另外赠送的35小时Linux专题学习视频。..
本书语言通俗、条理清楚、循序渐进、示例丰富,适合于已经掌握Linux操作系统入门知识、并对网络应用有了初步了解的读者阅读,也可以供Linux系统管理、维护、开发人员学习参考,同时也是各类职业院校、IT培训机构学生学习和掌握Linux高级应用的理想教材。...

目录回到顶部↑

第1篇 预 备 知 识.
第1章 网络硬件知识 2
1.1 计算机网络 2
1.1.1 计算机网络的定义 2
1.1.2 计算机网络的功能 3
1.1.3 计算机网络分类 4
1.2 局域网传输介质 6
1.2.1 双绞线 7
1.2.2 同轴电缆 9
1.2.3 光导纤维 9
1.2.4 无线介质 11
1.3 局域网连网设备 12
1.3.1 网卡 12
1.3.2 集线器 14
1.3.3 交换机 14
1.3.4 路由器 16
1.3.5 三层交换机 17
1.4 几种局域网架设实例 17
1.4.1 双机互连网络 18
1.4.2 小型交换网络 18

.1.4.3 企业网络 19
1.4.4 无线局域网 19
1.5 小结 20
第2章 Linux服务器架设规划 21
2.1 网络规划 21
2.1.1 需求分析 21
2.1.2 目标与设计原则 22
2.1.3 硬件和系统软件平台的规划 24
2.2 Linux服务器硬件规划 25
2.2.1 对CPU的要求 25
2.2.2 对内存的要求 26
2.2.3 对硬盘的要求 27
2.2.4 有关网卡的建议 28
2.3 Linux操作系统 28
2.3.1 Linux的起源 28
2.3.2 Linux的特点 29
2.3.3 Linux的发行版本 30
2.3.4 Red Hat Enterprise Linux介绍 32
2.4 小结 33
第3章 Linux系统的安装、管理与优化 34
3.1 Red Hat Enterprise Linux 5的安装 34
3.1.1 准备安装RHEL 5 34
3.1.2 开始安装RHEL 5 35
3.1.3 安装后的设置工作 39
3.2 Linux系统管理 42
3.2.1 登录系统 42
3.2.2 用户管理 43
3.2.3 进程管理 47
3.2.4 软件包管理 49
3.3 Linux性能优化 52
3.3.1 关闭不需要的服务进程 52
3.3.2 文件系统参数优化 53
3.3.3 内核参数优化 55
3.4 小结 56
第4章 Linux网络接口配置 57
4.1 TCP/IP网络基础 57
4.1.1 网络协议 57
4.1.2 ISO/OSI模型 57
4.1.3 TCP/IP模型 59
4.2 网络接口配置的基本内容 60
4.2.1 主机名 60
4.2.2 IP地址 60
4.2.3 子网掩码 62
4.2.4 默认网关地址 63
4.2.5 域名服务器(DNS) 63
4.2.6 DHCP服务器 64
4.3 配置以太网连接 64
4.3.1 添加以太网连接 65
4.3.2 配置网络参数 66
4.3.3 使用配置文件 69
4.3.4 配置无线以太网连接 70
4.4 配置拨号连接 71
4.4.1 使用Modem拨号上网 71
4.4.2 通过xDSL拨号上网 73
4.4.3 使用ISDN拨号上网 73
4.5 小结 75
第5章 Linux网络管理与故障诊断 76
5.1 Linux网络设置命令 76
5.1.1 网络接口配置命令——ifconfig 76
5.1.2 检查网络是否通畅——ping命令 78
5.1.3 追踪数据包传输路径——traceroute命令 79
5.1.4 管理系统ARP缓存——arp命令 81
5.1.5 域名查找工具——dig命令 83
5.2 网络相关的配置文件 85
5.2.1 /etc/sysconfig/network文件 85
5.2.2 /etc/sysconfig/network-scripts/ifcfg-ethN文件 86
5.2.3 /etc/resolv.conf和/etc/hosts文件 87
5.3 Linux下的网络故障诊断 88
5.3.1 诊断网卡故障 88
5.3.2 网卡驱动程序 90
5.3.3 诊断网络层问题 92
5.3.4 诊断传输层和应用层问题 92
5.4 小结 94
第2篇 Linux主机与网络安全措施
第6章 Linux主机安全 96
6.1 网络端口 96
6.1.1 什么是端口 96
6.1.2 端口的分类 97
6.1.3 查看本机的端口状态 97
6.1.4 端口的关闭与启用 99
6.1.5 端口扫描工具nmap 101
6.2 Linux自动更新 104
6.2.1 自动更新的意义 104
6.2.2 CentOS的yum客户端配置 105
6.2.3 yum客户端的使用 107
6.3 Linux平台的防毒软件 109
6.3.1 Linux平台下的计算机病毒 109
6.3.2 Clamav反病毒软件的获取与安装 110
6.3.3 Clamav反病毒软件的使用 110
6.3.4 以后台进程方式运行Clamav反病毒软件 112
6.3.5 Clamav病毒库的更新 116
6.4 SELinux简介 119
6.4.1 SELinux的工作流程 119
6.4.2 SELinux的配置 120
6.4.3 SELinux应用示例 121
6.5 小结 124
第7章 Linux系统日志 125
7.1 Linux系统日志基础 125
7.1.1 Linux系统日志进程的运行 125
7.1.2 Linux系统日志配置 126
7.1.3 查看Linux系统日志 128
7.2 Linux日志高级专题 129
7.2.1 日志的转储 129
7.2.2 登录日志 130
7.2.3 记账功能 131
7.3 日志分析工具 133
7.3.1 Logcheck日志分析工具 133
7.3.2 Swatch日志分析工具 134
7.4 小结 136
第8章 Linux路由配置 137
8.1 路由的基本概念 137
8.1.1 路由原理 137
8.1.2 路由表 138
8.1.3 静态路由和动态路由 139
8.2 Linux静态路由配置 140
8.2.1 route命令格式 140
8.2.2 普通客户机的路由设置 141
8.2.3 路由器配置实例 142
8.3 Linux的策略路由 143
8.3.1 策略路由的概念 144
8.3.2 路由表管理 144
8.3.3 路由策略管理 146
8.3.4 策略路由应用实例 147
8.4 小结 149
第9章 Linux防火墙配置 150
9.1 iptables防火墙介绍 150
9.1.1 netfilter框架 150
9.1.2 iptables防火墙内核模块 151
9.1.3 iptables命令格式 152
9.2 iptables主机防火墙 155
9.2.1 iptables防火墙的运行与管理 155
9.2.2 RHEL 5开机时默认的防火墙规则 157
9.2.3 管理主机防火墙规则 159
9.2.4 常用的主机防火墙规则 161
9.2.5 使用图形界面管理主机防火墙规则 162
9.3 iptables网络防火墙配置 164
9.3.1 保护服务器子网的防火墙规则 164
9.3.2 保护内部客户机的防火墙规则 166
9.3.3 mangle表应用举例 168
9.4 iptables防火墙的NAT配置 169
9.4.1 NAT简介 169
9.4.2 使用iptables配置源NAT 170
9.4.3 使用iptables配置目的NAT 171
9.5 小结 173
第10章 Snort入侵检测系统 174
10.1 入侵检测简介 174
10.1.1 网络安全 174
10.1.2 常见的网络攻击类型 175
10.1.3 入侵检测系统 178
10.2 Snort的安装与使用 180
10.2.1 Snort简介 180
10.2.2 Snort的安装与运行 180
10.2.3 Snort命令的格式 181
10.2.4 用Snort抓取数据包 182
10.3 配置Snort 184
10.3.1 定义Snort变量 185
10.3.2 配置Snort选项 186
10.3.3 配置Snort预处理模块 188
10.3.4 配置Snort输出插件 191
10.3.5 配置Snort规则文件 192
10.4 编写Snort规则 193
10.4.1 Snort规则基础 193
10.4.2 Snort规则头 193
10.4.3 Snort规则选项 195
10.5 小结 197
第3篇 Linux常见服务器架设篇
第11章 远程管理Linux 200
11.1 架设Telnet服务器 200
11.1.1 远程管理 200
11.1.2 Telnet工作原理 201
11.1.3 Telnet协议 202
11.1.4 实际的Telnet数据包 204
11.1.5 Telnet服务器软件的安装 205
11.1.6 Telnet服务器软件的运行 206
11.1.7 Telnet服务器软件的配置 208
11.2 架设SSH服务器 210
11.2.1 SSH概述 210
11.2.2 OpenSSH服务器的安装和运行 211
11.2.3 SSH客户端的使用 213
11.2.4 配置OpenSSH客户端 216
11.2.5 OpenSSH的端口转发功能 217
11.2.6 Windows下的SSH客户端 219
11.2.7 配置OpenSSH服务器 223
11.3 使用VNC实现远程管理 229
11.3.1 VNC简介 230
11.3.2 VNC服务器的安装与运行 230
11.3.3 VNC客户端 232
11.3.4 VNC服务器配置 234
11.4 小结 237
第12章 架设FTP服务器 238
12.1 FTP的工作原理 238
12.1.1 FTP的工作流程 238
12.1.2 FTP协议规范之一:数据传送格式 239
12.1.3 FTP协议规范之二:控制命令种类 240
12.1.4 FTP协议规范之三:应答格式 242
12.1.5 用抓包工具观察FTP协议数据包 243
12.2 FTP客户端 244
12.2.1 数据连接的主动方式和被动方式 244
12.2.2 匿名账号 246
12.2.3 数据传输的ASCII模式和二进制模式 247
12.2.4 FTP客户端常用命令详解 248
12.2.5 图形界面的FTP客户端 254
12.3 Vsftpd的安装与运行 256
12.3.1 Vsftpd服务器软件简介 256
12.3.2 Vsftpd的安装 257
12.3.3 Vsftpd的运行与简单配置 257
12.4 Vsftpd高级配置 260
12.4.1 初始配置文件 260
12.4.2 匿名用户配置 263
12.4.3 Vsftpd虚拟主机的配置 265
12.4.4 虚拟用户的配置 267
12.4.5 Vsftpd的日志 270
12.5 磁盘限额 272
12.5.1 设置支持磁盘限额的分区 272
12.5.2 设置对用户的磁盘限额 273
12.5.3 启用和终止磁盘限额 274
12.6 小结 275
第13章 DHCP服务 276
13.1 DHCP服务概述 276
13.1.1 DHCP的功能 276
13.1.2 DHCP的工作过程 277
13.1.3 DHCP报文格式 279
13.1.4 DHCP与BOOTP 280
13.2 DHCP服务器的安装与运行 281
13.2.1 DHCP服务的安装 281
13.2.2 DHCP服务器的运行 282
13.2.3 DHCP客户端 283
13.3 DHCP服务配置 285
13.3.1 ISC DHCP配置参数 286
13.3.2 ISC DHCP配置的声明和选项 288
13.3.3 ISC DHCP的DDNS功能 290
13.3.4 客户端租约数据库文件dhcpd.lease 292
13.3.5 DHCP中继代理 294
13.4 小结 295
第14章 DNS服务器架设与应用 296
14.1 DNS工作原理 296
14.1.1 名称解析方法 296
14.1.2 DNS组成 297
14.1.3 DNS查询的过程 298
14.1.4 DNS报文格式 300
14.1.5 实际的DNS报文数据.. 302
14.2 BIND的安装与运行 303
14.2.1 BIND简介 303
14.2.2 BIND的获取与安装 304
14.2.3 BIND的简单配置与运行 305
14.2.4 chroot功能 308
14.2.5 使用rndc 309
14.3 BIND的配置 311
14.3.1 BIND的主配置文件 311
14.3.2 根服务器文件named.root 315
14.3.3 区域数据文件 316
14.3.4 反向解析区域数据文件 318
14.3.5 配置DNS负载均衡功能 319
14.3.6 直接域名、泛域名与子域 320
14.3.7 辅域服务器和只缓存服务器 322
14.4 小结 324
第15章 Web服务器架设和管理 325
15.1 HTTP协议 325
15.1.1 HTTP协议的通信过程 325
15.1.2 HTTP协议的请求行和应答行 327
15.1.3 HTTP的头域 328
15.1.4 HTTP协议数据包实例 330
15.1.5 持久连接和非持久连接 333
15.2 Apache的安装与运行 335
15.2.1 Apache简介 335
15.2.2 Apache软件的获取与安装 336
15.2.3 Apache的运行 337
15.3 Apache服务器的配置 339
15.3.1 Apache全局配置选项 339
15.3.2 Apache主服务器配置 341
15.3.3 目录访问控制 346
15.3.4 配置用户个人网站 349
15.3.5 认证与授权配置 351
15.3.6 虚拟主机配置 354
15.3.7 日志记录 357
15.3.8 让Apache支持SSL 359
15.4 Apache对动态网页的支持 362
15.4.1 CGI脚本 362
15.4.2 使Apache支持PHP5 364
15.4.3 使Apache支持JSP 365
15.5 小结 369
第16章 MySQL数据库服务器架设 370
16.1 数据库简介 370
16.1.1 数据库的基本概念 370
16.1.2 SQL语言简介 371
16.1.3 MySQL数据库简介 372
16.2 MySQL数据库服务器的架设 373
16.2.1 MySQL数据库软件的安装与运行 373
16.2.2 MySQL数据库客户端 375
16.2.3 MySQL图形界面管理工具 377
16.3 MySQL服务器的配置与连接 380
16.3.1 配置文件my.cnf 380
16.3.2 mysqld进程配置 383
16.3.3 MySQL实例管理器 385
16.3.4 编程语言与MySQL数据库的连接 388
16.4 小结 389
第17章 Postfix邮件服务器架设 390
17.1 邮件系统工作原理 390
17.1.1 邮件系统的组成及传输流程 390
17.1.2 简单邮件传输协议SMTP 391
17.1.3 邮局协议POP3 394
17.1.4 Internet消息访问协议IMAP简介 396
17.2 Postfix邮件系统 398
17.2.1 Postfix概述 398
17.2.2 Postfix邮件系统结构 399
17.2.3 Postfix服务器软件的安装与运行 401
17.3 Postfix服务器的配置 403
17.3.1 Postfix服务器基本配置 403
17.3.2 Postfix邮件接收域 406
17.3.3 配置SMTP认证 408
17.4 Postfix与其他软件的集成 411
17.4.1 用vm-pop3d构建POP3服务器 411
17.4.2 用Dovecot架设POP3和IMAP服务器 413
17.4.3 使用MySQL存储邮件账号 416
17.4.4 用Squirrelmail构建Web界面的邮件客户端 417
17.4.5 用procmail过滤邮件 420
17.5 小结 423
第18章 共享文件系统 424
18.1 NFS服务的安装、运行与配置 424
18.1.1 NFS概述 424
18.1.2 远程过程调用RPC 425
18.1.3 NFS协议 426
18.1.4 NFS服务的安装与运行 428
18.1.5 NFS服务器共享目录的导出 430
18.1.6 使用图形界面管理NFS服务器 433
18.1.7 客户端使用NFS服务 434
18.1.8 自动挂载NFS文件系统 437
18.2 Samba服务的安装、运行与配置 438
18.2.1 SMB协议概述 438
18.2.2 NetBIOS协议 440
18.2.3 Samba概述 442
18.2.4 Samba服务器的安装与运行 442
18.2.5 与Samba配置有关的Windows术语 444
18.2.6 配置Samba服务器的全局选项 445
18.2.7 Samba的共享配置 448
18.2.8 使用图形界面配置Samba服务器 450
18.2.9 Samba客户端 452
18.3 小结 455
第19章 Squid代理服务器架设 456
19.1 代理服务概述 456
19.1.1 代理服务器的工作原理 456
19.1.2 Web缓存的类型和特点 458
19.1.3 3种典型的代理方式 459
19.2 Squid服务器的安装与运行 461
19.2.1 Squid简介 461
19.2.2 Squid软件的安装与运行 462
19.2.3 代理的客户端配置 463
19.3 配置Squid服务器 465
19.3.1 Squid常规配置选项 466
19.3.2 Squid访问控制 468
19.3.3 Squid多级代理配置 470
19.3.4 透明代理配置 472
19.3.5 反向代理配置 473
19.3.6 Squid日志管理 475
19.4 小结 477
第20章 LDAP服务的配置与应用 478
20.1 目录服务概述 478
20.1.1 目录服务 478
20.1.2 X.500简介 479
20.1.3 轻量级目录访问协议LDAP 480
20.1.4 LDAP的基础模型 481
20.1.5 流行的LDAP产品 482
20.2 架设OpenLDAP服务器 484
20.2.1 OpenLDAP服务器的安装与运行 484
20.2.2 OpenLDAP服务器的主配置文件 486
20.2.3 使用LDIF添加目录树 489
20.2.4 使用图形界面工具管理LDAP目录 492
20.3 使用OpenLDAP进行用户认证 494
20.3.1 Linux系统用户认证 494
20.3.2 Apache服务器的用户认证 496
20.4 小结 496
第21章 网络时间服务器的配置与使用 497
21.1 网络时间服务概述 497
21.1.1 NTP协议用途与工作原理 497
21.1.2 NTP协议的报文格式及工作模式 499
21.1.3 NTP服务的网络体系结构 500
21.1.4 时区 501
21.2 NTP服务器的安装、运行与配置 502
21.2.1 NTP服务器的安装与运行 502
21.2.2 NTP服务器端配置 504
21.2.3 NTP服务器的测试 507
21.3 NTP客户端的配置 508
21.3.1 Linux NTP客户端的配置 508
21.3.2 Windows NTP客户端的配置 509
21.4 小结 510
第22章 架设VPN服务器 511
22.1 VPN概述 511
22.1.1 VPN原理 511
22.1.2 VPN协议 513
22.1.3 VPN的身份验证协议 514
22.2 基于PPTP协议的VPN服务器架设 515
22.2.1 PPTP VPN服务器的安装与运行 516
22.2.2 PPTP服务器的配置 517
22.2.3 PPTP Windows客户端的配置与使用 519
22.3 小结 522
第23章 流媒体服务器架设 523
23.1 流媒体技术基础 523
23.1.1 流媒体传输的基本原理 523
23.1.2 实时流媒体协议RTSP 524
23.1.3 流媒体播放方式 525
23.1.4 流媒体文件的压缩格式 526
23.2 Helix Server的安装与运行 527
23.2.1 Helix Server的获取 528
23.2.2 Helix Server的安装 529
23.2.3 Helix Server的运行与停止 531
23.2.4 测试Helix Server 532
23.3 Helix Server的基本配置 534
23.3.1 Helix服务器的Web管理界面 534
23.3.2 端口设置与IP地址绑定 535
23.3.3 连接控制与冗余服务器 536
23.3.4 加载点与HTTP分发 537
23.4 Helix Server的安全设置 538
23.4.1 访问控制 538
23.4.2 用户账号数据库 539
23.4.3 认证域 540
23.4.4 资源保护 542
23.5 小结... 545

Linux珍藏系列图书相关推荐

  1. 晒书名:已收藏O'Reilly出版社‘动物世界’系列图书(一)

    引言:)子在川上,曾经曰:逝者如斯夫,不舍昼夜.恩,眼一睁一闭,已经在这个圈子里混了几年了,日夜伴随的除了Vicky,还有这些O'Reilly的禽兽系列图书,感情不言而喻,故将收藏来的46本图书的书目 ...

  2. linux怎么创建牡蛎_文件amp;目录小技巧 | Linux后门系列

    0x01 Linux 目录技巧 我们都知道 Windows 下文件和文件夹命名是有很多规则和限制的,但是可以通过一些程序来绕过限制,今天我们来看看 Linux 有哪些有趣的规则 参考 https:// ...

  3. linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解

    在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...

  4. 深入理解 Linux Cgroup 系列(二):玩转 CPU

    原文链接:深入理解 Linux Cgroup 系列(二):玩转 CPU 上篇文章主要介绍了 cgroup 的一些基本概念,包括其在 CentOS 系统中的默认设置和控制工具,并以 CPU 为例阐述 c ...

  5. linux使用shell函数扩充命令,Linux Shell系列教程之(十五) Shell函数简介 | Linux大学...

    摘要 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高. 高级语言都支持函数,Shell也不例外.今天就为大家介绍下Shell中函数相关用法. 函数可以将一个复杂功能划 ...

  6. [基础知识]Linux新手系列之三

    2019独角兽企业重金招聘Python工程师标准>>> [基础知识]Linux新手系列之三 给Linux新手 [系列之三] Linux相关资料由兄弟连分享 OK,从哪里得到Linux ...

  7. Linux视频教程系列汇总

    Linux视频教程系列汇总 该系列视频涉及Linux学习的方方面面,入门的.高级的.编程的.安全的,都有了,每一套都很完整. 由于文件比较大,全部使用FTP发布的,建议使用能重复连接的下载工具(如迅雷 ...

  8. Linux Rootkit 系列三:实例详解 Rootkit 必备的基本功能

    本文所需的完整代码位于笔者的代码仓库:https://github.com/NoviceLive/research-rootkit. 测试建议: 不要在物理机测试!不要在物理机测试! 不要在物理机测试 ...

  9. Linux学习系列之Mount

    Linux学习系列之Mount 在Linux中,如果你要使用储存设备 (Mo.硬盘.光驱等) ,就得先将它挂上 (Mount),而当储存设备挂上了之后,就可以把它当成一个目录来进行访问.挂上一个设备使 ...

最新文章

  1. 轻量级图卷积网络LightGCN介绍和构建推荐系统示例
  2. Spark学习之路 (二十二)SparkStreaming的官方文档
  3. 用户体验至上:40亿美金的ClickUp重新整合生产力工具
  4. 用Python找出数组中出现次数超过一半的数
  5. PAT (Basic Level) Practise 1040 有几个PAT(DP)
  6. 【文末赠书】漫画:什么是 “跳表” ?
  7. path r'c test.html',robot framework - robot命令参数解析
  8. weakhashmap_Java WeakHashMap keySet()方法与示例
  9. Java-判断输入数字的奇偶性
  10. 【git】搭建git服务器
  11. 前端根据银行卡号或银行的简码动态显示logo图标
  12. php excel导出科学计数法,php导出excel时科学计数法的处理方法
  13. HIVE 面试题总结
  14. java resourcebundle properties_Java使用Properties类和ResourceBundle类读取properties文件
  15. 江西银行服务器怎么选择硬件配置
  16. mac谷歌浏览器默认无痕打开
  17. Python 之多元线性回归分析
  18. D盘需要管理员权限解决办法
  19. AutoCAD使用技巧集锦
  20. 台式计算机电源线 规格,台式电脑电源线怎么接

热门文章

  1. 国产银河麒麟arm64架构部署fabric2.2
  2. VCSEL和VCSEL阵列仿真
  3. 这两年,前端程序员们究竟过得怎么样?!
  4. golang html转成pdf,在Golang中从html创建pdf
  5. 使用数据结构过滤敏感词算法
  6. 领域驱动设计(DDD)在百度爱番番的实践
  7. Nginx+ffmpeg 搭建流媒体服务器(四):H5直播演练
  8. 瑞达利欧《原则》笔记
  9. 很哇塞的网页特效之字符雨特效
  10. ahci模式下无法启动Linux,问题求助。linux引导启动失败。