《unix系统v第4版-程序员指南:网络界面》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2222
  • ISBN:
  • 页数:509 页
图书介绍:

第一篇 TLI和Socket编程 1

第一章 TLI和Socket编程引论 1

1.1 本文档的组织 1

1.2 网络选择和名字到地址的映射 1

目录 1

2.2 背景 3

图2—1:OSI参考模型 3

图和表 3

2.1 引言 3

第二章 传输界面编程 3

2.3 本章文档的组织 4

2.4 传输界面概述 5

图2—2:传输界面 5

2.4.1.1 连接方式服务 6

2.4.1 服务方式 6

表2—1:“传输界面”的本地管理例程 7

图2—3:用者和供者间的通道 7

图2—4:传输连接 8

表2—3:连接方式数据传输例程 9

表2—2:用于建立传输连接的例程 9

表2—5:非连接方式数据传送例程 10

表2—4:连接释放例程 10

2.4.1.2 非连接方式服务 10

2.4.2 状态转换 10

2.5 连接方式服务介绍 11

2.5.1 本地管理 11

2.5.1.1 委托方 12

2.5.1.2 服务方 13

2.5.2 建立连接 16

2.5.2.1 委托方 17

2.5.2.3 服务方 18

2.5.2.2 事件处理 18

图2—5:监听和回答传输端点 21

2.5.3.1 委托方 22

2.5.3 数据传送 22

2.5.3.2 服务方 23

2.5.4 释放连接 25

2.5.4.1 服务方 26

2.5.4.2 委托方 26

2.6.1 本地管理 27

2.6 非连接方式服务介绍 27

2.6.2 数据传送 29

2.6.3 数据报出错 31

2.7 读/写界面 32

2.7.2 read 33

2.7.1 write 33

2.8.1 异步执行方式 34

2.8 高级专题 34

2.7.3 close 34

2.8.2 高级编程示例 35

表2—6:描述传输界面状态转换的状态 41

2.9.2 发出事件 41

2.9.1 传输界面状态 41

2.9 状态转换 41

表2—7:发出事件 42

2.9.3 发来事件 42

表2—8:发来事件 43

2.9.5 状态表 43

2.9.4 传输用户动作 43

表2—9:公共的本地管理状态表 44

表2—10:非连接方式状态表 44

表2—11:连接方式状态表 45

2.10 协议无关性准则 45

2.11 示例 46

2.11.1 连接方式委托方 46

2.11.2 连接方式服务方 48

2.11.3 非连接方式事务服务方 51

2.11.4 读/写委托方 53

2.11.5 事件驱动服务方 54

2.12 词汇表 59

3.2.1 Socket的类型 63

3.2 基础 63

3.1 背景 63

第三章 Socket界面 63

3.2.2 Socket的创建 64

3.2.3 联编本地名字 65

3.2.4 连接的建立 66

3.2.5 数据传输 68

3.2.6 关闭Socket 68

图3—1:初始化一个Internet域的流连接 69

图3—2:接受一个Internet域的流连接 70

3.2.7 非连接Socket 71

图3—3:读Internet域数据报 72

图3—4:发送Internet域数据报 73

3.2.8 输入/输出多路复用 74

图3—5:用select()检查挂起的连接 76

3.3 支持的例程 77

3.3.2 网络名字 78

3.3.1 主机名字 78

3.3.3 协议名字 79

3.3.4 服务名字 79

3.3.5 其它 80

表3—1:运行库例程 80

图3—6:远程注册委托方代码 81

3.4 委托方/服务方模式 82

3.4.1 服务方 82

图3—7:远程注册服务方 83

3.4.2 委托方 85

3.4.3 非连接的服务方 86

图3—9:rwho服务程序 87

图3—8:ruptime程序的输出 87

3.5.1 不同波段数据 89

3.5 高级专题 89

图3—10:当接受不同波段数据时刷清终端I/O 90

3.5.2 非阻塞Socket 91

图3—11:I/O请求异步通知的使用 92

3.5.3 中断驱动的Socket I/O 92

3.5.4 信号与进程组 92

图3—12:SIGCHLD信号的使用 93

3.5.6 地址联编 94

3.5.5 选择具体协议 94

3.5.7 广播和确定网络配置 96

3.5.8 Socket选项 99

3.5.9 inetd 100

第四章 Socket迁移和Socket到TLI的转换 103

4.1 Socket迁移和Socket到TLI的转换 103

4.1.1 连接方式 103

4.1.1.1 建立Socket连接:委托方代码 103

图4—1:面向流的应用程序的委托方侧 104

图4—2:TLI委托方代码 105

4.1.1.2 建立TLI连接:委托方代码 105

4.1.1.3 建立Socket连接:服务方代码 106

4.1.1.4 建立TLI连接:服务方代码 107

图4—3:Socket服务方代码 107

图4—4:TLI服务方代码 108

4.1.2.1 基于Socket的数据报 110

4.1.2 非连接方式 110

图4—5:发送Internet域数据报 110

4.1.2.2 TLI数据报 111

图4—6:TLI数据报代码 112

4.1.3 同步和异步方式 113

4.1.4 出错处理 114

表4—1:TLI/Socket对等项表 115

4.1.5 Socket到TLI的转换 115

4.1.6 将Socket应用移入Systemm V R4 116

表4—2:Sock实现的不同之处 117

5.1 RPC引言 121

5.1.2 定义 121

5.1.1 技术信息的组织 121

第二篇 远程过程呼叫 121

第五章 远程过程呼叫引论 121

5.2 RPC概述 122

图5—1:用远程过程呼叫的网络通信 123

5.2.1 RPC的版本和号码 124

5.2.2 网络选择 124

5.2.2.1 名字到地址的转换 126

5.2.3 rpcbind设施 127

5.2.3.1 地址登记 127

5.2.3.2 rpcinfo命令 128

5.2.4 RPC的较低层次 128

图5—2:委托方侧的RPC较低层次 129

图5—3:服务方侧的RPC较低层次 130

5.2.5 外部数据表示 130

6.1.2 技术信息的组织 131

6.1.1 rpcgen概述 131

6.1 引言 131

第六章 rpcgen编程指南 131

6.2 rpcgen拓导 132

6.2.1 把本地过程转换成远程过程 132

6.2.2 用rpcgen生成XDR例程 138

6.2.3 使用预处理伪指令 143

6.3 通用的RPC编程技巧 144

6.3.1 网络类型(传输选择) 144

6.3.2 改变延时 145

6.3.3 委托方认证 145

6.3.4 rpcgen命令行定义语句 146

6.3.5 服务方对广播呼叫的应答 147

6.3.6 端口监控程序支持 147

6.3.7 分派表 148

6.3.8 用rpcgen调试 149

6.4 RPC语言参考 150

6.4.1 定义 150

6.4.2 枚举 150

6.4.5 说明 151

6.4.3 常量 151

6.4.4 类型定义 151

6.4.6 结构 152

6.4.7 联合 153

6.4.8 程序 154

6.4.9 特殊情况 155

7.1 引言 157

7.1.1 RPC软件包概述 157

第七章 远程过程呼叫编程指南 157

7.1.2 技术信息的组织 159

7.2 RPC的简化界面 159

7.2.1 基于RPC库的网络服务 160

7.2.2 远程过程呼叫和登记 161

7.2.2.1 rpc_call()例程 161

7.2.2.2 rpc_reg()例程 162

7.2.2.3 传递任意的数据类型 163

7.3 RPC的较低层次 167

7.3.1 顶层 167

7.3.1.1 顶层:委托方侧 167

7.3.1.2 顶层:服务方侧 169

7.3.2 中间层 171

7.3.2.1 中间层:委托方侧 171

7.3.2.2 中间层:服务方侧 172

7.3.3 专家层 173

7.3.3.1 专家层:委托方侧 173

7.3.3.2 专家层:服务方侧 176

7.3.4 底层 178

7.3.4.1 底层:委托方侧 178

7.3.4.2 底层:服务方侧 178

7.4 低层数据结构 179

7.5 使用原始RPC进行低层程序测试 181

7.6 高级RPC编程技巧 183

7.6.1 服务方侧的select() 183

7.6.2 广播RPC 184

7.6.3 批处理 185

7.6.3.1 批处理性能 188

7.6.4 认证 189

7.6.4.1 AUTH_NONE:委托方侧 189

7.6.4.2 AUTH_NONE:服务方侧 189

7.6.4.3 ANTH-SYS认证 190

7.6.4.4 ANTH_DES认证 193

7.6.5 使用端口监控程序 195

7.6.5.1 使用inetd 196

7.6.5.2 使用listener 196

7.7 高级例子 197

7.7.1 版本 198

7.7.2 面向连接的传输 199

7.7.3 回调过程 202

7.7.4 用XDR分配内存 206

第八章 外部数据表示标准:协议规格 209

8.1 XDR引言 209

8.1.1 基本的块大小 209

8.2.1.3 编码 210

8.1.2 技术信息的组织 210

8.2 XDR数据类型声明 210

8.2.1 整数 210

8.2.1.1 描述 210

8.2.1.2 声明 210

8.2.3.1 描述 211

8.2.4.1 描述 211

8.2.4 布尔量 211

8.2.3.3 编码 211

8.2.3.2 声明 211

8.2.2 无符号整数 211

8.2.3 枚举 211

8.2.2.3 编码 211

8.2.2.2 声明 211

8.2.2.1 描述 211

8.2.5.1 描述 212

8.2.4.2 声明 212

8.2.4.3 编码 212

8.2.5.2 声明 212

8.2.5.3 编码 212

8.2.6 浮点数 212

8.2.6.1 描述 212

8.2.5 双整数和无符号双整数 212

8.2.6.3 编码 213

8.2.6.2 声明 213

8.2.7 双精度浮点数 213

8.2.7.1 描述 213

8.2.7.2 声明 213

8.2.7.3 编码 213

8.2.8 定长不透明数据 214

8.2.8.1 描述 214

8.2.8.2 声明 214

8.2.8.3 编码 214

8.2.9 可变长不透明数据 214

8.2.9.1 描述 214

8.2.10 串 215

8.2.10.1 描述 215

8.2.10.2 声明 215

8.2.9.3 编码 215

8.2.9.2 声明 215

8.2.10.3 编码 216

8.2.12 可变长数组 216

8.2.11 定长数组 216

8.2.11.1 描述 216

8.2.11.2 声明 216

8.2.11.3 编码 216

8.2.12.1 描述 216

8.2.13.3 编码 217

8.2.13.2 声明 217

8.2.13.1 描述 217

8.2.13 结构 217

8.2.12.3 编码 217

8.2.12.2 声明 217

8.2.14 加以鉴别的联合 218

8.2.14.1 描述 218

8.2.14.2 声明 218

8.2.14.3 编码 218

8.2.15 空 218

8.2.15.1 描述 218

8.2.15.2 声明 219

8.3.2 typedef 219

8.3.1 常量 219

8.3 其它XDR声明 219

8.2.15.3 编码 219

8.3.3 可选的数据 220

8.4.2 词法注释 221

8.4.1 记号约定 221

8.4 XDR语言规格 221

8.4.3 语法信息 222

8.5 XDR数据描述的例子 224

8.4.3.1 语法注释 224

8.6 参考文献 225

9.1 引言 227

9.1.1 术语 227

9.1.2 协议的一般属性 227

9.1.2.1 RPC模式 227

第九章 远程过程呼叫:协议规格 227

9.1.2.3 联编和约定独立性 228

9.1.2.2 传输和语义 228

9.1.2.4 认证 228

9.2.1 程序和过程 229

9.1.3 技术信息的组织 229

9.2 RPC协议需求 229

9.2.3 程序号赋值 230

9.2.2 认证 230

9.2.4 RPC协议的其它用途 231

9.2.4.1 成批处理 231

9.3 RPC消息协议 232

9.2.4.2 广播RPC 232

9.4 认证协议 235

9.4.1 AUTH_NONE认证 235

9.4.2  AUTH_SYS认证 235

9.4.2.1 AUTH_SHORT验证器 236

9.4.3 AUTH_DES认证 236

9.4.3.1 命名 236

9.4.3.2 AUTH_DES认证验证器 237

9.4.3.3 别名和时钟同步 237

9.4.3.4 DES认证协议(用XDR语言) 238

9.4.3.5 Diffie-Hellman密码 239

9.5 记录标记标准 240

9.6 RPC语言 241

9.6.1 用RPC语言描述的一个服务实例 241

9.6.2 RPC语言规格 242

9.6.3 语法注释 242

9.7 rpcbind协议 243

9.7.1 rpcbind协议规格(用RPC语言) 243

9.7.2 rpcbind操作 244

9.7.2.1 RPCBPROC_NULL过程 244

9.7.2.6 RPCBPROC_CALLIT过程 245

9.7.2.2 RPCBPROC_SET过程 245

9.7.2.3 RPCBPROC_UNSET过程 245

9.7.2.4 RPCBPROC_GETADDR过程 245

9.7.2.5 RPCBPROC_DUMP过程 245

9.7.2.8 RPCBPROC_UADDR2TADDR过程 246

9.7.2.7 RPCBPROC_GETTIME过程 246

9.7.2.9 RPCBPROC_TADDR2UADDR过程 246

9.8 参考文献 246

第十章 RPC管理 247

10.1 引言 247

10.2 RPC管理文件 247

10.2.1 名字到地址映射 247

10.2.2 系统RC文件/etc/rc2·d/s75rpc 247

10.2.3 /etc/publickey文件 250

10.2.4 /etc/master·d/kernel文件 250

10.3 安全RPC概述 250

10.3.1 RPC域 251

10.4.1 建立安全RPC域 252

10.4 安全RPC管理 252

10.4.2.1 用newkey命令添加RPC用户 253

10.4.2 主/etc/publickey文件 253

10.4.3 故障查寻注释 254

10.4.2.2 网络口令和chkey命令 254

11.1 YP服务引言 255

11.1.1 什么是YP 255

11.1.2 YP元素 255

第十一章 YP服务 255

11.1.3 YP环境 256

11.1.3.1 YP域 256

11.1.3.2 YP机器类型 256

11.1.3.3 YP映射 258

11.2 实现YP服务 259

11.2.1 建立域 259

11.2.2 准备映射 260

11.2.2.1 publickey映射 260

11.2.2.2 其它映射 262

11.2.3 构造映射 263

11.2.3.1 默认的makefile 263

11.2.3.2 更改makefile 264

11.2.4 设置主服务方 265

11.2.5 启动主服务方上的精灵进程 266

11.2.6 设置从服务方 267

11.2.7 启动从服务方上的精灵进程 269

1 1.2.8 装备YP委托方 269

11.3.1.1 更改标准映射 270

11.3 管理YP映射 270

11.3.1 更新已有的映射 270

11.3.1.2 创建和更改非标准映射 271

11.3.2.1 ypxfr使用crontab 273

11.3.2 传播YP映射 273

11.3.2.2 ypxfr使用shell脚本 274

11.3.2.3 直接调用ypxfr 275

1 1.3.2.4 记录ypxfr的活动 275

11.3.3 在makefile中加入新的YP映射 275

11.4 在原先集合中加入新的YP服务方 276

11.4.1 改变映射的主服务方 277

11.5 与YP相关的命令小结 278

11.6.1 调试YP委托方 279

11.6.1.1 在委托方上挂起命令 279

11.6 排除YP问题 279

11.6.1.2 YP服务不可用 282

1 1.6.1.3 ypbind瘫痪 282

1 1.6.1.4 ypwhich显示不一致 283

11.6.2 调试YP服务方 283

1 1.6.2.1 服务方有不同的YP映射版本 284

11.6.2.2 ypserv瘫痪 284

11.7 关闭YP服务 286

第三篇 网络选择和名字到地址映射 287

12.1.1 网络选择怎样工作 287

12.1 网络选择 287

第十二章 网络选择和名字到地址映射 287

12.1.2 netconfig文件 288

12.1.3 NETPATH环境变量 289

图12—1:netconfig结构 289

12.1.4 通过NETPATH访问netconfig的例程 290

图12—2:NETPATH环境变量的样本值 290

图12—3:使用setnetpath()、getnetpath()和endnetpath()的样本代码 291

12.1.5 直接访问netconfig例程 291

图12—4:使用setnetconfig()、getnetconfig()和endnetconfig()的样本代码 292

图12—5:使用getnetconfigent()和freenetconfigent()的样本代码 293

图12—6:使用getnetconfigent()和freenetconfigent()的样本代码 293

12.1.6 代码实例 293

12.1.6.3 循环通过所有的netconfig项 294

12.1.6.1 循环通过所有“可见的”netconfig项 294

121.6.2 循环通过用户定义的netconfig项 294

12.1.6.4 规定单个传输供者 295

12.2 名字到地址映射 295

12.2.1 名字到地址映射的库 296

12.2.2 使用名字到地址映射例程 297

12.2.2.1 netdir-getbyname 298

12.2.2.2 netdir-getbyaddr 298

12.2.2.3 netdir-free 298

12.2.2.4 taddr2uaddr 299

12.2.2.5 uaddr2taddr 299

12.2.2.6 netdir-options 299

12.2.2.7 netdir-perror 300

12.2.2.8 netdir—sperror 300

图12—7:代码例子:使用网络选择和名字到地址映射 301

13.2 服务访问设施概述 303

第四篇 为服务访问设施编写端口监控程序 303

第十三章 为服务访问设施编写端口监控程序 303

13.1 引言 303

13.2.1 服务访问控制程序 304

13.3 基本的端口监控程序功能 304

13.3.1 端口管理 305

13.3.2 活动监视 305

13.3.3 其它的端口监控功能 305

13.3.3.1 限制对系统的访问:启用和禁用端口监控程序和端口 305

13.3.3.2 创建utmp登记项 306

13.3.3.3 端口监控程序进程ID和锁定文件 306

13.3.3.4 修改服务环境:运行doconfig() 306

13.3.3.5 文件:端口监控程序管理文件 306

13.3.3.6 文件:每种服务配置文件 306

13.3.3.7 私用端口监控程序文件 306

13.4.1 消息格式 307

13.4 服务访问控制程序/端口监控程序界面 307

13.4.1.1 sac消息 307

13.3.3.8 终止端口监控程序 307

13.4.1.2 端口监控程序消息 308

13.5 端口监控程序管理界面 309

13.5.1 SAC管理文件_sactab 309

13.4.2 消息类 309

13.5.2 端口监控程序管理文件_pimtab 310

13.5.3 SAC管理命令sacadm 311

13.5.6 端口监控程序/服务界面 312

13.5.5 端口监控程序的“针对具体端口监控程序的”管理命令 312

13.5.4 端口监控程序管理命令pmadm 312

13.6 端口监控程序需求 313

13.5.6.2 常设的服务引用 313

13.5.6.1 新的服务引用 313

13.6.1 初始环境 313

13.6.2 重要的文件 313

13.6.3.2 与任务相关的服务 314

13.6.3.1 各种杂项任务 314

13.7 配置文件和配置语言 314

13.7.1 配置文件 314

13.7.1.1 每个系统配置文件 314

13.6.3 责任 314

13.7.1.2 每个端口监控程序配置文件 315

13.7.1.3 每种服务配置文件 315

13.7.2 配置语言 315

13.7.3 显示、安装和替换配置脚本 316

13.7.3.2 每个端口监控程序配置脚本 316

13.7.3.1 每个系统配置脚本 316

13.7.3.3 每种服务配置脚本 317

13.7.4 解释配置脚本:doconfig() 317

13.7.5 样本配置脚本 318

13.7.5.3 每种服务样本配置脚本 318

13.7.5.2 每个端口监控程序样本配置脚本 318

13.7.5.1 每个系统样本配置脚本 318

13.8 端口监控程序代码样本 319

13.9 前导文件sac·h 322

13.10 服务访问设施逻辑图和目录结构 324

图13—1:服务访问设施逻辑图 325

图13—2:服务访问设施目录结构 326

附录A 手册页 327