Part I Common Themes
1 Introduction ................................................. 3
1.1 Introduction to Distributed Systems ..................... 5
1.2 Terminology ............................................. 7
1.3 Centralized and Decentralized Systems ................... 9
1.3.1 Resource Discovery .............................. 10
1.3.2 Resource Availability ........................... 11
1.3.3 Resource Communication .......................... 13
1.4 Taxonomy Dependency Considerations ..................... 14
1.5 Examples of Distributed Applications ................... 17
1.5.1 The Web: Decentralized .......................... 17
1.5.2 A Stand-Alone Web Server: Centralized ........... 18
1.5.3 SETI@home: Centralized .......................... 20
1.5.4 Napster: Brokered ............................... 21
1.5.5 Gnutella: Decentralized ......................... 21
1.6 Examples of Middleware ................................. 23
1.6.1 J2EE and JMS: Centralized ....................... 23
1.6.2 Jini: Brokered .................................. 23
1.6.3 Web Services: Brokered .......................... 24
1.6.4 Jxta: Decentralized ............................. 25
1.7 Conclusion ............................................. 26
2 Discovery Protocols ......................................... 27
2.1 Service and Directory Discovery ........................ 27
2.2 Unicast Addressing ..................................... 29
2.2.1 UDP ............................................. 30
2.2.2 TCP ............................................. 30
2.3 IP Multicast Addressing ................................ 32
2.3.1 Multicast Grouping .............................. 33
2.3.2 Multicast Distribution Trees .................... 34
2.3.3 Reverse Path Forwarding ......................... 34
2.4 Service Location Protocol .............................. 35
2.5 Conclusion ............................................. 37
3 Structured Document Types ................................... 39
3.1 HTML ................................................... 40
3.2 XML .................................................... 43
3.3 XHTML .................................................. 46
3.4 Document Modelling and Validation ...................... 48
3.4.1 Document Type Definition ........................ 48
3.4.2 XML Schema ...................................... 51
3.4.3 RELAX NG ........................................ 56
3.5 Conclusion ............................................. 60
4 Distributed Security Techniques ............................. 61
4.1 Introduction ........................................... 62
4.2 Design Issues .......................................... 63
4.2.1 Focus of Data Control ........................... 64
4.2.2 Layering of Security Mechanisms ................. 65
4.2.3 Simplicity ...................................... 66
4.3 Cryptography ........................................... 67
4.3.1 Basics of Cryptography .......................... 67
4.3.2 Types of Encryption ............................. 68
4.3.3 Symmetric Cryptosystem .......................... 69
4.3.4 Asymmetric Cryptosystem ......................... 69
4.3.5 Hash Functions .................................. 70
4.4 Signing Messages with a Digital Signature .............. 71
4.5 Secure Channels ........................................ 72
4.5.1 Secure Channels Using Symmetric Keys ............ 73
4.5.2 Secure Channels Using Public/Private Keys ....... 74
4.6 Secure Mobile Code: Creating a Sandbox ................. 75
4.7 Conclusion ............................................. 77
Part II Distributed Environments
5 The Web ..................................................... 81
5.1 Introduction ........................................... 81
5.2 The Dawn of the Web .................................... 82
5.3 Naming Things in a Uniform Way ......................... 83
5.3.1 URI Templates ................................... 86
5.4 A Shared Representation of Things ...................... 89
5.5 Hypertext Transfer Protocol ............................ 90
5.5.1 HTTP and Security ............................... 92
5.6 Representational State Transfer ........................ 94
5.6.1 Client-Server ................................... 95
5.6.2 Statelessness ................................... 95
5.6.3 Caching ......................................... 96
5.6.4 Uniform Interface ............................... 97
5.6.5 Layering ....................................... 100
5.6.6 Code-on-Demand ................................. 100
5.7 The Semantic Web ...................................... 101
5.8 Conclusion ............................................ 105
6 Peer-2-Peer Environments ................................... 107
6.1 What Is Peer to Peer? ................................. 108
6.1.1 Historical Peer to Peer ........................ 108
6.1.2 The Shift to New Internet Users ................ 109
6.2 Modern Definition of Peer to Peer ..................... 110
6.2.1 Social Impacts of P2P .......................... 113
6.3 The P2P Environment ................................... 115
6.3.1 Hubs, Switches, Bridges, Access Points and
Routers ........................................ 115
6.3.2 NAT Systems .................................... 117
6.3.3 Firewalls ...................................... 118
6.3.4 P2P Overlay Networks ........................... 119
6.4 P2P Example Applications .............................. 119
6.4.1 MP3 File Sharing with Napster .................. 120
6.4.2 File Sharing with Gnutella ..................... 121
6.5 True P2P and Good Distributed Design .................. 122
6.6 Related Projects: Volunteer Computing ................. 123
6.6.1 Distributed Computing Using SETI@home .......... 124
6.6.2 BOINC .......................................... 124
6.7 Conclusion ............................................ 125
7 Web Services ............................................... 127
7.1 Introduction .......................................... 127
7.1.1 Looking Forward: What Do We Need? .............. 128
7.1.2 Representing Data and Semantics ................ 130
7.2 Web Services .......................................... 132
7.2.1 A Minimal Web Service .......................... 132
7.2.2 Web Services Architecture ...................... 133
7.2.3 Web Services Development ....................... 135
7.3 Service-Oriented Architecture ......................... 136
7.3.1 A Web Service SOA .............................. 136
7.4 Conclusion ............................................ 138
8 Distributed Objects and Agent Technologies ................. 139
8.1 What Are Distributed Objects? ......................... 140
8.2 CORBA ................................................. 141
8.3 Mobile Agents ......................................... 143
8.4 Objects, Services and Resources ....................... 145
8.4.1 Objects ........................................ 145
8.4.2 Resources ...................................... 146
8.4.3 Services ....................................... 146
8.5 Distributing Objects Using Java ....................... 148
8.5.1 Remote Method Invocation ....................... 149
8.5.2 Java Serialization ............................. 150
8.6 Conclusion ............................................ 153
9 Grid Computing ............................................. 155
9.1 The Grid Dream ........................................ 155
9.2 Social Perspective .................................... 156
9.3 History of the Grid ................................... 157
9.3.1 The First Generation ........................... 158
9.3.2 The Second Generation .......................... 159
9.3.3 The Third Generation ........................... 161
9.4 The Grid Computing Architecture ....................... 162
9.4.1 Virtual Organizations and the Sharing of
Resources ...................................... 163
9.5 To Be or Not to Be a Grid: These Are the Criteria ..... 166
9.5.1 Centralized Control ............................ 166
9.5.2 Standard, Open, General-Purpose Protocols ...... 167
9.5.3 Quality of Service ............................. 168
9.6 Types of Grid ......................................... 168
9.7 The Globus Toolkit 2.x ................................ 169
9.7.1 Globus Tools ................................... 170
9.7.2 Security ....................................... 171
9.7.3 Information Services ........................... 172
9.7.4 Data Management ................................ 174
9.7.5 Resource Management ............................ 174
9.8 Comments and Conclusion ............................... 176
Part III Protocols and Architectures I — P2P Applications
10 Gnutella ................................................... 181
10.1 History of Gnutella ................................... 181
10.2 What Is Gnutella? ..................................... 183
10.3 A Gnutella Scenario ................................... 185
10.3.1 Discovering Peers .............................. 185
10.3.2 Gnutella in Operation .......................... 186
10.3.3 Searching Within Gnutella ...................... 187
10.4 Gnutella 0.4 Protocol Description ..................... 187
10.4.1 Gnutella Descriptors ........................... 188
10.4.2 Gnutella Descriptor Header ..................... 189
10.4.3 Gnutella Payload: Ping ......................... 190
10.4.4 Gnutella Payload: Pong ......................... 190
10.4.5 Gnutella Payload: Query ........................ 191
10.4.6 Gnutella Payload: QueryHit ..................... 191
10.4.7 Gnutella Payload: Push ......................... 192
10.5 File Downloads ........................................ 193
10.6 Gnutella Implementations .............................. 194
10.7 More Information ...................................... 195
10.8 Conclusion ............................................ 195
11 Scalability ................................................ 197
11.1 Performance in P2P Networks ........................... 198
11.2 Unstructured P2P ...................................... 199
11.2.1 Social Networks ................................ 200
11.2.2 Combining Network Topologies ................... 202
11.2.3 The Convergence of the Napster and Gnutella
Approaches ..................................... 204
11.2.4 Gnutella Research Experiments .................. 207
11.3 The Structured P2P Approach ........................... 208
11.3.1 Structure of a DHT Network ..................... 209
11.4 Further Reading ....................................... 210
11.5 Conclusion ....................................... 211
12 Freenet .................................................... 213
12.1 Introduction .......................................... 214
12.2 Freenet Routing ....................................... 214
12.2.1 Populating the Freenet Network ................. 214
12.2.2 Self-Organizing Adaptive Behaviour in
Freenet ........................................ 215
12.2.3 Requesting Files ............................... 217
12.2.4 Similarities with Other Peer Organization
Techniques ..................................... 218
12.3 Freenet Keys .......................................... 219
12.3.1 Keyword-Signed Keys ............................ 219
12.3.2 Signed-Subspace Keys ........................... 220
12.3.3 Content-Hash Keys .............................. 221
12.3.4 Clustering Keys ................................ 223
12.4 Joining the Network ................................... 223
12.5 Conclusion ............................................ 224
13 BitTorrent ................................................. 227
13.1 What Is BitTorrent? ................................... 228
13.2 The BitTorrent Protocol ............................... 229
13.2.1 Terminology .................................... 229
13.2.2 Entities in a Bit Torrent Application .......... 230
13.2.3 Bencoding and Torrent Metafiles ................ 231
13.2.4 The Tracker and File Downloading ............... 232
13.3 BitTorrent, Inc. ...................................... 234
13.4 Conclusion ............................................ 235
Part IV Protocols and Architectures II — Middleware
14 Jini ....................................................... 239
14.1 Jini .................................................. 240
14.1.1 Setting the Scene .............................. 240
14.2 Jini Architecture ..................................... 241
14.2.1 Jini in Operation .............................. 242
14.3 Registering and Using Jini Services ................... 245
14.3.1 Discovery: Finding Lookup Services ............. 245
14.3.2 Join: Registering a Service (Jini Service) ..... 246
14.3.3 Lookup: Finding and Using Services (Jini
Client) ........................................ 247
14.4 Jini: Tying Things Together ........................... 249
14.5 Organization of Jini Services ......................... 250
14.5.1 Events ......................................... 250
14.6 Conclusion ............................................ 251
15 Jxta ....................................................... 253
15.1 Background: Why Was Project Jxta Started? ............. 253
15.1.1 Interoperability ............................... 254
15.1.2 Platform Independence .......................... 254
15.1.3 Ubiquity ....................................... 255
15.2 Jxta Overview ......................................... 256
15.2.1 The Jxta Architecture .......................... 257
15.2.2 Jxta Peers ..................................... 257
15.2.3 Identifiers .................................... 258
15.2.4 Advertisements ................................. 259
15.2.5 Messages ....................................... 259
15.2.6 Modules ........................................ 260
15.3 Jxta Network Overlay .................................. 260
15.3.1 Peer Groups .................................... 260
15.3.2 Rendezvous Nodes ............................... 261
15.3.3 Pipes .......................................... 262
15.3.4 Relay Nodes .................................... 264
15.4 The Jxta Protocols .................................... 264
15.4.1 The Peer Discovery Protocol .................... 264
15.4.2 The Peer Resolver Protocol ..................... 265
15.4.3 The Peer Information Protocol .................. 266
15.4.4 The Pipe Binding Protocol ...................... 266
15.4.5 The Endpoint Routing Protocol .................. 266
15.4.6 The Rendezvous Protocol ........................ 266
15.5 A Jxta Scenario: Fitting Things Together .............. 266
15.6 Jxta Environment Considerations ....................... 267
15.6.1 Security ....................................... 267
15.6.2 NAT and Firewalls .............................. 268
15.7 Comment ............................................... 268
15.8 Conclusion ............................................ 268
16 Web Services Protocols ..................................... 269
16.1 SOAP .................................................. 270
16.1.1 Just Like Sending a Letter ..................... 270
16.1.2 Web Services Architecture with SOAP ............ 272
16.1.3 The Anatomy of a SOAP Message .................. 273
16.2 WSDL .................................................. 275
16.2.1 Service Description ............................ 276
16.2.2 Implementation Details ......................... 277
16.2.3 Anatomy of a WSDL Document ..................... 278
16.3 UDDI .................................................. 281
16.4 WS-Extensions ......................................... 284
16.4.1 WS-Addressing .................................. 284
16.4.2 WS-Policy ...................................... 286
16.4.3 Security Specifications ........................ 286
16.4.4 WS-Transfer .................................... 287
16.4.5 WS-Eventing .................................... 288
16.4.6 WS-ReliableMessaging ........................... 288
16.4.7 WS-Coordination ................................ 289
16.5 Conclusion ............................................ 289
17 OGSA ....................................................... 291
17.1 OGSA .................................................. 292
17.1.1 Grid Services .................................. 292
17.1.2 Virtual Services ............................... 294
17.1.3 OGSA Architecture .............................. 295
17.2 OGSI .................................................. 296
17.2.1 Globus Toolkit, Version 3 ...................... 298
17.3 WS-RF ................................................. 299
17.3.1 Problems with OGSI ............................. 300
17.3.2 The Specifications ............................. 301
17.3.3 WS-Resources ................................... 302
17.3.4 WS-ResourceProperties .......................... 302
17.3.5 WS-Notification ................................ 305
17.3.6 The Future of WS-RF ............................ 306
17.4 Higher Level Interfaces ............................... 307
17.4.1 Job Submission Description Language ............ 307
17.4.2 Basic Execution Service ........................ 309
17.5 Conclusion ............................................ 312
18 Web 2.0 .................................................... 313
18.1 The Web as Platform ................................... 314
18.1.1 The Long Tail .................................. 316
18.2 Technologies and APIs ................................. 318
18.2.1 Ajax (formerly AJAX) ........................... 318
18.2.2 Application Programming Interfaces (APIs) ...... 322
18.2.3 Microformats ................................... 325
18.2.4 Syndication .................................... 327
18.2.5 Web Application Description Language ........... 334
18.3 Conclusion ............................................ 337
19 On the Horizon ............................................. 339
19.1 Computing in the Cloud ................................ 339
19.2 Ubiquitous Computing .................................. 341
19.2.1 Everyware ...................................... 343
19.2.2 Spimes ......................................... 345
19.3 Conclusion ............................................ 346
Part V Deployment
20 Distributed Object Deployment Using Jini ................... 349
20.1 RMI Security .......................................... 349
20.2 An RMI Application .................................... 350
20.2.1 The Java Proxy ................................. 350
20.2.2 The Server ..................................... 351
20.2.3 The Client ..................................... 353
20.2.4 Setting Up the Environment ..................... 355
20.3 A Jini Application .................................... 355
20.3.1 The Remote Interface ........................... 356
20.3.2 The Server ..................................... 356
20.3.3 The Client ..................................... 358
20.4 Running Jini Applications ............................. 360
20.4.1 HTTP Server .................................... 360
20.4.2 RMID Daemon .................................... 361
20.4.3 The Jini Lookup Service ........................ 361
20.4.4 Running the Service ............................ 361
20.5 Conclusion ............................................ 362
21 P2P Deployment Using Jxta .................................. 363
21.1 Example One: Starting the Jxta Platform ............... 364
21.1.1 Peer Configuration Using Jxta .................. 365
21.1.2 Using the Jxta Configurator .................... 366
21.2 Example Two: Using Jxta Pipes ......................... 369
21.2.1 Running the Examples ........................... 377
21.3 P2P Environment: The Jxta Approach .................... 378
21.3.1 Jxta and P2P Advert Availability ............... 378
21.3.2 Expiration of Adverts .......................... 379
21.4 Conclusion ............................................ 380
22 Web Services Deployment .................................... 381
22.1 Data Binding .......................................... 382
22.2 Setup ................................................. 383
22.3 Container Classes ..................................... 384
22.3.1 VEvent Class ................................... 384
22.3.2 VCard Class .................................... 387
22.4 Server Implementation ................................. 390
22.5 Service WSDL .......................................... 395
22.6 Client Implementation ................................. 397
22.6.1 Standard Client ................................ 398
22.6.2 Dynamic Client ................................. 404
22.7 Conclusion ............................................ 409
23 Web Deployment Using Atom .................................. 411
23.1 Setup ................................................. 412
23.2 Utility Classes ....................................... 413
23.3 The Atom Server ....................................... 414
23.4 Atom Client ........................................... 421
23.5 Running the Service and Client ........................ 425
23.6 Conclusion ............................................ 428
23.7 Ancillary Code ........................................ 428
A Want to Find Out More? ..................................... 435
A.l The Web ............................................... 435
A.2 Web 2.0 ............................................... 436
A.3 Web Services .......................................... 436
A.4 Grid Computing ........................................ 437
A.5 P2P Tools and Software ................................ 438
A.6 Distributed Object Systems ............................ 440
A.7 Underlying Transport and Discovery Protocols .......... 440
В RSA Algorithm .............................................. 441
References .................................................... 443
Index ......................................................... 455
|