The purpose of this book is to provide tools to design and implement network-orientated applications in .NET. It is also a guide for software designers to choose the best and most efficient way to implement mission critical solutions. The book addresses real-world issues facing professional developers, such as using third-party components as opposed in-house development. It differentiates itself from existing .NET publications because it is aimed at experienced professionals and concentrates on practical, ready-to-use information. The book is written in two languages C# and VB.NET, and covers never-before published information on Telephony in .NET and packet-level networking.This is the second book in the Digital Press Software Development Series.*Coverage of lower level protocols allows implementation of performance-centric applications*Demonstrates the feasibility of developing telephony solutions in-house rather than outsourcing*Written in VB.NET and C# to assist readers working in either language*Coverage of Email, FTP and the WWW allows implementation of applications in all three areas
Author(s): Fiach Reid
Publisher: Digital Press
Year: 2004
Language: English
Pages: 532
Team DDU......Page 1
Contents......Page 8
Who should read this book?......Page 16
Part II: Network application design......Page 17
Conventions used in this book......Page 18
Further information......Page 19
Acknowledgments......Page 20
1.1 Introduction......Page 22
1.3 What can a network program do?......Page 23
1.4 IP addresses......Page 24
1.5 The network stack......Page 27
1.7 Internet standards......Page 28
1.8 What is .NET?......Page 30
1.9 Getting started......Page 32
1.10 Using Visual Studio .NET......Page 33
1.11 Using the .NET SDK......Page 37
1.11.1 Compiling with Visual Basic.NET......Page 40
1.12 Conclusion......Page 41
2.2 Streams......Page 42
2.2.1 Streams for files......Page 43
2.2.2 Encoding data......Page 49
2.2.3 Binary and text streams......Page 50
2.2.4 Serialization......Page 54
2.2.5 Writing a database to a stream......Page 65
2.3 Conclusion......Page 75
3.2 What is a socket?......Page 76
3.3 Creating a simple "hello world" application......Page 77
3.3.1 Writing a simple UDP client......Page 78
3.3.2 Writing a simple UDP server......Page 79
3.4.1 Writing a simple TCP/IP client......Page 83
3.4.2 Writing a simple TCP/IP server......Page 86
3.5 Debugging network code......Page 94
3.6 Socket-level networking in .NET......Page 96
3.7 Conclusion......Page 107
4.1 Introduction......Page 108
4.2.1 The HTTP request......Page 109
4.2.2 The HTTP response......Page 112
4.2.4 System.Web......Page 114
4.2.5 Posting data......Page 118
4.2.6 A note on cookies......Page 125
4.2.7 A WYSIWYG editor......Page 126
4.3 Web servers......Page 134
4.3.1 Implementing a Web server......Page 135
4.4 System.Net.HttpWebListener......Page 145
4.5 Mobile Web browsers......Page 149
4.6 Conclusion......Page 151
5.2 Sending an email......Page 152
5.3 SMTP......Page 153
5.3.1 Implementing SMTP......Page 154
5.4 Post office protocol 3......Page 161
5.4.1 Implementing POP3......Page 162
5.5 System.Web.Mail......Page 169
5.5.1 Attachments......Page 172
5.6 Mail application programming interface......Page 174
5.6.1 Accessing the address book......Page 177
5.6.2 IMAP......Page 179
5.6.3 Network news transfer protocol......Page 180
5.7 Conclusion......Page 182
6.2 Microsoft file sharing......Page 184
6.3 Netware file sharing......Page 185
6.4 An overview of FTP......Page 186
6.4.1 How FTP uses ports......Page 188
6.4.2 The FTP handshake......Page 189
6.4.3 Navigating folders......Page 191
6.4.4 FTP command reference......Page 192
6.4.5 Implementing FTP......Page 193
6.4.6 Implementing FTP with the Internet Transfer Control......Page 195
6.4.7 A more substantial implementation of FTP......Page 199
6.4.8 FTP support in .NET 2.0......Page 214
6.5 Conclusion......Page 215
7.1.1 Building a network from scratch......Page 216
7.2.1 Routers......Page 220
7.2.2 Firewalls......Page 221
7.3 Tunneling out of an enterprise network......Page 224
7.4 Avoiding the networking pitfalls......Page 226
7.4.1 Firewall tunneling......Page 227
7.5 Conclusion......Page 228
8.2 Cryptanalysis......Page 230
8.4 Asymmetric encryption......Page 233
8.5 Using RSA as asymmetric encryption......Page 234
8.6.1 Using 3DES as symmetric encryption......Page 239
8.7 Piracy protection......Page 245
8.8 Conclusion......Page 246
9.2 Authentication techniques......Page 248
9.2.1 IIS authentication......Page 249
9.3 Microsoft .NET Passport authentication......Page 251
9.4 Hashing information......Page 253
9.4.2 Using SHA......Page 255
9.6 Certificates......Page 257
9.7 Server certificates......Page 259
9.8 Client certificates......Page 260
9.8.1 Microsoft Certificate Services......Page 261
9.8.2 Reading certificates......Page 262
9.9 Permissions in .NET......Page 265
9.10 Financial network security......Page 267
9.10.2 ISO 8730......Page 268
9.10.4 Corporate transactions......Page 269
9.11 Conclusion......Page 270
10.2 Case study: The Google search engine......Page 272
10.3 Replication and redundancy......Page 274
10.4 Scalable network applications......Page 275
10.5 Future proofing......Page 276
10.6 Thread pooling......Page 277
10.6.1 Implementing a thread pool......Page 279
10.7 Avoiding deadlocks......Page 282
10.8 Load balancing......Page 283
10.9 Conclusion......Page 293
11.2 Tricks and tips to increase performance......Page 296
11.2.1 Caching......Page 297
11.2.2 Keep-alive connections......Page 298
11.2.4 Tweaking settings......Page 299
11.3.1 Multicast basics......Page 303
11.3.2 Multicast routing......Page 304
11.3.3 Implementing multicast......Page 305
11.4 Data compression......Page 310
11.5 Lossless compression......Page 311
11.5.1 Implementing ZIP compression......Page 312
11.6.1 Audio compression......Page 317
11.6.2 Image compression......Page 319
11.6.3 Video compression......Page 323
11.7 Conclusion......Page 324
12.2 DNS......Page 326
12.2.1 Implementing DNS MX......Page 327
12.3 Ping......Page 335
12.4 WHOIS......Page 342
12.4.1 Telnet......Page 347
12.5.2 RIP......Page 348
12.5.6 PPP......Page 349
12.6 WMI......Page 350
12.6.1 Reading WMI data......Page 351
12.6.2 Leveraging WMI......Page 354
12.7 Conclusion......Page 357
13.1 Introduction......Page 358
13.2 IP-level network tapping......Page 360
13.2.1 Interpreting raw network data......Page 365
13.2.2 IP packets in detail......Page 367
13.2.3 ICMP packets in detail......Page 369
13.2.4 TCP/IP packets in detail......Page 370
13.2.5 UDP packets in detail......Page 372
13.2.6 DNS packets in detail......Page 373
13.3.1 Using rvPacket and WinPCap......Page 375
13.3.2 Using PacketX and WinPCap......Page 381
13.4 Physical network tapping......Page 387
13.5 Conclusion......Page 397
14.1 Introduction......Page 400
14.2 Basic telephony......Page 401
14.3 Listening for incoming phone calls......Page 403
14.4 DTMF tones......Page 420
14.5 Audio playback......Page 422
14.5.1 Audio playback over TAPI......Page 434
14.6 Conclusion......Page 438
15.1 Introduction......Page 440
15.3 Implementing a message queue......Page 441
15.3.1 Queuing complex objects......Page 448
15.3.2 Transactions......Page 456
15.3.3 Acknowledgments......Page 458
15.4 Timeouts......Page 460
15.5 Journal......Page 462
15.6 Queued Components......Page 464
15.7 Security......Page 468
15.8 Scalability......Page 470
15.9 Performance issues......Page 472
15.10 Conclusion......Page 473
16.2 What is IPv6?......Page 474
16.3 The history of IPv6......Page 475
16.4 So what changes?......Page 476
16.5 IPv6 naming conventions......Page 477
16.6.1 Auto configuration......Page 478
16.7.1 IPv6......Page 479
16.7.3 Ping6......Page 480
16.7.4 Tracert6......Page 481
16.7.5 IPSec6......Page 482
16.7.6 Windows 2000 specific......Page 484
16.8 IPv6 routing......Page 485
16.8.1 Route determination process......Page 486
16.8.2 Administering the IPv6 routing table......Page 487
16.8.3 IPv6 routing advertisements......Page 489
16.9.1 The 6to4 protocol......Page 490
16.9.2 The ISATAP protocol......Page 492
16.10 IPv6 in .NET......Page 494
16.11 Conclusion......Page 500
17.2 Creating a Web service......Page 502
17.2.1 Deploying a Web service......Page 506
17.3 Using a Web service......Page 507
17.4 Asynchronous calls to Web services......Page 510
17.4.1 Wait handles......Page 511
17.4.2 Callbacks......Page 512
17.5 Interoperability......Page 514
17.6 Performance......Page 515
17.7 Security......Page 516
17.8 Web services enhancements......Page 518
17.8.1 Web service extensions: Attachments......Page 519
17.9 .NET remoting......Page 521
17.9.1 How remoting works......Page 522
17.9.2 Implementing remoting......Page 523
17.9.3 Asynchronous use of remote objects......Page 527
17.9.4 Deployment of a remoting service......Page 529
17.9.5 Configuration......Page 530
17.9.6 Hosting remote objects within IIS......Page 531
17.9.7 Hosting remote objects within a Windows service......Page 532
17.9.8 Distributed garbage collection......Page 536
17.10 Conclusion......Page 539
Index......Page 540