《Linux网络编程技术》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:天夜创作室编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2001
  • ISBN:7115097275
  • 页数:431 页
图书介绍:本书详尽而细致地介绍了在Linux操作系统下进行网络编程所需要的各种知识,对网络编程的模型和原理、套接字函数的使用方法、多线程和多进程的结构以及大型网络应用程序的设计方法等进行了全面的讲解。书中还穿插了大量的实例程序,并配以说明,更加方便读者的学习和理解。本书内容的精心安排、简洁的措辞、丰富的实例可以使初学者迅速掌握Linux网络编程的技术,同时,Linux的高级程序员也可以从中得到一些启示,从而最大限度地发挥Linux程序的潜能。本书适用于各种Linux网络程序的开发维护人员。

第1篇 基础知识篇 3

第1章 Linux操作系统概述 3

1.1 Linux操作系统简介 4

1.1.1 Linux的来源 4

1.1.2 Linux的特征 5

1.2 常用的Linux命令 6

1.2.1 操作目录和处理文件 6

1.2.2 正文编辑命令vi 9

1.2.3 进程处理 11

1.2.4 安全与权限设置 12

1.2.5 基本的网络命令 14

1.2.6 联机帮助 16

1.3 文件系统 17

1.3.1 Linux文件系统概述 18

1.3.2 Linux文件系统的组成 18

1.3.3 文件系统管理 20

1.3.4 虚拟文件系统VFS 22

1.3.5 文件系统的相关调用 25

1.3.6 安装和卸载文件系统 27

1.4 Linux系统的安全性 29

1.4.1 安装和启动安全 29

1.4.2 用户账号与口令 30

1.4.3 文件与系统备份 31

1.4.4 网络服务的安全 32

1.5 小结与练习 33

1.5.1 小结 33

1.5.2 习题与思考 33

第2章 TCP/IP协议 35

2.1 网络传输分层 36

2.1.1 OSI参考模型 36

2.1.2 TCP/IP协议簇 37

2.2 IP协议 39

2.2.1 IP报文格式 40

2.2.2 IP地址 42

2.2.3 子网与网络掩码 44

2.2.4 IP路由 45

2.2.5 IP层的其他控制协议 46

2.3 差错和控制报文协议ICMP 47

2.4 TCP协议 49

2.4.1 TCP传输原理 49

2.4.2 传输层端口 50

2.4.3 TCP格式 50

2.4.4 建立一个TCP连接 53

2.4.5 TCP序列号预测 53

2.5 UDP协议 54

2.5.1 UDP协议简介 54

2.5.2 何时使用UDP协议 55

2.6 小结与练习 56

2.6.1 小结 56

2.6.2 习题与思考 56

第3章 网络编程基础 57

3.1 客户端与服务器通信模型 58

3.2 套接字编程基础 59

3.2.1 套接字简介 59

3.2.2 套接字网络编程原理 60

3.2.3 基本套接字函数 62

3.3 完整的读写函数 72

3.4 数据的传递 76

3.4.1 传递整形数据示例 76

3.4.2 传递字符串数据示例 81

3.4.3 数据传递的格式问题 85

3.5 小结与练习 85

3.5.1 小结 85

3.5.2 习题与思考 86

第4章 进程控制 87

4.1 进程的概念 88

4.1.1 程序与进程 88

4.1.3 进程的标志 89

4.1.2 进程控制块PCB 89

4.1.4 多进程程序的特点 92

4.2 用fork创建进程 93

4.2.1 Linux系统描述进程的数据结构 93

4.2.2 fork调用完成的操作 94

4.2.3 子进程与父进程 95

4.2.4 一个fork调用的简单实例 96

4.2.5 fork调用对文件的共享存取 97

4.3 和进程相关的系统调用 101

4.3.1 Linux系统调用简介 101

4.3.2 exec系统调用 101

4.3.3 system函数调用 104

4.3.4 wait函数调用 104

4.3.5 waitpid函数调用 105

4.3.6 setpgrp函数调用 107

4.3.7 signal函数调用 107

4.3.8 kill函数调用 109

4.3.9 alarm系统调用 110

4.3.10 exit函数调用 111

4.4 守护进程 112

4.5 多进程编程的技巧 114

4.5.1 程序结构问题 114

4.5.2 选择主体分叉点 114

4.5.3 进程间关系处理 114

4.5.4 进程间通信问题 115

4.6 小结与练习 115

4.6.1 小结 115

4.6.2 习题与思考 115

第5章 域名系统与套接字选项 117

5.1 域名系统简介 118

5.1.1 域名 119

5.1.2 名称服务器 120

5.1.3 DNS客户/服务器机制 120

5.2.1 通过域名获得IP地址 121

5.2 域名和IP地址的获取 121

5.2.2 通过IP地址获取域名信息 123

5.2.3 获取本地主机的域名地址 125

5.2.4 获取套接字本地名和相连的端地址 126

5.2.5 internet地址操作的函数调用 129

5.3 端口号和服务名的获取 130

5.3.1 通过服务名获取端口号 130

5.3.2 通过端口号获取服务名 131

5.4 其他网络相关信息的获取 132

5.4.1 getprotoent函数调用 132

5.4.2 getservent函数调用 134

5.5 套接字选项 136

5.4.1 函数getsockopt和setsockopt 136

5.4.2 通用套接字选项 137

5.4.3 函数fcntl和ioctl 141

5.5.1 小结 142

5.5 小结与练习 142

5.5.2 习题与思考 143

第6章 UDP数据报编程 145

6.1 UDP数据报编程概述 146

6.2 recvfrom和sendto函数 147

6.3 UDP服务器的工作特点 149

6.4 UDP客户机的工作特点 152

6.5.1 UDP套接字如何建立连接 156

6.5 UDP套接字的连接 156

6.5.2 数据报发送后情况 158

6.5.3 连接的重设与取消 158

6.6 UDP应用程序示例 159

6.6.1 发送和接收指定的数据报实例 159

6.6.2 OICQ的实现原理 163

6.7 UDP编程的一些常见问题 166

6.7.1 UDP与TCP的比较 166

6.7.2 UDP缺乏流量控制 166

6.8 小结与练习 167

6.8.1 小结 167

6.7.4 数据的排序问题 167

6.7.3 数据报的丢失问题 167

6.8.2 习题与思考 168

第2篇 应用提高篇 171

第7章 进程间通信与同步 171

7.1 信号处理 172

7.1.1 信号的概念 172

7.1.2 Linux系统支持的信号集 172

7.1.3 信号的捕获与处理 174

7.1.4 信号掩码 176

7.1.5 sigaction系统调用 177

7.1.6 pause系统调用 179

7.2 管道 179

7.2.1 管道的概念 179

7.2.2 创建管道 180

7.2.3 其他相关的系统调用 181

7.3.1 消息队列的数据结构 183

7.3 消息队列 183

7.3.2 有关的系统调用 184

7.4 共享内存 188

7.4.1 共享内存的创建 189

7.4.2 有关的系统调用 191

7.5 信号量 194

7.5.1 信号量的基本概念 194

7.5.2 POSIX无名信号量 195

7.5.3 system V信号量 196

7.5.4 用信号量解决互斥问题 201

7.6 小结与练习 204

7.6.1 小结 204

7.6.2 习题与思考 205

第8章 高级套接字函数 207

8.1 函数recv和send 208

8.1.1 send的用法 208

8.1.2 recv的用法 209

8.2 函数readv和writev 211

8.3 函数recvfrom和sendto 214

8.4 函数recvmsg和sendmsg 214

8.5 套接字的关闭 216

8.5.1 用close函数关闭套接字 216

8.5.2 shutdown函数的使用 216

8.6 小结与练习 218

8.6.1 小结 218

8.6.2 习题与思考 218

第9章 系统I/O与服务器模型 219

9.1 系统I/O模型简介 220

9.2 阻塞与非阻塞 221

9.2.1 阻塞套接字的特点 221

9.2.2 阻塞式I/O实现超时控制 226

9.2.3 非阻塞套接字 227

9.3 多路复用的I/O模型 231

9.3.1 多路复用简介 231

9.3.2 select函数 232

9.3.3 多路复用I/O的应用实例 234

9.4 信号驱动的I/O模型 244

9.5 创建Linux网络服务器 246

9.5.1 TCP循环服务器 246

9.5.2 TCP并发服务器 247

9.5.3 UDP循环服务器 247

9.5.4 UDP并发服务器 248

9.5.6 一个TCP并发服务器实例 249

9.5.5 多路复用I/O并发服务器 249

9.6 小结与练习 252

9.6.1 小结 252

9.6.2 习题与思考 252

第10章 带外数据 253

10.1 带外数据概述 254

10.2 带外数据的发送与接收 255

10.2.1 带外数据标志 255

10.2.2 发送带外数据 256

10.2.3 接收带外数据 257

10.2.5 带外数据的覆盖 259

10.2.4 应用程序对带外数据的处理 259

10.3 发送带外数据应用实例 260

10.4 几种接收带外数据的方法 263

10.4.1 通过信号SIGURG接收带外数据 263

10.4.2 通过多路复用模型接收带外数据 267

10.4.3 通过检测带外标识接收带外数据 269

10.5 带外数据的覆盖实例 273

10.6.2 习题与思考 278

10.6 小结与练习 278

10.6.1 小结 278

第3篇 深入实例篇 283

第11章 多线程编程 283

11.1 线程的基本概念 284

11.1.1 什么是线程 285

11.1.2 采用多线程的优点 285

11.1.3 线程的结构一览 286

11.1.4 多线程的标准 288

11.2.1 创建线程的函数 289

11.2 线程的相关调用 289

11.2.2 退出线程的函数 290

11.2.3 创建线程的简单实例 290

11.2.4 其他相关的函数调用 292

11.3 线程间的互斥 298

11.3.1 线程互斥的概念 298

11.3.2 相关的函数调用 299

11.4.2 相关的函数调用 303

11.4 线程的同步 303

11.4.1 线程同步的概念 303

11.5 线程的特定数据区 307

11.5.1 线程特定数据区概念 307

11.5.2 相关的函数调用 308

11.5.3 线程特定数据使用的方法 310

11.6 一个多线程扫描端口的实例 311

11.7.2 习题与思考 316

11.7 小结与练习 316

11.7.1 小结 316

第12章 原始套接字编程 319

12.1 原始套接字概述 320

12.2 创建原始套接字 320

12.3 发送和接收数据包 322

12.4 产生欺骗的IP数据包 323

12.5 Ping应用程序分析 327

12.5.1 Ping命令的功能 327

12.5.2 Ping程序的设计实现 328

12.5.3 Ping命令攻击目标机器 334

12.6 小结与练习 337

12.6.1 小结 337

12.6.2 习题与思考 337

第13章 综合实例——网络业务系统模拟 339

13.1.1 银行业务系统遵循的原则 340

13.1.2 银行业务系统的特点 340

13.1 银行业务系统背景 340

13.2 总体设计方案 341

13.2.1 系统构成 341

13.2.2 功能说明 342

13.3 详细设计方案(网络编程部分) 343

13.3.1 系统网络拓扑结构图 343

13.3.2 程序流程介绍 344

13.3.3 功能模块的划分 345

13.4.1 相关的头文件 346

13.4 源代码解析 346

13.4.2 公用函数的说明 349

13.4.3 地市服务器通信模块 361

13.4.4 与对方前置机通信模块 378

13.4.5 前置机处理模块 395

13.5 小结与练习 417

13.5.1 小结 417

13.5.2 习题与思考 417

附录 部分习题参考答案 419