1 Foundation 2
Problem:Building a Network 2
1.1 Requlrements 4
1.1.1 Connectivity 4
1.1.2 Cost-Effective Resource Sharing 8
1.1.3 Support for Common Services 12
1.1.4 Performance 20
1.2 Network Architscture 29
1.2.1 Layering and Protocols 30
1.2.2 OSI Architecture 36
1.2.3 Internet Architecture 38
1.3 Implementing Network Software 41
1.3.1 Application Programming Interface(Sockets) 42
1.3.2 Example Application 45
1.3.3 Protocol Implementation Issues 48
1.4 Summary 56
Open Issue:Ubiquitous Networking 57
Further Reading 58
Exercises 60
2 Direct Link Networks 68
Problem:Physically Connecting Hosts 68
2.1 Hardware Bullding Blocks 70
2.1.1 Nodes 70
2.1.2 Links 71
2.2 Encoding(NRZ,NRZI,Manchestor,4B/5B) 80
2.3 Framing 84
2.3.1 Byte-Oriented Protocols(BISYNC,PPP,DDCMP) 84
2.3.2 Bit-Oriented Protocols(HDLC) 87
2.3.3 Clock-Based Framing(SONET) 89
2.4 Error Detection 92
2.4.1 Two-Dimensional Parity 94
2.4.2 Internet Checksum Algorlthm 94
2.4.3 Cyclic Redundancy Check 96
2.5 Reliable Transmission 101
2.5.1 Stop-and-Wait 103
2.5.2 Sliding Window 105
2.5.3 Concurrent Logical Channels 115
2.6 Ethernet(802.3) 116
2.6.1 Physical Properties 117
2.6.2 Access Protocol 119
2.6.3 Experience with Ethernet 124
2.7 Token Rigns(802.5.FDDI) 125
2.7.1 Physical Properties 126
2.7.2 Token Ring Media Access Control 127
2.7.3 Token Ring Maintenance 129
2.7.4 Frame Format 131
2.7.5 FDDI 132
2.8 Wireless(802.11) 136
2.8.1 Physical Properties 136
2.8.2 Collision Avoidance 137
2.8.3 Distribution System 139
2.8.4 Frame Format 141
2.9 Network Adaptors 142
2.9.1 Components 142
2.9.2 View from the Host 143
2.9.3 Device Drivers 148
2.9.4 Memory Bottleneck 151
2.10 Summary 153
Open Issue:Does It Belong in Hardware? 154
Further Reading 155
Exercises 156
3 Packet Switching 170
Problem:Not All Networks Are Directly Connectad 170
3.1 Switching and Forwarding 172
3.1.1 Datagrams 174
3.1.2 Virtual Circuit Switching 176
3.1.3 Source Routing 183
3.1.4 Impiementation and Performance 185
3.2 Bridges and LAN Switches 186
3.2.1 Learning Bridges 187
3.2.2 Spanning Tree Algorithm 190
3.2.3 Broadcast and Multicast 195
3.2.4 Limitations of Bridges 196
3.3 Cell Switching(ATM) 198
3.3.1 Cells 198
3.3.2 Segmentation and Reassembly 203
3.3.3 Virtual Paths 209
3.3.4 Physical Layers for ATM 210
3.3.5 ATM in the LAN 211
3.4 Switching Hardware 215
3.4.1 Design Goals 216
3.4.2 Ports and Fabrics 219
3.4.3 Crossbar Switches 221
3.4.4 Shared-Media Switches 226
3.4.5 Self-Routing Fabrics 227
3.5 Summary 232
Open Issue:The Future of ATM 233
Further Reading 234
Exercises 235
4 Internetworking 246
Problem:There Is More Than One Network 246
4.1 Simple Internetworking(IP) 248
4.1.1 What Is an Internetwork? 248
4.1.2 Service Model 250
4.1.3 Global Addresses 262
4.1.4 Datagram Forwarding in IP 264
4.1.5 Address Translation(ARP) 268
4.1.6 Host Configuration(DHCP) 273
4.1.7 Error Reporting(ICMP) 276
4.1.8 Virtual Networks and Tunnels 277
4.2 Routing 280
4.2.1 Network as a Graph 282
4.2.2 Distance Vector(RIP) 284
4.2.3 Link State(OSPF) 292
4.2.4 Metrics 301
4.2.5 Routing for Mobile Hosts 304
4.3 Global Internet 309
4.3.1 Subnetting 311
4.3.2 Classless Routing(CIDR) 316
4.3.3 Interdomain Routing(BGP) 319
4.3.4 Routing Aress 326
4.3.5 IP version 6(IPv6) 328
4.4 Multicast 340
4.4.1 Link-State Multicast 341
4.4.2 Dlatance-Vector Multicast 344
4.4.3 Protocol Independent Multicast(PIM) 348
4.5 Summary 350
Open Issue:IP,ATM,and MPLS 351
Further Reading 352
Exercises 354
5 End-to-End Protocols 368
Problem:Getting Processes to Communicate 368
5.1 Simple Demultiplexer(UDP) 370
5.2 Reliable Byte Stream(TCP) 371
5.2.1 End-to-End Issues 373
5.2.2 Segment Format 375
5.2.3 Connection Establishment and Termination 378
5.2.4 Sliding Window Revisited 383
5.2.5 Adaptive Retransmission 389
5.2.6 Record Boundaries 393
5.2.7 TCP Extensions 394
5.2.8 Alternative Design Choices 395
5.3 Remote Procedure Call 397
5.3.1 Bulk Transfer(BLAST) 400
5.3.2 Request/Reply(CHAN) 407
5.3.3 Dispatcher(SELECT) 417
5.3.4 Putting It All Together(SunRPC,DCE) 420
5.4 Performance 426
5.4.1 Experimental Method 427
5.4.2 Latency 428
5.4.3 Throughput 430
5.5 Summary 430
Open Issue:Application-Specific Protocois 431
Further Reading 432
Exerceses 433
Problem:Allocating Resources 445
6 Congestion Control and Resource Allocation 445
6.1 Issues In Resource Allocation 448
6.1.1 Network Model 448
6.1.2 Taxonomy 452
6.1.3 Evaluation Criteris 454
6.2 Queuing Disciplines 457
6.2.1 FIFO 458
6.2.2 Fair Queuing 459
6.3 TCP Congestion Control 464
6.3.1 Additive Increase/Multiplicative Decrease 465
6.3.2 Slow Start 468
6.3.3 Fast Retransmit and Fast Recovery 472
6.4.1 DECbit 475
6.4 Congestion-Avoidance Mechanisms 475
6.4.2 Random Early Detection(RED) 476
6.4.3 Source-Based Congestion Avoldance 482
6.5 Quality of Service 488
6.5.1 Application Requirements 489
6.5.2 Integrated Services(RSVP) 494
6.5.3 Differentiated Services 505
6.5.4 ATM Quality of Service 509
6.6 Summary 513
Open Issue:Inside versus Outslde the Network 513
Further Reading 514
Exercises 516
7 End-to-End Data 528
Problem:What Do We Do with the Data? 528
7.1 Presentation Formatting 530
7.1.1 Taxonomy 531
7.1.2 Examples(XDR,ASN.1,NDR) 535
7.2 Data Compression 539
7.2.1 Lossless Compression Algorithms 541
7.2.2 Image Compression(JPEG) 543
7.2.3 Video Compression(MPEG) 548
7.2.4 Transmitting MPEG over a Network 553
7.2.5 Audio Compression(MP3) 557
7.3 Summary 559
Open Issue:Computer Networks Meet Conaumer Electronics 559
Further Reading 560
Exercises 561
Problem:Securing the Data 568
8 Network Security 568
8.1 Cryptographic Algorithma 570
8.1.1 Requirements 572
8.1.2 The Data Encryption Standard(DES) 573
8.1.3 RSA 578
8.1.4 Message Digest 5(MD5) 581
8.1.5 Implementation and Performance 584
8.2 Security Mechanisms 584
8.2.1 Authentication Protocols 585
8.2.2 Message Integrity Protocols 588
8.2.3 Public Key Distribution(X.509) 591
8.3 Example Systems 594
8.3.1 Privacy Enhanced Mail(PEM) 594
8.3.2 Pretty Good Privacy(PGP) 599
8.3.3 Transport Layer Security(TLS,SSL,HTTPS) 601
8.3.4 IP Security(IPSEC) 605
8.4 Firewalls 608
8.4.1 Filter-Based Firewalls 609
8.4.2 Proxy-Based Firewalls 610
8.4.3 Limitations 612
8.5 Summary 613
Open Issue:Denial-of-Service Attacks 614
Further Reading 615
Exercises 615
9 Applications 622
Problem:Applications Need Their Own Protocols 622
9.1 Name Service(DNS) 624
9.1.1 Domain Hierarchy 625
9.1.2 Name Servers 626
9.1.3 Name Resolution 630
9.2 Traditional Applications 633
9.2.1 Electronic Mall(SMTP,MIME) 634
9.2.2 World Wide Web(HTTP) 640
9.2.3 Network Management(SNMP) 646
9.3 Multimedia Applications 649
9.3.1 Requirements 651
9.3.2 Real-time Transport Protocol(RTP) 653
9.3.3 Session Control and Call Control(H.323) 660
9.4 Summary 662
Open Issue:Programming the Network 663
Further Reading 664
Exercises 665
Glossary 673
References 699
Index 717