图书介绍
TCP/IP网络互连技术 卷3 客户/服务器编程和应用 BSD套接字版 英文版·第2版PDF|Epub|txt|kindle电子书版本网盘下载
![TCP/IP网络互连技术 卷3 客户/服务器编程和应用 BSD套接字版 英文版·第2版](https://www.shukui.net/cover/43/31181880.jpg)
- (美)(D.E.科默)Douglas E.Comer,(美)(D.L.史蒂文斯)David L.Stevens著 著
- 出版社: 北京:清华大学出版社
- ISBN:7302029482
- 出版时间:1998
- 标注页数:519页
- 文件大小:14MB
- 文件页数:542页
- 主题词:
PDF下载
下载说明
TCP/IP网络互连技术 卷3 客户/服务器编程和应用 BSD套接字版 英文版·第2版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
Chapter 1 Introduction And Overview1
1.1 Use of TCP/IP1
1.2 Designing Applications For A Distributed Environment2
1.3 Standard And Nonstandard Application Protocols2
1.4 An Example Of Standard Application Protocol Use2
1.5 An Example Connection3
1.6 Using TELNET To Access An Alternative Service4
1.8 Viewing Services From The Provider s Perspective6
1.7 Application Protocols And Software Flexibility6
1.9 The Remainder Of This Text7
1.10 Summary7
Chapter 2 The Client Server Model And Software Design9
2.1 Introduction9
2.2 Motivation10
2.3 Terminology And Concepts10
2.3.1 Clients And Servers10
2.3.3 Standard Vs. Nonstandard Client Software11
2.3.2 Privilege And Complexity11
2.3.4 Parameterization Of Clients12
2.3.5 Connectionless Vs. Connection-Oriented Servers13
2.3.6 Stateless Vs. Stateful Servers14
2.3.7 A Stateful File Server Example14
2.3.8 Statelessness Is A Protocol Issue16
2.3.9 Servers As Clients17
2.4 Summary18
Chapter 3 Concurrent Processing In Client-Server Software21
3.1 Introduction21
3.2 Concurrency In Networks21
3.3 Concurrency In Servers23
3.4 Terminology And Concepts24
3.4.1 The Process Concept25
3.4.2 Programs vs.Processes25
3.5.1 A Sequential C Example26
3.4.3 Procedure Calls26
3.5 An Example Of Concurrent Process Creation26
3.5.2 A Concurrent Version27
3.5.3 Timeslicing29
3.5.4 Making Processes Diverge30
3.6 Executing New Code31
3.7 Context Switching And Protocol Software Design32
3.8 Concurrency And Asynchronous I/O32
3.9 Summary33
Chapter 4 Program Interface To Protocols35
4.1 Introduction35
4.2 Loosely Specified Protocol Software Interface35
4.2.1 Advantages And Disadvantages36
4.3 Interface Functionality36
4.4 Conceptual Interface Specification37
4.5 System Calls37
4.6 Two Basic Approaches To Network Communication38
4.7 The Basic I/O Functions Available In UNIX39
4.8 Using UNIX I/O With TCP/IP40
4.9 Summary40
Chapter 5 The Socket Interface43
5.1 Introduction43
5.2 Berkeley Sockets43
5.3 Specifying A Protocol Interface44
5.4 The Socket Abstraction45
5.4.1 Socket Descriptors And File Descriptors45
5.4.2 System Data Structures For Sockets46
5.4.3 Using Sockets47
5.5 Specifying An Endpoint Address47
5.6 A Generic Address Structure48
5.7 Major System Calls Used With Sockets49
5.7.1 The Socket Call49
5.7.4 The Read Call50
5.7.5 The Close Call50
5.7.2 The Connect Call50
5.7.3 The Write Call50
5.7.6 The Bind Call51
5.7.7 The Listen Call51
5.7.8 The Accept Call51
5.7.9 Summary Of Socket Calls Used With TCP51
5.8 Utility Routines For Integer Conversion52
5.9 Using Socket Calls In A Program53
5.11 Summary54
5.10 Symbolic Constants For Socket Call Parameters54
Chapter 6 Algorithms And Issues In Client Software Design57
6.1 Introduction57
6.2 Learning Algorithms Instead of Details57
6.3 Client Architecture58
6.4 Identifying The Location Of A Server58
6.5 Parsing An Address Argument60
6.6 Looking Up A Domain Name61
6.8 Port Numbers And Network Byte Order62
6.7 Looking Up A Well-Known Port By Name62
6.10 The TCP Client Algorithm63
6.9 Looking Up A Protocol By Name63
6.11 Allocating A Socket64
6.12 Choosing A Local Protocol Port Number65
6.13 A Fundamental Problem In Choosing A Local IP Address65
6.14 Connecting A TCP Socket To A Server66
6.15 Communicating With The Server Using TCP66
6.16 Reading A Response From A TCP Connection67
6.17.2 A Partial Close Operation68
6.17 Closing A TCP Connection68
6.17.1 The Need For Partial Close68
6.18 Programming A UDP Client69
6.19 Connected And Unconnected UDP Sockets69
6.20 Using Connect With UDP70
6.21 Communicating With A Server Using UDP70
6.22 Closing A Socket That Uses UDP70
6.25 Summary71
6.23 Partial Close For UDP71
6.24 A Warning About UDP Unreliability71
Chapter 7 Example Client Software75
7.1 Introduction75
7.2 The Importance Of Small Examples75
7.3 Hiding Details76
7.4 An Example Procedure Library For Client Programs76
7.5 Implementation Of ConnectTCP77
7.6 Implementation Of ConnectUDP78
7.7 A Procedure That Forms Connections79
7.8 Using The Example Library81
7.9 The DAYTIME Service82
7.10 Implementation Of A TCP Client For DAYTIME82
7.11 Reading From A TCP Connection84
7.12 The TIME Service84
7.13 Accessing The TIME Service85
7.14 Accurate Times And Network Delays85
7.15 A UDP Client For The TIME Service86
7.16 The ECHO Service88
7.17 A TCP Client For The ECHO Service88
7.18 A UDP Client For The ECHO Service90
7.19 Summary92
Chapter 8 Algorithms And Issues In Server Software Design95
8.1 Introduction95
8.2 The Conceptual Server Algorithm95
8.4 Connection-Oriented Vs.Connectionless Access96
8.3 Concurrent Vs.Iterative Servers96
8.5 Connection-Oriented Servers97
8.6 Connectionless Servers97
8.7 Failure,Reliability,And Statelessness98
8.8 Optimizing Stateless Servers99
8.9 Four Basic Types Of Servers101
8.10 Request Processing Time102
8.11 Iterative Server Algorithms102
8.13 Binding To A Well-Known Address Using INADDR_ANY103
8.12 An Iterative,Connection-Oriented Server Algorithm103
8.14 Placing The Socket In Passive Mode104
8.15 Accepting Connections And Using Them104
8.16 An Iterative,Connectionless Server Algorithm104
8.17 Forming A Reply Address In A Connectionless Server105
8.18 Concurrent Server Algorithms106
8.19 Master And Slave Processes106
8.20 A Concurrent,Connectionless Server Algorithm107
8.21 A Concurrent,Connection-Oriented Server Algorithm107
8.22 Using Separate Programs As Slaves108
8.23 Apparent Concurrency Using A Single Process109
8.24 When To Use Each Server Type110
8.25 A Summary of Server Types111
8.26 The Important Problem Of Server Deadlock112
8.27 Alternative Implementations112
8.28 Summary113
9.2 Creating A Passive Socket115
9.1 Introduction115
Chapter 9 Iterative,Connectionless Servers(UDP)115
9.3 Process Structure119
9.4 An Example TIME Server119
9.5 Summary121
Chapter 10 Iterative,Connection-Oriented Servers(TCP)123
10.1 Introduction123
10.2 Allocating A Passive TCP Socket123
10.4 Process Structure124
10.3 A Server For The DAYTIME Service124
10.5 An Example DAYTIME Server125
10.6 Closing Connections128
10.7 Connection Termination And Server Vulnerability128
10.8 Summary129
Chapter 11 Concurrent,Connection-Oriented Servers(TCP)131
11.1 Introduction131
11.2 Concurrent ECHO131
11.4 Process Structure132
11.3 Iterative Vs.Concurrent Implementations132
11.5 An Example Concurrent ECHO Server133
11.6 Cleaning Up Errant Processes137
11.7 Summary138
Chapter 12 Single-Process,Concurrent Servers(TCP)139
12.1 Introduction139
12.2 Data-driven Processing In A Server139
12.3 Data-Driven Processing With A Single Process140
12.4 Process Structure Of A Single-Process Server141
12.5 An Example Single-Process ECHO Server142
12.6 Summary144
Chapter 13 Multiprotocol Servers(TCP,UDP)147
13.1 Introduction147
13.2 The Motivation For Reducing The Number Of Servers147
13.3 Multiprotocol Server Design148
13.4 Process Structure148
13.5 An Example Multiprotocol DAYTIME Server149
13.6 The Concept Of Shared Code153
13.7 Concurrent Multiprotocol Servers153
13.8 Summary153
Chapter 14 Multiservice Servers(TCP,UDP)155
14.1 Introduction155
14.2 Consolidating Servers155
14.3 A Connectionless,Multiservice Server Design156
14.4 A Connection-Oriented,Multiservice Server Design157
14.5 A Concurrent,Connection-Oriented,Multiservice Server158
14.6 A Single-Process,Multiservice Server Implementation158
14.7 Invoking Separate Programs From A Multiservice Server159
14.8 Multiservice,Multiprotocol Designs160
14.9 An Example Multiservice Server161
14.10 Static and Dynamic Server Configuration168
14.11 The UNIX Super Server,Inetd169
14.12 An Example Inetd Server171
14.13 Summary173
Chapter 15 Uniform,Efficient Management Of Server Concurrency175
15.1 Introduction175
15.2 Choosing Between An Iterative And A Concurrent Design175
15.3 Level Of Concurrency176
15.4 Demand-Driven Concurrency177
15.5 The Cost Of Concurrency177
15.6 Overhead And Delay177
15.7 Small Delays Can Matter178
15.8 Process Preallocation179
15.8.1 Preallocation In UNIX180
15.8.2 Preallocation In A Connection-Oriented Server180
15.8.3 Preallocation In A Connectionless Server181
15.8.4 Preallocation,Bursty Traffic,And NFS182
15.8.5 Process Preallocation On A Multiprocessor183
15.9 Delayed Process Allocation183
15.10 The Uniform Basis For Both Techniques184
15.12 Summary185
15.11 Combining Techniques185
Chapter 16 Concurrency In Clients187
16.1 Introduction187
16.2 The Advantages Of Concurrency187
16.3 The Motivation For Exercising Control188
16.4 Concurrent Contact With Multiple Servers189
16.5 Implementing Concurrent Clients189
16.6 Single-Process Implementations191
16.7 An Example Concurrent Client That Uses ECHO192
16.8 Execution Of The Concurrent Client196
16.9 Concurrency In The Example Code197
16.10 Summary198
Chapter 17 Tunneling At The Transport And Application Levels199
17.1 Introduction199
17.2 Multiprotocol Environments199
17.3 Mixing Network Technologies201
17.4 Dynamic Circuit Allocation202
17.5 Encapsulation And Tunneling203
17.6 Tunneling Through An IP Internet203
17.7 Application-Level Tunneling Between Clients And Servers204
17.8 Tunneling,Encapsulation,And Dialup Phone Lines205
17.9 Summary206
Chapter 18 Application Level Gateways209
18.1 Introduction209
18.2 Clients And Servers In Constrained Environments209
18.2.1 The Reality Of Multiple Technologies209
18.2.2 Computers With Limited Functionality210
18.2.3 Connectivity Constraints That Arise From Security210
18.3 Using Application Gateways211
18.4 Interoperability Through A Mail Gateway212
18.5 Implementation Of A Mail Gateway213
18.6 A Comparison Of Application Gateways And Tunneling213
18.7 Application Gateways And Limited Functionality Systems215
18.8 Application Gateways Used For Security216
18.9 Application Gateways And The Extra Hop Problem217
18.10 An Example Application Gateway219
18.11 Implementation Of An Application Gateway220
18.12 Code For The Application Gateway221
18.13 An Example Gateway Exchange223
18.14 Using Rfcd With UNIX s forward223
18.15 A General-Purpose Application Gateway224
18.16 Operation Of SLIRP224
18.18 IP Addressing And SLIRP225
18.17 How SLIRP Handles Connections225
18.19 Summary226
Chapter 19 External Data Representation(XDR)229
19.1 Introduction229
19.2 Representations For Data In Computers229
19.3 The N-Squared Conversion Problem230
19.4 Network Standard Byte Order231
19.5 A De Facto Standard External Data Representation232
19.6 XDR Data Types233
19.7 Implicit Types234
19.8 Software Support For Using XDR234
19.9 XDR Library Routines234
19.10 Building A Message One Piece At A Time234
19.11 Conversion Routines In The XDR Library236
19.12 XDR Streams,I/O,and TCP238
19.13 Records,Record Boundaries,And Datagram I/O239
19.14 Summary239
Chapter 20 Remote Procedure Call Concept(RPC)241
20.1 Introduction241
20.2 Remote Procedure Call Model241
20.3 Two Paradigms For Building Distributed Programs242
20.4 A Conceptual Model For Conventional Procedure Calls243
20.5 An Extension Of the Procedural Model243
20.6 Execution Of Conventional Procedure Call And Return244
20.7 The Procedural Model In Distributed Systems245
20.8 Analogy Between Client-Server And RPC246
20.9 Distributed Computation As A Program247
20.10 Sun Microsystems Remote Procedure Call Definition248
20.11 Remote Programs And Procedures248
20.12 Reducing The Number Of Arguments249
20.13 Identifying Remote Programs And Procedures249
20.14 Accommodating Multiple Versions Of A Remote Program250
20.15 Mutual Exclusion For Procedures In A Remote Program251
20.16 Communication Semantics252
20.17 At Least Once Semantics252
20.18 RPC Retransmission253
20.19 Mapping A Remote Program To A Protocol Port253
20.20 Dynamic Port Mapping254
20.21 RPC Port Mapper Algorithm255
20.22 ONC RPC Message Format257
20.24 Authentication258
20.23 Marshaling Arguments For A Remote Procedure258
20.25 An Example Of RPC Message Representation259
20.26 An Example Of The UNIX Authentication Field260
20.27 Summary261
Chapter 21 Distributed Program Generation(Rpcgen Concept)265
21.1 Introduction265
21.2 Using Remote Procedure Calls266
21.3 Programming Mechanisms To Support RPC267
21.4 Dividing A Program Into Local And Remote Procedures268
21.5 Adding Code For RPC269
21.6 Stub Procedures269
21.7 Multiple Remote Procedures And Dispatching270
21.8 Name Of The Client-Side Stud Procedure271
21.9 Using Rpcgen To Generate Distributed Programs272
21.10 Rpcgen Output And Interface Procedures272
21.11 Rpcgen Input And Output273
21.13 Summary274
21.12 Using Rpcgen To Build A Client And Server274
Chapter 22 Distributed Program Generation(Rpcgen Example)277
22.1 Introduction277
22.2 An Example To Illustrate Rpcgen278
22.3 Dictionary Look Up278
22.4 Eight Steps To A Distr6ibuted Application279
22.5 Step 1:Build A Conventional Application Program280
22.6 Step 2:Divide The Program Into Two Parts284
22.7 Step 3:Create An Rpcgen Specification290
22.8 Step 4:Run Rpcgen292
22.9 The.h File Produced By Rpcgen292
22.10 The XDR Conversion File Produced By Rpcgen293
22.11 The Client Code Produced By Rpcgen294
22.12 The Server Code Produced By Rpcgen296
22.13 Step 5:Write Stub Interface Procedures299
22.13.1 Client-Side Interface Routines299
22.13.2 Server-Side Interface Routines301
22.14 Step 6:Compile And Link The Client Program303
22.15 Step 7:Compile And Link The Server Program307
22.16 Step 8:Start The Server And Execute The Client309
22.17 Using The UNIX Make Utility309
22.18 Summary311
Chapter 23 Network File System Concepts(NFS)315
23.1 Introduction315
23.2 Remote File Access Vs.Transfer315
23.3 Operations On Remote Files316
23.4 File Access Among Heterogeneous Computers316
23.5 Stateless Servers317
23.6 NFS And UNIX File Semantics317
23.7 Review Of The UNIX File System317
23.7.1 Basic Definitions317
23.7.3 A File s Owner And Group Identifiers318
23.7.4 Protection And Access318
23.7.2 A Byte Sequence Without Record Boundaries318
23.7.5 The Open-Read-Write-Close Paradigm320
23.7.6 Data Transfer321
23.7.7 Permission To Search A Directory321
23.7.8 Random Access321
23.7.9 Seeking Beyond The End Of File322
23.7.10 File Position And Concurrent Access323
23.7.11 Semantics Of Write During Concurrent Access324
23.7.12 File Names And Paths324
23.7.13 Inode:Information Stored With A File325
23.7.14 Stat Operation326
23.7.15 The File Naming Mechanism327
23.7.16 File System Mounts328
23.7.17 UNIX File Name Resolution330
23.7.18 Symbolic Links331
23.8 Files Under NFS331
23.10 NFS File Modes332
23.9 NFS File Types332
23.11 NFS File Attributes333
23.12 NFS Client And Server334
23.13 NFS Client Operation335
23.14 NFS Client And UNIX336
23.15 NFS Mounts337
23.16 File Handle338
23.17 Handles Replace Path Names338
23.18 An NFS Client In UNIX340
23.19 File Positioning With A Stateless Server340
23.20 Operations On Directories341
23.21 Reading A Directory Statelessly341
23.22 Multiple Hierarchies In An NFS Server342
23.23 The Mount Protocol342
23.24 Summary343
24.2 Using RPC To Define A Protocol345
24.1 Introduction345
Chapter 24 Network File System Protocol(NFS,Mount)345
24.3 Defining A Protocol With Data Structures And Procedures346
24.4 NFS Constant,Type,And Data Declarations347
24.4.1 NFS Constants347
24.4.2 NFS Typedef Declarations348
24.4.3 NFS Data Structures348
24.5 NFS Procedures350
24.6 Semantics Of NFS Operations351
24.6.5 NFSPROC_LOOKUP(Procedure 4)352
24.6.8 NFSPROC_WRITECACHE(Procedure 7)[Obsolete in NFS3]352
24.6.7 NFSPROC_READ(Procedure 6)352
24.6.6 NFSPROC_READLINK(Procedure 5)352
24.6.1 NFSPROC_NULL(Procedure 0)352
24.6.4 NFSPROC_ROOT(Procedure 3)[Obsolete in NFS3]352
24.6.3 NFSPROC_SETATTR(Procedure 2)352
24.6.2 NFSPROC_GETATTR(Procedure 1)352
24.6.13 NFSPROC_LINK(Procedure 12)353
24.6.12 NFSPROC_RENAME(Procedure 11)353
24.6.14 NFSPROC_SYMLINK(Procedure 13)353
24.6.11 NFSPROC_REMOVE(Procedure 10)353
24.6.10 NFSPROC_CREATE(Procedure 9)353
24.6.9 NFSPROC_WRITE(Procedure 8)353
24.6.15 NFSPROC_MKDIR(Procedure 14)354
24.6.16 NFSPROC_RMDIR(Procedure 15)354
24.6.17 NFSPROC_READDIR(Procedure 16)354
24.6.18 NFSPROC_STATFS(Procedure 17)354
24.7.2 Mount Type Definitions355
24.7.1 Mount Constant Definitions355
24.7 The Mount Protocol355
24.7.3 Mount Data Structures356
24.8 Procedures In The Mount Protocol357
24.9 Semantics of Mount Operations357
24.9.1 MNTPROC_NULL(Procedure 0)357
24.9.2 MNTPROC_MNT(Procedure 1)357
24.10 NFS And Mount Authentication358
24.9.6 MNTPROC_EXPORT(Procedure 5)358
24.9.4 MNTPROC_UMNT(Procedure 3)358
24.9.5 MNTPROC_UMNTALL(Procedure 4)358
24.9.3 MNTPROC_DUMP(Procedure 2)358
24.11 Changes In NFS Version 3360
24.12 Summary361
Chapter 25 A TELNET Client(Program Structure)363
25.1 Introduction363
25.2 Overview364
25.2.1 The User s Terminal364
25.2.2 Command And Control Information364
25.2.3 Terminals,Windows,and Files364
25.2.4 The Need For Concurrency365
25.2.5 A Process Model For A TELNET Client366
25.3 A TELNET Client Algorithm366
25.4 Terminal I/O In UNIX367
25.4.1 Controlling A Device Driver368
25.5 Establishing Terminal Modes369
25.6 Global Variable Used For Stored State371
25.7 Restoring Terminal Modes Before Exit372
25.8 Client Suspension And Resumption373
25.9 Finite State Machine Specification374
25.10 Embedding Commands In A TELNET Data Stream375
25.11 Option Negotiation376
25.12 Request/Offer Symmetry376
25.13 TELNET Character Definitions376
25.14 A Finite State Machine For Data From The Server378
25.15 Transitions Among States379
25.16 A Finite State Machine Implementation381
25.17 A Compact FSM Representation381
25.18 Keeping The Compact Representation At Run-Time383
25.19 Implementation Of A Compact Representation383
25.20 Building An FSM Transition Matrix385
25.21 The Socket Output Finite State Machine387
25.22 Definitions For The Socket Output FSM390
25.23 The Option Subnegotiation Finite State Machine391
25.24 Definitions For The Option Subnegotiation FSM392
25.25 FSM Initialization393
25.26 Arguments For The TELNET Client394
25.27 The Heart Of The TELNET Client395
25.28 Implementation Of The Main FSM399
25.29 Summary401
Chapter 26 A TELNET Client(Implementation Details)403
26.1 Introduction403
26.2 The FSM Action Procedures403
26.3 Recording The Type Of An Option Request404
26.4 Performing No Operation405
26.5 Responding To WILL/WONT For The Echo Option405
26.6 Responding To WILL/WONT For Unsupported Options407
26.7 Responding To WILL/WONT For The No Go-Ahead Option407
26.8 Generating DO/DONT For Binary Transmission409
26.9 Responding To DO/DONT For Unsupported Options410
26.10 Responding To DO/DONT For Transmit Binary Option410
26.11 Responding To DO/DONT For The Terminal Type Option412
26.12 Option Subnegotiation413
26.13 Sending Terminal Type Information414
26.14 Terminating Subnegotiation416
26.15 Sending A Character To The Server416
26.16 Displaying Incoming Data On The User s Terminal418
26.17 Using Termcap To Control The User s Terminal421
26.18 Writing A Block Of Data To The Server422
26.19 Interacting With The Client Process424
26.20 Responding To Illegal Commands424
26.22 Implementation Of Scripting425
26.21 Scripting To A File425
26.23 Initialization Of Scripting426
26.24 Collecting Characters Of The Script File Name427
26.25 Opening A Script File428
26.26 Terminating Scripting430
26.27 Printing Status Information431
26.28 Summary432
27.2 Operating In Background435
27.1 Introduction435
Chapter 27 Practical Hints And Techniques For UNIX Servers435
27.3 Programming A Server To Operate In Background436
27.4 Open Descriptors And Inheritance437
27.5 Programming A Server To Close Inherited Descriptors438
27.6 Signals From The Controlling TTY438
27.7 Programming A Server To Change Its Controlling TTY438
27.8 Moving To A Safe And Known Directory439
27.9 Programming A Server To Change Directories439
27.12 Process Groups440
27.10 The UNIX Umask440
27.11 Programming A Server To Set Its Umask440
27.13 Programming A Server To Set Its Process Group441
27.14 Descriptors For Standard I/O441
27.15 Programming A Server To Open Standard Descriptors441
27.16 Mutual Exclusion For The Server442
27.17 Programming A Server To Avoid Multiple Copies442
27.19 Programming A Server To Record Its Process ID443
27.18 Recording A Server s Process ID443
27.20 Waiting For A Child Process To Exit444
27.21 Programming A Server To Wait For Each Child To Exit444
27.22 Extraneous Signals444
27.23 Programming A Server To Ignore Extraneous Signals445
27.24 Using A System Log Facility445
27.24.1 Generating Log Messages445
27.24.2 The Advantage Of Indirection And Standard Error445
27.24.4 A Client-Server Solution446
27.24.3 Limitations Of I/O Redirection446
27.24.5 The Syslog Mechanism447
27.24.6 Syslog Message Classes447
27.24.7 Syslog Facilities447
27.24.8 Syslog Priority Levels448
27.24.9 Using Syslog448
27.24.10 An Example Syslog Configuration File449
27.25 Summary450
28.1 Introduction453
Chapter 28 Deadlock And Starvation In Client-Server Systems453
28.2 Definition Of Deadlock454
28.3 Difficulty Of Deadlock Detection454
28.4 Deadlock Avoidance455
28.5 Deadlock Between A Client And Server455
28.6 Avoiding Deadlock In A Single Interaction456
28.7 Starvation Among A Set Of Clients And A Server456
28.8 Busy Connections And Starvation457
28.9 Avoiding Blocking Operations458
28.10 Processes,Connections,And Other Limits458
28.11 Cycles Of Clients And Servers459
28.12 Documenting Dependencies459
28.13 Summary460
Appendix 1 System Calls And Library Routines Used With Sockets463
Appendix 2 manipulation Of UNIX File And Socket Descriptors493
Bibliography497
Index505