《UNIX系统V/386第4版 网络程序员指南 Architecture network programmer's guide》求取 ⇩

第一章 引论1

1.1 引言1

1.1.1 文档的组织1

1.1.2 网络选择与名字到地址映射1

目录1

2.2 背景3

图2—1:OSI参考模型3

图和表3

2.1 引言3

第二章 传输界面编程3

2.3 本章文档的组织4

图2—2:传输界面5

2.4 传输界面概况5

2.4.1.1 连接方式服务6

2.4.1 服务方式6

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

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

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

图2—4:传输连接8

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

2.4.1.2 非连接方式服务9

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

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

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

2.4.2 状态转换10

2.5 连接方式服务介绍10

2.5.1 本地管理10

2.5.1.1 委托方11

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

2.5.1.2 服务方13

2.5.2 建立连接16

2.5.2.1 委托方16

2.5.2.2 事件处理17

2.5.2.3 服务方18

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

2.5.3 数据传送21

2.5.3.2 服务方22

2.5.3.1 委托方22

2.5.4 释放连接24

2.5.4.2 委托方25

2.5.4.1 服务方25

2.6 非连接方式服务介绍26

2.6.1 本地管理26

2.6.2 数据传送28

2.6.3 数据报出错29

2.7 读/写界面31

2.7.2 read32

2.7.1 write32

2.7.3 close33

2.8 高级课题33

2.8.1 异步执行方式33

2.8.2 高级编程示例34

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

2.9.2 发出的事件40

2.9.1 传输界面状态40

2.9 状态转换40

表2—7:发出的事件41

2.9.3 到来的事件41

表2—8:到来的事件42

2.9.5 状态表42

2.9.4 传输用者动作42

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

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

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

2.10 协议无关性准则44

2.11 若干示例45

2.11.1 连接方式委托方45

2.11.2 连接方式服务方47

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

2.11.4 读/写委托方52

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—8:ruptime程序的输出87

图3—9:rwho服务方88

3.5 高级课题89

3.5.1 不同波段数据89

图3—10:接收不同波段数据时刷清终端I/O91

3.5.2 非阻塞Socket92

3.5.3 中断驱动的Socket I/O92

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

3.5.4 信号和进程组93

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

3.5.6 地址联编95

3.5.5 选择具体的协议95

3.5.7 广播并且确定网络配置97

3.5.8 Socket任选项101

3.5.9 inetd101

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

4.1.1 连接方式103

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

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

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

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

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

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

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

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

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

4.1.2 非连接方式110

4.1.2.1 基于Socket的数据报110

4.1.2.2 TLI数据报111

4.1.3 同步和异步方式113

4.1.5 Socket到TLI的转换114

4.1.4 出错处理114

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

4.1.6 将Socket应用移至System V R4.0 V1.0116

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

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

5.1 引言121

5.1.1 技术信息的组织121

5.1.2 定义121

5.2 RPC概述122

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

5.2.1 RPC的版本和号124

5.2.2 网络选择124

5.2.3.1 地址登记126

5.2.3 rpcbind设施126

5.2.2.1 名字到地址的转换126

5.2.3.2 rpcinfo命令127

5.2.4 RPC的较低层次128

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

5.2.5 外部数据表示129

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

第六章 rpcgen编程指南131

6.1 引言131

6.1.1 rpcgen概述131

6.1.2 技术信息的组织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 网络类型(传输选择)145

6.3.2 超时改变145

6.3.3 委托方认证145

6.3.4 rpcgen命令行定义语句146

6.3.6 端口监控程序支持147

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

6.3.7 派遣表148

6.3.8 用rpcgen调试150

6.4 RPC语言参考150

6.4.1 定义150

6.4.2 枚举150

6.4.3 常量151

6.4.4 类型定义151

6.4.5 声明151

6.4.7 联合153

6.4.6 结构153

6.4.8 程序154

6.4.9 特殊情况155

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

7.1 引言157

7.1.1 RPC软件包概述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.1 中间层:委托方侧171

7.3.2 中间层171

7.3.2.2 中间层:服务方侧172

7.3.3 专家层173

7.3.3.1 专家层:委托方侧174

7.3.3.2 专家层:服务方侧176

7.3.4 底层178

7.3.4.1 底层:委托方侧179

7.3.4.2 底层:服务方侧179

7.4 低层数据结构180

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

7.6 RPC高级编程技巧183

7.6.1 服务方侧的select()184

7.6.2 广播RPC185

7.6.3 批处理186

7.6.3.1 批处理性能189

7.6.4 认证189

7.6.4.1 AUTH-NONE:委托方侧189

7.6.4.2 AUTH-NONE:服务方侧190

7.6.4.3 ANTH-SYS 认证191

7.6.4.4 ANTH—DES认证193

7.6.5 使用端口监控程序196

7.6.5.2 使用监听程序197

7.6.5.1 使用inetd197

7.7.1 版本198

7.7 复杂的例子198

7.7.2 面向连接的传输199

7.7.3 回叫过程203

7.7.4 用XDR分配内存207

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

8.1 XDR引言209

8.1.1 基本块的大小209

8.1.2 技术信息的组织210

8.2 XDR数据类型声明210

8.2.1 整数210

8.2.1.1 描述210

8.2.1.2 声明210

8.2.1.3 编码210

8.2.3.1 描述211

8.2.2 无符号整数211

8.2.2.1 描述211

8.2.2.2 声明211

8.2.2.3 编码211

8.2.3 枚举211

8.2.3.2 声明211

8.2.3.3 编码211

8.2.4 布尔量211

8.2.4.1 描述211

8.2.6.1 描述212

8.2.6 浮点数212

8.2.5.3 编码212

8.2.5.2 明212

8.2.5.1 描述212

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

8.2.4.3 编码212

8.2.4.2 声明212

8.2.6.2 明213

8.2.6.3 编码213

8.2.7 双精度浮点数213

8.2.7.1 描述213

8.2.7.2 声明213

8.2.8.2 声明214

8.2.8.3 编码214

8.2.8.1 描述214

8.2.8 定长不透明数据214

8.2.7.3 编码214

8.2.10.1 描述215

8.2.9.3 编码215

8.2.9.2 声明215

8.2.9.1 描述215

8.2.9 变长不透明数据215

8.2.10 串215

8.2.10.2 声明216

8.2.10.3 编码216

8.2.11 定长数组216

8.2.11.1 描述216

8.2.11.2 声明216

8.2.11.3 编码216

8.2.12.3 编码217

8.2.12 变长数组217

8.2.12.1 描述217

8.2.12.2 声明217

8.2.13 结构217

8.2.13.1 描述217

8.2.13.2 声明217

8.2.13.3 编码218

8.2.14 鉴别联合218

8.2.14.1 描述218

8.2.14.2 声明218

8.2.14.3 编码218

8.3.1 常量219

8.2.15.1 描述219

8.3.2 类型定义219

8.2.15.2 声明219

8.3 其它XDR声明219

8.2.15.3 编码219

8.2.15 空白219

8.3.3 可选的数据220

8.4 XDR语言规格221

8.4.1 标记的转换221

8.4.2 词法注释222

8.4.3 语法信息222

8.4.3.1 语法注释224

8.5 XDR数据描述示例224

8.6 参考文献225

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

9.1 引言227

9.1.1 术语227

9.1.2 协议的一般属性227

9.1.2.1 RPC模型227

9.1.2.2 传输和语义228

9.1.2.3 联编和会合的独立性228

9.1.2.4 认证228

9.1.3 技术信息的组织229

9.2 RPC协议需求229

9.2.1 程序和过程229

9.2.2 认证230

9.2.3 程序号的赋值230

9.2.4 RPC协议的其它用途231

9.2.4.1 批处理231

9.2.4.2 广播RPC231

9.3 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.1 用RPC语言描述的一个服务示例241

9.6 RPC语言241

9.6.3 语法注释242

9.6.2 RPC语言规格242

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

9.7 rpcbind协议243

9.7.2.6 RPCBPROC-CALLIT过程245

9.7.2.4 RPCBPROC-GETADDR过程245

9.7.2.3 RPCBPROC-UNSET过程245

9.7.2.2 RPCBPROC-SET过程245

9.7.2.1 RPCBPROC—NULL过程245

9.7.2 rpcbind操作245

9.7.2.5 RPCBPROC-DUMP过程245

9.8 参考文献246

9.7.2.9 RPCBPROC-TADDR2UADDR过程246

9.7.2.8 RPCBPROC-UADDR2TADDR过程246

9.7.2.7 RPCBPROC-GETTIME过程246

第十章 远程过程呼叫管理247

1O.1 引言247

10.2 RPC管理文件247

10.2.1 名字到地址映射247

10.3 安全RPC概述250

10.2.3 /etc/publickey文件250

10.2.2 系统RC文件/etc/rc2.d/s75rpc250

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

10.3.1 RPC域251

1O.4 安全RPC管理252

10.4.1 建立安全RPC域252

10.4.2 主/etc/publickey文件253

10.4.2.1 用newkey命令添加RPC用户253

10.4.3 故障排除注释254

10.4.2.2 网络口令和chkey命令254

第十一章 黄页(YP)服务255

11.1 引言255

11.1.1 什么是YP255

11.1.2 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.1 建立域259

11.2 实现YP259

1 1.2.2.1 publickey映像260

11.2.2 准备映像260

11.2.2.2 其它映像262

11.2.3.1 默认的Makefile263

11.2.3 构造映像263

11.2.3.2 更改Makefile264

11.2.4 设置主服务器265

11.2.5 在主服务器上启动精灵进程266

11.2.6 设置从服务器267

11.2.8 装备YP客户机269

11.2.7 启动从服务器精灵进程269

11.3.1 更改已有的映像270

11.3 管理YP映像270

11.3.1.1 更改标准映像270

11.3.1.2 创建与更改非标准映像271

11.3.2.1 使用带ypxfr的crontab273

11.3.2 传播YP映像273

11.3.2.2 使用带ypxfr的shell脚本273

11.3.2.3 直接调用ypxfr274

11.3.2.4 记录ypxfr的活动274

11.3.3 在Makefile中加入新的YP映像275

11.4 在原始YP服务器集合中加入新的YP服务器275

1.4.1 修改映像的主服务器276

11.5 与YP有关的命令小结278

11.6.1 调试YP客户机279

11.6.1.1 在客户机上挂起命令279

11.6 修复YP问题279

11.6.1.2 不可用的YP281

11.6.1.3 ypbind瘫痪282

11.6.1.4 ypwhich显示不一致283

11.6.2 调试YP服务器283

11.6.2.1 服务器有YP映像的不同版本283

11.6.2.2 ypserv瘫痪284

11.7 关闭YP285

12.1 网络选择287

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

12.1.1网络选择怎样工作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.1.5 直接访问netconfig的例程291

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

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

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

图12—6:代码例子:使用网络选择与名字到地址映射293

12.1.6 代码实例294

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

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

12.1.6.3 通过所有netconfig项的循环295

12.1.6.4 规定单个传输供者295

12.2 名字到地址映射295

12.2.1 名字到地址映射库296

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

12.2.2.1 netdir-getbyname298

12.2.2.4 taddr2uaddr299

12.2.2.2 netdir-getbyaddr299

12.2.2.3 netdir-free299

12.2.2.5 uaddr2taddr299

12.2.2.6 netdir-eption299

12.2.2.7 netdir-perror300

12.2.2.8 netdi-Sperror300

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

附录A:手册页303

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