《unix系统v第4版-程序员指南:网络界面》求取 ⇩

第一篇 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 read33

2.7.1 write33

2.8.1 异步执行方式34

2.8 高级专题34

2.7.3 close34

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 关闭Socket68

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

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

3.2.7 非连接Socket71

图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/O90

3.5.2 非阻塞Socket91

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

3.5.3 中断驱动的Socket I/O92

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 inetd100

第四章 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 R4116

表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 广播RPC184

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 使用inetd196

7.6.5.2 使用listener196

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 typedef219

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 广播RPC232

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/s75rpc247

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 什么是YP255

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 默认的makefile263

11.2.3.2 更改makefile264

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使用crontab273

11.3.2 传播YP映射273

11.3.2.2 ypxfr使用shell脚本274

11.3.2.3 直接调用ypxfr275

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-getbyname298

12.2.2.2 netdir-getbyaddr298

12.2.2.3 netdir-free298

12.2.2.4 taddr2uaddr299

12.2.2.5 uaddr2taddr299

12.2.2.6 netdir-options299

12.2.2.7 netdir-perror300

12.2.2.8 netdir—sperror300

图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管理文件_sactab309

13.4.2 消息类309

13.5.2 端口监控程序管理文件_pimtab310

13.5.3 SAC管理命令sacadm311

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

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

13.5.4 端口监控程序管理命令pmadm312

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·h322

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

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

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

附录A 手册页327

《unix系统v第4版-程序员指南:网络界面》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由 北京:电子工业出版社 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。