《Linux网络编程》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:林宇,郭凌云编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2000
  • ISBN:7115087660
  • 页数:498 页
图书介绍:本书比较完整地介绍了Linux网络编程的知识。全书共分成四篇:基础知识篇、初级应用篇、应用提高篇和高级编程篇。在第一篇(第一至三章)中,介绍了Linux最基本的概念:文件系统和进程系统,对这两个概念进行了比较深入的说明和分析。在第二篇(第四至八章)中,主要讲述网络应用的基础,介绍了基本套接字编程、输入/输出的基本模型、带外数据的发送和接收以及服务器编程的模型、TCP/UDP编程比较等。在第三篇(第九至十二章)中,主要讲述如何构造网络应用,介绍了高级套接字函数的使用及如何编写守护进程、如何传递复杂的数据结构、如何编写RPC应用。在第四篇(第十三至十六章)中,侧重于服务器性能的提高,介绍了服务器的预创建技术、使用UNIX套接字来实现父进程对子进程的动态管理、多线程编程,并在最后列举了一个较完整的网络应用实例。本书主要读者对象为网络编程人员,对于网络编程的初学者可以阅读全书,对于具有一定网络编程经验的读者可以有选择地阅读本书相关章节。

第一篇 基础知识篇 1

第一章 文件系统和进程系统 2

1.1 文件系统 2

1.1.1 文件系统的总体结构 2

1.1.2 文件结构和目录结构 8

1.2 文件系统的相关编程 14

1.3 进程系统 26

1.3.1 进程的概念 26

1.3.2 Linux中描述进程的核心数据结构 30

1.3.3 和进程相关的系统调用 38

本章小结 46

第二章 进程间通信和同步 47

2.1 信号的处理 47

2.1.1 Linux中支持的信号 47

2.1.2 信号的捕获和处理 48

2.1.3 系统调用和信号的相互作用 52

2.1.4 pause和suspend函数 54

2.2 信号量 56

2.2.1 进程间的互斥 56

2.2.2 信号量的结构和信号量操作函数 57

2.2.3 应用示例 59

2.3 消息队列 63

2.3.2 消息队列的操作函数 64

2.3.1 消息队列的结构 64

2.3.3 应用示例 66

2.4 共享内存 70

2.4.1 共享内存的操作函数 71

2.4.2 应用示例 72

本章小结 86

第三章 TCP/IP协议 87

3.1 OSI参考模型、协议和服务 87

3.2 协议和服务 88

3.2.1 TCP/IP 89

3.2.2 TCP和UDP的比较 90

3.2.3 Internet上两主机进程间通信数据的封装和解包 90

3.2.4 IP地址、网络地址和网络掩码 92

3.2.5 传输层端口 93

3.3 域名系统 94

3.4 域名解析和名字服务器 95

3.4.1 TCP协议 96

3.4.2 TCP的确认和超时重发机制 97

3.4.3 TCP头部格式(Header Format) 98

3.4.4 TCP连接的状态转移过程 100

3.5 IP数据包格式 107

3.6 Internet消息控制协议 109

本章小结 110

第二篇 初级应用篇 111

4.1 基本套接字函数族 112

4.1.1 socket编程的基本流程 112

第四章 基本套接字编程实践 112

4.1.2 函数socket 114

4.1.3 函数connect 116

4.1.4 函数bind 119

4.1.5 函数listen 121

4.1.6 函数accept 122

4.1.7 函数read和write 123

4.1.8 函数close 125

4.2 应用示例 128

4.3 程序结果和异常说明 146

4.3.1 程序的运行结果 146

4.3.2 程序的异常 147

本章小结 154

第五章 无阻塞套接字和单进程轮询服务器 155

5.1 无阻塞套接字 155

5.1.1 阻塞套接字的缺点 155

5.1.2 阻塞和无阻塞的比较 156

5.1.3 无阻塞的实现 159

5.2 单进程轮询服务器工作方式 160

5.3 应用示例 161

5.3.1 应用说明 161

5.3.2 应用源码 162

第六章 带外数据与多路复用、信号驱动的输入/输出模型 178

6.1 多路复用的输入/输出模型 178

6.1.1 多路复用模型的概念与select函数 178

6.1.2 应用示例 181

6.1.3 pselect函数对select的增强 191

6.2 信号驱动的输入/输出模型 193

6.3 系统I/O模型的总结 194

6.4 带外数据 196

6.4.1 带外数据的发送 196

6.4.2 带外数据的接收 198

6.4.3 带外数据接收方法的示例 202

本章小结 216

第七章 UDP数据报 217

7.1 UDP数据报的概述 217

7.2 UDP通信的过程 218

7.3 UDP的服务器和TCP服务器的比较 220

7.4 UDP的“连接” 222

7.5 应用示例 224

本章小结 238

第八章 域名系统和通用套接字选项 239

8.1 域名系统 239

8.1.1 域名系统的回顾 239

8.1.2 通过地址获取主机信息 240

8.1.3 通过主机名获取主机信息 242

8.1.4 获取本地主机的信息 242

8.1.5 通过服务名获取服务端口 243

8.1.6 通过端口号获取服务名 244

8.2 套接字选项 245

8.2.1 获取和设置套接字选项 245

8.2.2 通用套接字选项 246

本章小结 252

第三篇 应用提高篇 253

第九章 高级套接字函数编程实践 254

9.1 函数recv和send 254

9.1.1 函数send 254

9.1.2 函数recv 255

9.1.3 应用示例 256

9.1.4 应用源码和分析 259

9.2 函数readv和writev 275

9.2.1 函数说明 275

9.2.2 应用示例 278

9.3 函数recvmsg和sendmsg 285

本章小结 287

第十章 守护进程和超级服务器inetd 288

10.1 守护进程的原理 288

10.2 编程实践 292

10.3 超级服务器inetd的工作原理 300

10.3.1 超级服务器的概念 300

10.3.2 超级服务器使用的配置文件 301

10.3.3 inetd处理并发服务的过程 301

本章小结 305

第十一章 数据结构的传输和XDR标准 306

11.1 数据结构的传送 306

11.1.1 数据结构传送的问题 306

11.1.2 简单的示例 307

11.2 XDR标准 318

11.2.1 XDR中包含的数据类型 319

11.2.2 XDR实现的原理 319

11.2.3 XDR的转换函数库 320

本章小结 330

第十二章 RPC远程过程调用原理和实践 331

12.1 RPC的原理 331

12.1.1 XDR的更进一步 331

12.1.2 本地函数调用的过程 332

12.1.3 用远程调用来虚拟本地调用 335

12.2 RPC的实现 336

12.2.1 远程过程的标识 337

12.2.2 端口的动态映射 338

12.2.3 RPC的报文 339

12.2.4 RPC开发工具 340

12.2.5 设计的原则 340

12.3 应用示例:网络记事本 341

12.3.1 编写本地应用 341

12.3.2 Rpcgen构建RPC应用 347

12.3.3 编写RPC说明文件 348

12.3.4 修改客户端程序 359

12.3.5 修改服务器端程序 365

12.3.6 调用的完整过程 368

12.3.7 程序的结果、分析和总结 369

本章小结 371

第四篇 高级编程篇 373

13.1 UNIX域套接字 374

13.1.1 UNIX域的地址结构 374

第十三章 UNIX域套接字和并发服务器的预创建技术 374

13.1.2 UNIX套接字使用的示例 375

13.1.3 传递文件描述符 380

13.2 并发服务器的预创建技术 383

13.2.1 预创建固定服务器进程的数量 383

13.2.2 动态的管理子进程 385

13.2.3 重用服务器子进程 386

本章小结 398

14.1 原始套接字 399

14.1.1 原始套接字的创建 399

第十四章 原始套接字编程实践 399

14.1.2 原始套接字的使用 400

14.1.3 IP包头和ICMP报文的C语言描述 400

14.2 ping应用程序 403

14.2.1 程序设计 403

14.2.2 程序源码 405

14.3 IP套接字选项 410

14.3.1 IP_TTL选项 410

14.3.2 IP_TOS选项 410

14.3.3 IP_OPTIONS选项 410

14.3.4 IP_HDRINCL选项 410

本章小结 410

15.1.1 线程的概念 412

第十五章 多线程编程 412

15.1 线程的概念 412

15.1.2 线程的分类 414

15.1.3 线程的创建和等待函数 416

15.1.4 线程的属性函数 417

15.2 线程间的同步 420

15.2.1 无名信号量 420

15.2.2 互斥锁、条件变量和条件信号 423

15.2.3 线程和信号 434

15.3 在网络程序中应用多线程 440

15.3.1 线程间参数的传递 440

15.3.2 线程安全函数的设计 443

15.3.3 多进程的并发服务器和多线程的并发服务器 450

15.3.4 客户端进程的多线程化 456

本章小结 457

第十六章 网络售票系统的简单模拟 458

16.1 系统的总体设计 458

16.1.1 应用的说明 458

16.1.2 数据格式的设计 458

16.1.3 服务器端的设计 460

16.1.4 客户端的设计 464

16.2 程序源码和解析 465

16.2.1 服务器端的源码 465

16.2.2 客户端的源码 482

本章小结 497