《Linux网络编程教程》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:张威编写
  • 出 版 社:北京:北京希望电子出版社
  • 出版年份:2002
  • ISBN:7900101241
  • 页数:424 页
图书介绍:“十五”国家重点电子出版物规划项目:本书通过55个精彩的实例,全面剖析了在Linux下编写网络应用程序的方法、并阐述了网络协议架构和开发规范。

第1章 Linux平台环境简单回顾 2

1.1 文件系统及其操作 2

1.1.1 文件系统结构 2

1.1.2 文件I/O操作 5

1.1.3 文件、目录及操作 9

1.2 标准输入输出 17

1.2.1 流和buffer 17

1.2.2 I/O类型 20

1.3 进程概念及控制 22

1.3.1 进程的运行和终止 23

1.3.2 进程间竞争 24

1.3.3 wait操作 25

1.4 信号 25

1.4.1 信号屏蔽字 28

1.4.2 相关操作 30

1.5 本章小结 31

第2章 进程间通信 32

2.1 管道和FIFO 32

2.1.1 管道的创建和使用 32

2.1.2 实例 33

2.1.3 popen 和pclose函数 37

2.1.4 FIFO的创建和使用 37

2.1.5 用FIFO实现多客户服务 38

2.1.6 系统对管理和FIFO的限制 40

2.2 消息队列 41

2.2.1 消息队列的数据结构 41

2.2.2 消息队列的创建 41

2.2.3 消息队列的操作 42

2.2.4 实例 43

2.3.1 信号量的数据结构 46

2.2.5 消息队列的限制 46

2.3 信号量 46

2.3.2 信号量的创建和操作 47

2.4 共享内存区 49

2.4.1 共享内存区的数据结构 50

2.4.2 共享内存区的创建和操作 50

2.4.3 实例 52

2.4.4 共享内存区的限制 55

2.5 本章小结 55

第3章 传输层协议TCP和UDP 56

3.1 TCP/IP基本框架 56

3.1.1 网络协议与层次 56

3.1.2 数据的封装与分角 58

3.2 用户数据报协议(UDP) 59

3.1.3 客户-服务器模型 59

3.2.1 UDP首部 60

3.3 传输控制协议(TCP) 61

3.3.1 顺序传输 61

3.3.2 保证数据的可靠性与完整性 61

3.3.3 双向传输 62

3.3.4 TCP首部 62

3.4 TCP连接的建立、握手与结束 63

3.4.1 连接的建立——三方握手 64

3.4.2 TCP参数 64

3.4.3 TCP连接的终止 65

3.5 端口 66

3.5.1 端口号的分配 66

3.5.2 套接字对 68

3.6 缓冲区 69

3.7 标准Internet服务 71

3.8 本章小结 72

第4章 TCP套接字简介 74

4.1 套接字概述 74

4.2 套接字地址结构 77

4.3 位顺序调整 80

4.3.1 字节处理函数 81

4.3.2 地理转换函数 81

4.4 建立套接字 83

4.5 连接 85

4.5.1 客户端 85

4.5.2 服务器端 87

4.6 服务进程创建 93

4.6.1 函数介绍 93

4.6.2 范例 94

4.7 终止连接 98

4.8 连接地址信息获取 99

4.9 Socket编程Client/Server应用简单示例 102

4.9.1 一个简单WWW浏览器 102

4.9.2 inetd编程 106

4.9.3 获取本地IP 110

4.9.4 DNS的使用 112

4.9.5 从Socket中读出一行语句 113

4.9.6 处理用户登录及极限设置 113

410 本章小结 114

第5章 TCP套接字编程实例 115

5.1 TCP客户——服务器实例一 115

5.1.1 服务器端代码-vcserver.c 115

5.1.2 客户端代码-vcclient.c 120

5.1.3 运行结果 124

5.2.1 服务器端代码-tcpServer.c 126

5.2 实例之二 126

5.2.2 客户端代码-tcpClient.c 130

5.3 本章小结 132

第6章 UDP数据报 133

6.1 UDP通讯机制 133

6.1.1 基本通讯过程 133

6.1.2 UDP与TCP的比较 135

6.1.3 连接的UDP 136

6.1.4 UDP应用实例 138

6.2 UDP的应用场合 142

6.3 增加UDP的可靠性 143

6.4 UDP编程综合实例 144

6.5 本章小结 147

7.1 阻塞式I/O 148

7.1.1 读阻塞 148

第7章 套接字中的I/O模型 148

7.1.2 写阻塞 149

7.1.3 套接字建立中的阻塞 149

7.1.4 实例一 151

7.1.5 实例二 154

7.2 非阻塞式I/O 158

7.2.1 读操作 158

7.2.2 写操作 159

7.2.3 建立连接过程 160

7.2.4 接收连接过程 160

7.2.5 非阻塞方式的实现 160

7.3 实例 161

7.3.1 Talk实例 161

7.3.2 可处理并发服务的echo实例 164

8.1.1 getsockopt函数和setsockopt函数 168

8.1 获取和设置套接字属性 168

第8章 套接字属性控制 168

8.1.2 通用套接字属性 170

8.2 IPv4和IPv6套接字属性 177

8.3 套接字属性控制 183

8.3.1 ioctl函数 183

8.3.2 fcntl函数 184

8.4 本章小结 184

第9章 进程间通讯的同步 186

9.1 互斥锁 186

9.1.1 互斥锁的基本原理 186

9.1.2 互斥锁的基本操作函数 187

9.1.3 编程实例 188

9.2 条件变量 191

9.2.1 条件变量的基本过程 191

9.2.2 条件变量的操作函数 192

9.2.3 编程实例 194

9.3 读写锁 197

9.3.1 基本原理 197

9.3.2 读写锁的操作函数 197

9.4 记录上锁 199

9.4.1 记录上锁的基本原理 199

9.4.2 fcntl记录上锁 199

9.4.3 记录上锁应用举例 201

9.5 本章小结 202

第10章 多路复用和信号驱动I/O 203

10.1 多路复用 203

10.1.1 多路复用的基本原理 203

10.1.2 select函数 204

10.1.3 select应用实例 206

10.2 poll函数 211

10.3 多路复用编程实例 212

10.4 信号驱动I/O 219

10.5 本章小结 223

第11章 高级套接字I/O操作 225

11.1 send和recv函数 225

11.1.1 send 225

11.1.2 recv 226

11.2 readv和writev函数 227

11.2.1 readv函数 227

11.2.2 writev函数 228

11.3 sendto和recvfrom函数 229

11.3.1 sendto函数 229

11.3.2 recvfrom()函数 230

11.3.3 一个运用sendto()和recvfrom()函数的实例 230

11.4 recvmsg和sendmsg函数 232

11.5 辅助数据 233

11.6 本章小结 234

第12章 多线程编程及网络应用 235

12.1 基本概念 235

12.1.1.引入多线程的原因 235

12.1.2 线程的基本概念 236

12.1.3 线程的分类 237

12.2 线程基础 237

12.2.1 线程的基本操作函数 237

12.2.2 简单的多线程编程 239

12.2.3 修改线程的属性 243

12.3 线程应用中的同步问题 245

12.3.1 特定线程数据 245

12.3.2 互斥锁 246

12.3.3 条件变量 248

12.3.4 信号量 251

12.4 多线程编程的网络应用 253

12.4.1 函数的多线程安全性 253

12.4.2 多线程的实际应用 254

12.5 本章小结 255

第13章 IP协议及其属性 256

13.1 IPv4内容 256

13.1.1 IPv4数据报的格式 256

13.1.2 IPv4地址 258

13.1.3 IPv4选项 260

13.1.4 Internet控制报文协议ICMP 263

13.1.5 Internet路由选择协议 264

13.1.6 IPv4的局限性及其缺点 267

13.2 IPv6内容 267

13.2.1 Ipv4 基本头部的格式 268

13.2.2 IPv6到IPv6的变化 270

13.2.3 IPv6地址 270

13.2.4 IPv6的扩展头部 273

13.2.5 IPv6路由 275

第14章 网络编程的安全性问题 276

14.1 系统子程序 276

14.1.1 I/O子程序 276

14.1.2 进程控制 277

14.1.3 文件属性 277

14.1.4 UID和GID的处理 279

14.2 标准C库 279

14.2.1 标准I/O 279

14.2.2 /etc/passwd处理 280

14.2.3 /etc/group的处理 281

14.3 写安全的C程序 282

14.2.4 加密子程序 282

14.2.5 运行shell 282

14.4 root程序的设计 284

14.5 本章小结 285

实例一 Ping 288

实例二 聊天室的实现 297

实例三 端口扫描程序 318

实例四 网页更新检查程序 323

实例五 sniffer的基本实现 329

实例六 IP包检查程序 336

实例七 IP欺骗实例 342

实例八 路由测试程序 347

实例九 Linux防火墙的编写 356

实例十 守护进程 361

实例十一 普通文件传输协议(TFTP) 367

1 使用语法 388

附录一 GCC命令选项 388

2 选项 389

附录二 Makefile文件的编写方法 394

1 Makefile文件的基本结构 394

2 Makefile文件编写规则 395

3 Makefile变量 395

4 假象目的 397

5 函数 398

6 实用Makefile举例 398

7 一个的功能齐全的Makefile 399

附录三 GDB调试器 403

1 GDB的基本使用方法 403

2 GDB命令 409

3 在GDB下运行程序 412