第1章 Linux网络配置 1
1.1 Linux内核对网络的支持 1
1.1.1 对协议的支持 1
1.1.2 对网络设备的支持 2
1.2 配置网络界面 3
1.2.1 动手配置网络界面 4
1.2.2 ifconfig配置网络界面 4
1.2.3 route命令加入路由 6
1.3 有关网络的常用命令 7
1.3.1 arp 7
1.3.2 hostname 8
1.3.3 netstat 8
1.3.4 login 9
1.3.5 nslookup 9
1.3.6 ping 9
12.3.7 route 10
1.4 小结 10
第2章 TCP/IP的基本原理 11
2.1 计算机网络的体系结构模型 11
2.1.1 ISO模型 11
2.1.2 TCP/IP Internet分层模型 13
2.1.3 协议分层的原则 14
2.1.4 ISO与Internet分层法的区别 15
2.2 TCP/IP协议中的传输层 16
2.2.1 TCP/IP协议族 16
2.2.2 用户数据报协议UDP 18
2.2.3 传输控制协议TCP 18
2.2.4 TCP连接的建立和终止 20
2.2.5 TCP状态机 21
2.2.6 端口号和套接口对 21
2.2.7 并发服务器 23
2.2.8 节、IP数据报、帧、缓冲区大小及其影响 25
2.3 常见Internet进程的协议使用 26
2.4 客户与服务器模型 27
2.4.1 客户与服务器 27
2.4.2 客户-服务器中的并发性 28
2.5 小结 29
第3章 套接口编程基础 30
3.1 套接口地址结构 30
3.1.1 通用套接口地址结构 30
3.1.2 数据类型 30
3.1.3IPv4套接口地址结构 31
3.2 一些基本函数 32
3.2.1 字节排序函数 32
3.2.2 字节操纵函数 33
3.2.3 地址转换函数 33
3.2.4 字节流的读写函数 34
3.2.5 建立连接函数 36
3.2.6 值—结果参数 39
3.2.7 套接口函数小结 40
3.3 一个简单例子 42
3.4 小结 44
第4章 客户-服务器软件设计中的算法 45
4.1 客户软件设计中的算法 45
4.1.1 一些细节问题 46
4.1.2 TCP客户程序算法 48
4.1.3 UDP客户程序算法 49
4.2 服务器软件设计的算法和问题 51
4.2.1 并发服务器和迭代服务器 51
4.2.2 面向连接的和无连接的服务 52
4.2.3 迭代服务器的算法 53
4.2.4 并发服务器的算法 55
4.2.5 各种服务器的比较 57
4.2.6 服务器死锁 58
4.3 小结 58
第5章 TCP套接口编程 60
5.1 基本TCP客户-服务器模型 60
5.1.1 如何编写一个简单的TCP客户与服务器 60
5.1.2 队列问题 63
5.1.3 并发服务器 63
5.2 启动和终止 65
5.2.1 客户与服务器的启动 65
5.2.2 客户与服务器的终止 66
5.3 信号处理 66
5.3.1 signal函数 67
5.3.2 清除僵尸进程 67
5.3.3 wait函数和waitpid函数 68
5.4 I/O模型 70
5.4.1 阻塞I/O模型 70
5.4.2 非阻塞I/O 71
5.4.3 I/O复用 71
5.4.4 信号驱动I/O 71
5.4.5 异步I/O 72
5.4.6 各种模型的比较 72
5.5 select函数 72
5.5.1 select函数 72
5.5.2 描述字准备好的条件 73
5.5.3 select函数应用 74
5.6 充分利用信道容量 75
5.6.1 shutdown函数 75
5.6.2 批量输入 76
5.7 单进程的回射服务器 77
5.8 poll函数 80
5.8.1 poll函数 81
5.8.2 用poll函数个改回射服务器程序 82
5.9 小结 84
第6章 UDP套接口编程 85
6.1 典型的UDP客户与服务器模型 85
6.1.1 套接口函数的调用 85
6.1.2 recvfrom函数和sendto函数 86
6.1.3 回射程序 86
6.2 可靠性问题 88
6.2.1 数据报的丢失 88
6.2.2 服务器进程没有启动 89
6.2.3 验证服务器的响应 89
6.3 UDP套接口的连接 90
6.3.1 建立连接 90
6.3.2 断开连接 91
6.3.3 未连接套接口与已连接套接口的比较 91
6.3.4 已连接套接口的应用 92
6.3.5 UDP套接口的流量问题 93
6.3.6 TCP和UDP回射服务器程序 93
6.4 改善UDP应用程序性能 95
6.4.1 何时使用UDP而不是TCP 95
6.4.2 增加可靠性 96
6.5 套接口选项 97
6.5.1 getsockopt和setsockopt函数 97
6.5.2 基本套接口选项 99
6.5.3 TCP套接口选项 102
6.5.4 IPv4套接口选项 102
6.6 小结 103
第7章 名字与地址转换 104
7.1 套接口函数 104
7.1.1 域名系统DNS(Domain Name System) 104
7.1.2 gethosbyname 105
7.1.3 gethostbyaddr函数 107
7.1.4 取得当前主机的名字的函数 107
7.1.5 关于服务器的两个函数 108
7.2 getaddrinfo函数 110
7.2.1 getaddrinfo函数 111
7.2.2 适用于TCP套接口的几个函数 113
7.2.3 适用于UDP套接口的几个函数 117
7.3 getnameinfo函数 120
7.4 小结 121
第8章 原始套接口编程 122
8.1 原始套接口的操作 122
8.1.1 创建原始套接口 122
8.1.2 写套接口 123
8.1.3 读原始套接口 123
8.2 ping程序 124
8.3 小结 129
第9章 带外数据 130
9.1 I/O函数 130
9.1.1 recv和send函数 130
9.1.2 resdv和writev函数 131
9.1.3 recvmsg和sendmsg函数 131
9.2 TCP带外数据 133
9.2.1 带外数据的发送 133
9.2.2 带外数据的接收 134
9.3 小结 137
第10章 进程与线程 138
10.1 进程 138
10.2 线程 138
10.2.1 pthread_creat函数 139
10.2.2 pthread_join函数 140
10.2.3 pthread_self函数 140
10.2.4 pthread_detach函数 140
10.2.5 pthread_exit函数 140
10.2.6 pthread_key_create函数 141
10.2.7 pthread_once函数 141
10.2.8 pthread_getspecific函数 141
10.2.9 pthread_setspecific函数 142
10.2.10 pthread_mutex_lock函数 142
10.2.11 pthread_mutex_unlock函数 142
10.3 str-cli函数 142
10.4 使用线程的TCP回射服务器程序 144
10.5 共享资源的保护 145
10.5.1 文件和记录锁 145
10.5.2 线程互斥锁 145
10.6 小结 147
第11章 守护进程 148
11.1 守护进程 148
11.2 守护进程的启动 148
11.3 守护进程的消息处理 148
11.3.1 syslog函数 148
11.3.2 syslogd守护进程 150
11.3.3 openlog函数和closelog函数 150
11.4 守护进程的生成 151
11.4.1 使用daemon_init函数 151
11.4.2 使用inetd超级服务器 153
11.5 小结 155
第12章 广播 156
12.1 概述 156
12.2 广播地址及与单播的比较 157
12.3 广播中的udp-quest函数 159
12.4 竞争状态 160
12.5 小结 163
第13章 CGI简介 164
13.1 World Wide Web 164
13.2 CGI程序 164
13.3 CGI开发工具 165
13.3.1 解释型语言 165
13.3.2 编译型语言 166
13.4 CGI脚本的结构 166
13.4.1 初始化 166
13.4.2 处理 167
13.4.3 终止 167
13.5 CGI程序库 167
13.5.1 个人库 167
13.5.2 公共库 167
13.6 CGI的基本元素 168
13.6.1 环境变量 168
13.6.2 URL编码信息 171
13.6.3 头标信息 172
13.6.4 输出 173
13.7 小结 174
第14章 Perl的数据结构 175
14.1 量与常量 175
14.1.1 变量 175
14.1.2 常量 177
14.2 数组和散列 178
14.2.1 数组 178
14.2.2 散列 180
14.3 引用 182
14.3.1 直接引用 182
14.3.2 匿名数组和散列 183
14.4 小结 183
第15章 Perl运算符 184
15.1 算术运算符 184
15.2 位逻辑运算符 184
15.2.1 位逻辑运算符的种类 184
15.2.2 功能说明 184
15.3 赋值运算符 185
15.4 关系运算符 185
15.5 递增/递减运算符 186
15.6 逻辑运算符 186
15.7 字符串运算符 187
15.8 其他运算符 188
15.8.1 条件运算符 188
15.8.2 逗号运算符 188
15.9 运算符的优先极和结合性 188
15.10 小结 189
第16章 控制语句 190
16.1 if语句 190
16.1.1 基本形式 190
16.1.2 一般形式 190
16.2 While语句 191
16.3 until语句 191
16.4 do语句 192
16.5 for语句 193
16.6 foreach语句 193
16.7 continue语句 196
16.8 last语句 196
16.9 next语句 197
16.10 redo语句 197
16.11 模拟Switch语句 198
16.12 小结 199
第17章 Pelr的I/O处理 200
17.1 命令行输入 200
17.1.1 ARGV变量 200
17.1.2 命令行开关参数 202
17.2 文件操作 203
17.2.1 文件和关闭 203
17.2.2 数据的定位 204
17.2.3 文件的修改 204
17.2.4 文件测试 205
17.3 打印技术 206
17.3.1 print函数 206
17.3.2 printf函数 207
17.3.3 sprintf函数 208
17.3.4 write函数 208
17.3.5 format语句 208
17.4 小结 210
附录 headfile.h头文件 211