《国外计算机科学教材系列 用ICP/IP进行网际互连 第3卷 客户机-服务器编程和应用 第2版》求取 ⇩

第1章 引言和概述1

1.1 TCP/IP的使用1

1.2 为分布式环境设计应用程序1

1.3 标准和非标准的应用协议2

1.4 使用标准应用协议的例子2

1.5 一个连接的例子3

1.6 使用TELNET访问其他服务3

1.7 应用协议和软件的灵活性4

1.8 从提供者的角度看服务5

1.9 本教材的其余部分5

1.10 小结6

第2章 客户机-服务器模型与软件设计7

2.1 引言7

2.2 动机7

2.3 术语和概念8

2.3.1 客户机和服务器8

2.3.2 特权和复杂性8

2.3.3 标准的和非标准的客户机软件9

2.3.4 客户机的参数化9

2.3.5 无连接的和面向无连接的服务器10

2.3.6 无状态的和有状态的服务器11

2.3.7 一个有状态的服务器的例子11

2.3.8 无状态是一个协议问题13

2.3.9 作为客户机的服务器13

2.4 小结14

第3章 客户机-服务器软件中的并发处理16

3.1 引言16

3.2 网络中的并发性16

3.3 服务器中的并发性17

3.4 术语和概念18

3.4.1 进程概念18

3.4.2 程序与进程19

3.4.3 过程调用19

3.5 一个创建并发进程的例子20

3.5.1 一个顺序执行的C实例20

3.5.2 程序的并发版21

3.5.3 时间分片22

3.5.4 使各进程分离23

3.6 执行新的代码24

3.7 上下文切换和协议软件设计24

3.8 并发性和异步I/O25

3.9 小结25

第4章 协议的程序接口27

4.1 引言27

4.2 不精确指明的协议软件接口27

4.2.1 优点与缺点27

4.3 接口功能28

4.4 概念性接口的规格说明28

4.5 系统调用29

4.6 网络通信的两种基本方法29

4.7 UNIX中所提供的基本I/O功能30

4.8 用UNIX I/O结合TCP/IP31

4.9 小结31

第5章 插口接口33

5.1 引言33

5.2 Berkeley的插口33

5.3指明一个协议接口33

5.4 插口的抽象34

5.4.1 插口描述符和文件描述符34

5.4.2 针对插口的系统数据结构35

5.4.3 使用插口35

5.5 指明端点地址36

5.6 类属地址结构36

5.7 与插口一同使用的主要的系统调用38

5.7.1 socket调用38

5.7.2 connect调用38

5.7.3 write调用38

5.7.4 read调用39

5.7.5 close调用39

5.7.6 bind调用39

5.7.7 listen调用39

5.7.8 accept调用40

5.7.9 TCP所使用的插口调用小结40

5.8 用于整数转换的实用例程41

5.9 在程序中使用插口调用41

5.10 插口调用的参数所使用的符号常量41

5.11 小结42

第6章 客户机软件设计中的算法和问题44

6.1 引言44

6.2 不是研究细节而是学习算法44

6.3 客户机体系结构44

6.4 标识一个服务器的位置45

6.5 分析地址参数46

6.6 查找域名47

6.7 由名字查找某个知名端口47

6.8 端口号和网络字节序48

6.9 由名字查找协议48

6.10 TCP客户机算法49

6.11 分配一个插口49

6.12 选择一个本地协议端口号50

6.13 选择本地IP地址中的一个基本问题50

6.14 将一个TCP插口连接到某个服务器51

6.15 使用TCP与服务器通信51

6.16 从一个TCP连接中读取响应52

6.17 关闭TCP连接52

6.17.1 对部分关闭(partial close)的需要52

6.17.2 部分关闭的操作53

6.18 UDP客户机的编程53

6.19 连接的和非连接的UDP插口54

6.20 对UDP使用connect54

6.21 使用UDP与服务器通信54

6.22 关闭一个使用UDP的插口54

6.23 对UDP的部分关闭55

6.24 关于UDP不可靠性的警告55

6.25 小结55

第7章 客户机软件举例57

7.1 引言57

7.2 小例子的重要性57

7.3 隐藏细节57

7.4 针对客户机程序的过程库例子58

7.5 connectTCP的实现58

7.6 connectUDP的实现59

7.7 构成连接的过程59

7.8 使用例子库62

7.9 DAYTIME服务63

7.10 针对DAYTIME的TCP客户机实现63

7.11 从TCP连接中进行读65

7.12 TIME服务65

7.13 访问TIME服务66

7.14 精确时间和网络时延66

7.15 针对TIME服务的UDP客户机66

7.16 ECHO服务68

7.17 针对ECHO服务的TCP客户机68

7.18 针对ECHO服务的UDP客户机70

7.19 小结72

第8章 服务器软件设计的算法和问题74

8.1 引言74

8.2 概念性的服务器算法74

8.3 并发服务器和循环服务器74

8.4 面向连接的和无连接的访问75

8.5 面向连接的服务器75

8.6 无连接的服务器76

8.7 故障、可靠性和无状态76

8.8 优化无状态服务器77

8.9 四种基本类型的服务器79

8.10 请求处理时间79

8.11 循环服务器的算法80

8.12 一种循环的、面向连接的服务器的算法80

8.13 用INADDR-ANY绑定一个知名端口80

8.14 将插口置于被动模式81

8.15 接受连接并使用这些连接81

8.16 一个循环的、无连接的服务器的算法81

8.17 在无连接的服务器中构造一个应答82

8.18 并发服务器的算法82

8.19 主进程和从进程83

8.20 并发的、无连接的服务器的算法83

8.21 并发的、面向连接服务器的算法84

8.22 把单独的程序作为从进程来使用84

8.23 使用单个进程获得表面上的并发性85

8.24 各服务器类型所适用的场合85

8.25 服务器类型小结86

8.26 重要问题——服务器死锁87

8.27 其他的实现方法88

8.28 小结88

第9章 循环的、无连接服务器(UDP)90

9.1 引言90

9.2 创建一个被动插口90

9.3 进程结构93

9.4 TIME服务器举例94

9.5小结95

第10章 循环的、面向连接的服务器(TCP)97

10.1 引言97

10.2 分配一个被动的TCP插口97

10.3 用于DAYTIME服务的服务器98

10.4 进程结构98

10.5 DAYTIME服务器举例99

10.6 关闭连接101

10.7 连接终止和服务器的脆弱性101

10.8 小结102

第11章 并发的、面向连接的服务器(TCP)103

11.1 引言103

11.2 并发ECHO103

11.3 循环与并发实现的比较103

11.4 进程结构104

11.5 并发ECHO服务器举例104

11.6 清除游离(errant)进程108

11.7 小结108

第12章 单进程、并发服务器(TCP)110

12.1 引言110

12.2 服务器中的数据驱动处理110

12.3 用单个进程进行数据驱动处理111

12.4 单个进程服务器的进程结构111

12.5 单进程ECHO服务器举例112

12.6 小结114

第13章 多协议服务器(TCP,UDP)116

13.1 引言116

13.2 减少服务器数量的动机116

13.3 多协议服务器的设计116

13.4 进程结构117

13.5 一个多协议DAYTIME服务器的例子117

13.6 共享代码的概念120

13.7 并发多协议服务器121

13.8 小结121

第14章 多服务服务器(TCP,UDP)123

14.1 引言123

14.2 合并服务器123

14.3 无连接的、多服务服务器的设计123

14.4 面向连接的、多服务服务器的设计124

14.5 并发的、面向连接的、多服务服务器125

14.6 单进程的、多服务服务器的实现125

14.7 从多服务服务器调用单独的程序126

14.8 多服务、多协议设计127

14.9 多服务服务器的例子128

14.10 静态的和动态的服务器配置134

14.11 UNIX超级服务器,inetd135

14.12 inetd服务器的例子137

14.13 小结138

第15章 服务器并发性的统一、高效管理140

15.1 引言140

15.2 在循环设计和并发设计间选择140

15.3 并发等级141

15.4 需求驱动的并发141

15.5 并发的代价141

15.6 额外开销和时延142

15.7 小时延可能出麻烦142

15.8 进程预分配143

15.8.1 UNIX中的预分配143

15.8.2 面向连接服务器中的预分配144

15.8.3 无连接服务器中的预分配145

15.8.4 预分配、突发通信量和NFS146

15.8.5 多处理器上的进程预分配146

15.9 延迟的进程分配146

15.10 两种技术统一的基础147

15.11 技术的结合147

15.12 小结148

第16章 客户机中的并发150

16.1 引言150

16.2 并发的优点150

16.3 运用控制的动机150

16.4 与多个服务器的并发联系151

16.5 实现并发客户机152

16.6 单个进程的实现152

16.7 一个使用ECHO的并发客户机例子153

16.8 并发客户机的执行158

16.9 例子代码中的并发性159

16.10 小结159

第17章 运输层和应用层的隧道技术161

17.1 引言161

17.2 多协议环境161

17.3 混合网络技术162

17.4 动态电路分配163

17.5 封装和隧道技术164

17.6 通过IP互连网的隧道技术164

17.7 客户机和服务器之间的应用级隧道技术165

17.8 隧道技术、封装和电话拨号线165

17.9 小结166

第18章 应用级网关168

18.1 引言168

18.2 在受约束的环境中的客户机和服务器168

18.2.1 多种技术的现实168

18.2.2 有限功能的计算机168

18.2.3 安全性引起的连通性约束169

18.3 使用应用网关169

18.4 通过邮件网关互操作169

18.5 邮件网关的实现170

18.6 应用网关与隧道技术的比较171

18.7 应用网关和有限功能系统172

18.8 为解决安全问题而使用的应用网关173

18.9 应用网关和额外跳问题174

18.10 应用网关举例175

18.11 一个应用网关的实现176

18.12 应用网关的代码177

18.13 网关交换的例子179

18.14 使用rfcd和UNIX的.forward文件179

18.15 一个通用的应用网关179

18.16 SLIRP的运行180

18.17 SLIRP如何处理连接180

18.18 IP寻址和SLIRP181

18.19 小结182

第19章 外部数据表示(XDR)184

19.1 引言184

19.2 计算机中的数据表示184

19.3 N平方转换问题185

19.4 网络标准字节序185

19.5 外部数据表示的事实上的标准186

19.6 XDR数据类型186

19.7 隐含类型187

19.8 使用XDR的软件支持188

19.9 XDR库例程188

19.10 一次一片地构造一个报文188

19.11 XDR库中的转换例程189

19.12 XDR流、I/O和TCP191

19.13 记录、记录边界和数据报I/O191

19.14 小结192

第20章 远程过程调用(RPC)的概念194

20.1 引言194

20.2 远程过程调用模型194

20.3 构建分布式程序的两种模式194

20.4 传统的过程调用的概念性模型195

20.5 过程模型的扩充195

20.6 传统过程调用的执行和返回196

20.7 分布式系统中的过程模型197

20.8客户机-服务器和RPC之间的类比197

20.9 作为一个程序的分布式计算198

20.10 Sun Microsystems的远程过程调用定义199

20.11 远程程序和过程199

20.12 减少参数的数量200

20.13 标识远程程序和过程200

20.14 适应远程程序的多个版本202

20.15 远程程序中的互斥202

20.16 通信语义202

20.17 至少一次语义203

20.18 RPC重传203

20.19 将一个远程程序映射到一个协议端口204

20.20 动态端口映射204

20.21 RPC端口映射器算法205

20.22 ONC RPC的报文格式206

20.23 对远程过程进行参数序列化207

20.24 鉴别208

20.25 RPC报文表示的一个例子209

20.26 UNIX鉴别字段的例子209

20.27 小结209

第21章 分布式程序的生成212

21.1 引言212

21.2 使用远程过程调用212

21.3 支持RPC的编程工具213

21.4 将一个程序划分成本地过程和远程过程214

21.5 为RPC增加代码214

21.6 stub过程215

21.7 多个远程过程和分派215

21.8 客户机端的stub过程的名字216

21.9 使用rpcgen生成分布式程序217

21.10 rpcgen输出和接口过程217

21.11 rpcgen的输入和输出218

21.12 使用rpcgen构建客户机和服务器218

21.13 小结219

第22章 分布式程序的生成(rpcgen的例子)221

22.1 引言221

22.2 一个说明rpcgen的例子221

22.3 查找字典221

22.4 一个分布式程序的八个步骤222

22.5 步骤1:构建一个常规的应用程序223

22.6 步骤2:将程序划分成两部分227

22.7 步骤3:创建一个rpcgen规格说明232

22.8 步骤4:运行rpcgen234

22.9 rpcgen产生的.h文件234

22.10 rpcgen产生的XDR转换文件235

22.11 rpcgen产生的客户机代码236

22.12 rpcgen产生的服务器代码237

22.13 步骤5:编写stub接口过程240

22.13.1 客户机端接口例程240

22.13.2 服务器端接口例程242

22.14 步骤6:编译并链接客户机程序244

22.15 步骤7:编译和链接服务器程序247

22.16 步骤8:启动服务器和执行客户机249

22.17 使用UNIX的make实用程序249

22.18 小结251

第23章 网络文件系统(NFS)的概念253

23.1 引言253

23.2 远程文件存取和传输253

23.3 对远程文件的操作254

23.4 异构计算机之间的文件存取254

23.5 无状态服务器254

23.6 NFS和UNIX的文件语义254

23.7 UNIX文件系统的回顾255

23.7.1 基本定义255

23.7.2 无记录界限的字节序列255

23.7.3 文件拥有者和组标识符255

23.7.4 保护和存取255

23.7.5 打开-读-写-关闭范例256

23.7.6 数据传输257

23.7.7 允许搜索目录257

23.7.8 随机存取258

23.7.9 搜索超过文件的结束258

23.7.10 文件位置和并发存取258

23.7.11 在并发存取时的“写(write)”语义259

23.7.12 文件名和路径260

23.7.13 索引结点(inode):存储在文件中的信息260

23.7.14 stat操作261

23.7.15 文件命名机制262

23.7.16 文件系统mount262

23.7.17 UNIX文件名解析264

23.7.18 符号链接265

23.8 NFS下的文件265

23.9 NFS的文件类型265

23.10 NFS文件模式266

23.11 NFS文件属性267

23.12 NFS客户机和服务器267

23.13 NFS客户机操作268

23.14 NFS客户机与UNIX269

23.15 NFS mount269

23.16 文件句柄270

23.17 句柄取代路径名271

23.18 在UNIX中的NFS客户机272

23.19 无状态服务器的文件定位272

23.20 对目录的操作272

23.21 无状态地读目录273

23.22 NFS服务器中的多个分层结构273

23.23 安装(mount)协议274

23.24 小结274

第24章 网络文件系统协议(NFS,Mount)276

24.1 引言276

24.2 用RPC定义协议276

24.3 用数据结构和过程定义协议276

24.4 NFS常数、类型和数据声明277

24.4.1 NFS常数277

24.4.2 NFS的typedef声明278

24.4.3 NFS数据结构278

24.5 NFS过程280

24.6 NFS操作的语义281

24.6.1 NFSPROC-NULL(过程0)281

24.6.2 NFSPROC-GETATTR(过程1)281

24.6.3 NFSPROC-SETATTR(过程2)281

24.6.4 NFSPROC-ROOT(过程3)[在NFS3中已经不用]281

24.6.5 NFSPROC-LOOKUP(过程4)281

24.6.6 NFSPROC-READLINK(过程5)281

24.6.7 NFSPROC-READ(过程6)282

24.6.8 NFSPROC-WRITECACHE(过程7)[在NFS3已经不用]282

24.6.9 NFSPROC-WRITE(过程8)282

24.6.10 NFSPROC-CREATE(过程9)282

24.6.11 NFSPROC-REMOVE(过程10)282

24.6.12 NFSPROC-RENAME(过程11)282

24.6.13 NFSPROC-LINK(过程12)282

24.6.14 NFSPROC-SYML INK(过程13)282

24.6.15 NFSPROC-MKDIR(过程14)283

24.6.16 NFSPROC-RMDIR(过程15)283

24.6.17 NFSPROC-READDIR(过程16)283

24.6.18 NFSPROC-STATFS(过程17)283

24.7 安装协议283

24.7.1 安装协议的常数定义284

24.7.2 安装协议的类型定义284

24.7.3 安装数据结构284

24.8 安装协议中的过程285

24.9 安装操作的语义285

24.9.1 MNTPROC-NULL(过程0)286

24.9.2 MNTPROC-MNT(过程1)286

24.9.3 MNTPROC-DUMP(过程2)286

24.9.4 MNTPROC-UMNT(过程3)286

24.9.5 MNTPROC-UMNTALL(过程4)286

24.9.6 MNTPROC-EXPORT(过程5)286

24.10 NFS和安装鉴别286

24.11 NFS版本3中的改变287

24.12 小结288

第25章 TELNET客户机(程序结构)290

25.1 引言290

25.2 概述290

25.2.1 用户终端290

25.2.2 命令和控制信息290

25.2.3 终端、窗口和文件291

25.2.4 对并发性的需要291

25.2.5 TELNET客户机的一个过程模型292

25.3 TELNET客户机算法292

25.4 UNIX中的终端I/O293

25.4.1 控制设备驱动器294

25.5 建立终端模式295

25.6 用于保存状态的全局变量296

25.7 在退出之前恢复终端模式297

25.8 客户机挂起与恢复298

25.9 有限状态机的规格说明299

25.10 在TELNET数据流中嵌入命令300

25.11 选项协商300

25.12 请求/提供的对称性301

25.13 TELNET字符定义301

25.14 针对来自服务器数据的有限状态机302

25.15 在各种状态之间转移303

25.16 有限状态机的实现304

25.17 压缩的FSM表示304

25.18 在运行时维持压缩表示306

25.19 压缩表示的实现306

25.20 构造FSM转移矩阵308

25.21 插口输出有限状态机309

25.22 插口输出FSM的相关定义311

25.23 选项子协商有限状态机312

25.24 选项子协商FSM的相关定义313

25.25 FSM初始化313

25.26 TELNET客户机的参数314

25.27 TELNET客户机的核心315

25.28 主FSM的实现319

25.29 小结320

第26章 TELNET客户机(实现细节)322

26.1 引言322

26.2 FSM动作过程322

26.3 记录选项请求的类型322

26.4 完成空操作323

26.5 对回显选项的WILL/WONT做出响应323

26.6 对未被支持之选项的WILL/WONT做出响应325

26.7 对no go-ahead选项的WILL/WONT做出响应326

26.8 生成用于二进制传输的DO/DONT327

26.9 对未被支持的选项的DO/DONT做出响应328

26.10 对传输二进制选项的DO/DONT做出响应328

26.11 对终端类型选项的DO/DONT做出响应329

26.12 选项子协商331

26.13 发送终端类型信息332

26.14 终止子协商333

26.15 向服务器发送字符334

26.16 显示在用户终端上出现的入数据335

26.17 使用termcap控制用户终端338

26.18 将数据块写到服务器339

26.19 与客户机进程交互340

26.20 对非法命令做出响应341

26.21 脚本描述文件341

26.22 脚本描述的实现342

26.23 初始化脚本描述342

26.24 收集脚本文件名的字符343

26.25 打开脚本文件344

26.26 终止脚本描述345

26.27 打印状态信息346

26.28 小结348

第27章 UNIX服务器中的实用技巧和技术349

27.1 引言349

27.2 后台操作349

27.3 编写在后台运行的服务器350

27.4 打开描述符和继承351

27.5 对服务器编程以关闭所继承的描述符351

27.6 来自控制TTY的信号351

27.7 对服务器编程以改变它的控制TTY351

27.8 转移到一个安全的和已知的目录352

27.9 对服务器编程以改变目录352

27.10 UNIX umask352

27.11 对服务器编程以设置其umask353

27.12 进程组353

27.13 对服务器编程以设置其进程组353

27.14 用于标准I/O的描述符353

27.15 对服务器编程以打开标准描述符354

27.16 服务器用的互斥354

27.17 对服务器编程以避免多个副本354

27.18 记录服务器的进程ID355

27.19 对服务器编程以记录其进程ID355

27.20 等待一个子进程退出356

27.21 对服务器编程以等待每个子进程退出356

27.22 外来信号356

27.23 对服务器编程以忽略外来信号356

27.24 使用系统日志设施356

27.24.1 产生日志报文356

27.24.2 间接方式和标准差错的优点357

27.24.3 I/O重定向的限制357

27.24.4 客户机-服务器的解决方案357

27.24.5 syslog机制358

27.24.6 syslog的报文类358

27.24.7 syslog的设施358

27.24.8 syslog的优先级359

27.24.9 使用syslog359

27.24.10 syslog配置文件举例360

27.25 小结361

第28章 客户机-服务器系统中的死锁和饿死363

28.1 引言363

28.2 死锁的定义363

28.3 死锁检测的难度364

28.4 避免死锁364

28.5 一个客户机和服务器间的死锁364

28.6 在单个交互中避免死锁365

28.7 一组客户机和一个服务器之间的饿死365

28.8 忙连接和饿死366

28.9 避免阻塞的操作366

28.10 进程连接和其他限制367

28.11 客户机和服务器的循环367

28.12 用文档确认依赖性368

28.13 小结368

附录1 系统调用与插口使用的库例程370

附录2 UNIX文件和插口描述符的操作400

参考文献403

1998《国外计算机科学教材系列 用ICP/IP进行网际互连 第3卷 客户机-服务器编程和应用 第2版》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由DOUGLAS E.COMER等 1998 北京:电子工业出版社 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。

高度相关资料

TCP/IP网络互连技术 卷Ⅲ 客户/服务器编程和应用 Windows套接字版 英文版(1998 PDF版)
TCP/IP网络互连技术 卷Ⅲ 客户/服务器编程和应用 Windows套接字版 英文版
1998 北京:清华大学出版社
非计算机专业教材系列  计算机网络教程 P208( PDF版)
非计算机专业教材系列 计算机网络教程 P208
用TCP/IP进行网际互连 第3卷:客户机-服务器编程和应用(第2版)(1998年06月第1版 PDF版)
用TCP/IP进行网际互连 第3卷:客户机-服务器编程和应用(第2版)
1998年06月第1版 电子工业出版社
新编计算机应用基础教程  第3版( PDF版)
新编计算机应用基础教程 第3版
西安:西北工业大学出版社
中国微计算机用户录  第2版( PDF版)
中国微计算机用户录 第2版
微型电脑杂志社
计算机实用教程  第2版(1996 PDF版)
计算机实用教程 第2版
1996 南京:东南大学出版社
Sybase和客户机服务计算(1999 PDF版)
Sybase和客户机服务计算
1999 北京/西安:世界图书出版公司
计算机网络互连工程(1999 PDF版)
计算机网络互连工程
1999 北京:人民邮电出版社
计算机网络应用基础  第2版(1997 PDF版)
计算机网络应用基础 第2版
1997 北京:高等教育出版社
计算机互连大全  第3版(1995 PDF版)
计算机互连大全 第3版
1995 北京:电子工业出版社
Intranet客户机/服务器应用指南(1999 PDF版)
Intranet客户机/服务器应用指南
1999 北京:人民邮电出版社
用TCP/IP进行网际互连 第1卷 原理、协议和体系结构 第3版(1998 PDF版)
用TCP/IP进行网际互连 第1卷 原理、协议和体系结构 第3版
1998 北京:电子工业出版社
计算机应用教程(1995 PDF版)
计算机应用教程
1995 北京:北京大学出版社
计算机服装设计应用教程(1999 PDF版)
计算机服装设计应用教程
1999 北京:高等教育出版社
TCP/IP网络互连技术  卷3  客户/服务器编程和应用 BSD套接字版 英文版·第2版(1998 PDF版)
TCP/IP网络互连技术 卷3 客户/服务器编程和应用 BSD套接字版 英文版·第2版
1998 北京:清华大学出版社