1 Foundation 2
Problem:Building a Network 2
1.1 Applications 4
1.2 Requirements 6
1.2.1 Connectivity 7
1.2.2 Cost-Effective Resource Sharing 11
1.2.3 Support for Common Services 14
1.3 Network Architecture 19
1.3.1 Layering and Protocols 20
1.3.2 OSI Architecture 26
1.3.3 Internet Architecture 28
1.4 Implementing Network Software 30
1.4.1 Application Programming Interface(Sockets) 31
1.4.2 Example Application 33
1.4.3 Protocol Implementation Issues 37
1.5 Performance 40
1.5.1 Bandwidth and Latency 40
1.5.2 Delay×Bandwidth Product 44
1.5.3 High-Speed Networks 46
1.5.4 Application Performanca Needs 48
1.6 Summary 50
Open Issue:Ubiquitous Networking 51
Further Reading 52
Exercises 55
2 Direct Link Networks 64
Problem:Physically Connecting Hosts 64
2.1 Hardware Building Blocks 66
2.1.1 Nodes 66
2.1.2 Links 71
2.2 Encoding(NRZ,NRZI,Manchester,4B/5B) 79
2.3 Framing 84
2.3.1 Byte-Oriented Protocols(PPP) 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 93
2.4.2 Internet Checksum Algorithm 94
2.4.3 Cyclic Redundancy Check 96
2.5 Reliable Transmission 101
2.5.1 Stop-and-Wait 102
2.5.2 Sliding Window 105
2.5.3 Concurrent Logical Channels 115
2.6 Ethernet(802.3) 116
2.6.1 Physical Properties 116
2.6.2 Access Protocol 119
2.6.3 Experience with Ethernet 123
2.7 Rings(802.5,FDDI,RPR) 124
2.7.1 Token Ring Media Access Control 127
2.7.2 Token Ring Maintenance 129
2.7.3 FDDI 130
2.7.4 Resilient Packet Ring(802.17) 131
2.8 Wireless 133
2.8.1 Bluetooth(802.15.1) 136
2.8.2 Wi-Fi(802.11) 137
2.8.3 WiMAX(802.16) 143
2.8.4 Cell Phone Technologies 145
2.9 Summary 147
Open Issue:Sensor Networks 148
Further Reading 149
Exercises 151
3 Packet Switching 166
Problem:Not All Networks Are Directly Connected 166
3.1 Switching and Forwarding 168
3.1.1 Datagrams 170
3.1.2 Virtual Circuit Switching 172
3.1.3 Source Routing 179
3.2 Bridges and LAN Switches 183
3.2.1 Learning Bridges 184
3.2.2 Spanning Tree Algorithm 187
3.2.3 Broadcast and Multicast 192
3.2.4 Limitations of Bridges 193
3.3 Cell Switching(ATM) 195
3.3.1 Cells 195
3.3.2 Segmentation and Reassembly 200
3.3.3 Virtual Paths 205
3.3.4 Physical Layers for ATM 206
3.4 Implementation and Performance 208
3.4.1 Ports 210
3.4.2 Febrics 214
3.5 Summary 218
Open Issue:The Future of Switching 219
Further Reading 219
Exercises 221
4 Internetworking 232
Problem:There Is More Than One Network 232
4.1 Simple Internetworking(IP) 234
4.1.1 What Is an Internetwork? 234
4.1.2 Service Model 236
4.1.3 Global Addresses 248
4.1.4 Datagram Forwarding in IP 250
4.1.5 Address Translation(ARP) 254
4.1.6 Host Configuration(DHCP) 259
4.1.7 Error Reporting(ICMP) 262
4.1.8 Virtual Networks and Tunnels 262
4.2 Routing 266
4.2.1 Network as a Graph 268
4.2.2 Distance Vector(RIP) 269
4.2.3 Link State(OSPF) 277
4.2.4 Metrics 286
4.2.5 Routing for Mobile Hosts 289
4.2.6 Router Implementation 294
4.3 Global Internet 297
4.3.1 Subnetting 299
4.3.2 Classless Routing(CIDR) 303
4.3.3 Interdomain Routing(BGP) 306
4.3.4 Routing Areas 316
4.3.5 IP Version 6(IPv6) 318
4.4 Multicast 329
4.4.1 Multicast Addresses 331
4.4.2 Multicast Routing(DVMRP,PIM,MSDP) 332
4.5 Multiprotocol Label Switching 343
4.5.1 Destination-Based Forwarding 344
4.5.2 Explicit Routing 350
4.5.3 Virtual Private Networks and Tunnels 352
4.6 Summary 356
Open Issue:Deployment of IPv6 358
Further Reading 359
Exercises 360
5 End-to-End Protocols 380
Problem:Getting Processes to Communicate 380
5.1 Simple Demultiplexer(UDP) 382
5.2 Reliable Byte Stream(TCP) 384
5.2.1 End-to-End Issuaa 385
5.2.2 Segment Format 387
5.2.3 Connection Establishment and Termination 390
5.2.4 Sliding Window Revisited 394
5.2.5 Triggering Transmission 400
5.2.6 Adaptive Retransmission 403
5.2.7 Record Boundaries 407
5.2.8 TCP Extensions 408
5.2.9 Alternative Design Choices 410
5.3 Remote Procedure Call 411
5.3.1 RPC Fundamentals 412
5.3.2 RPC Implementations(SunRPC,DCE) 419
5.4 Transport for Real-Time Applications(RTP) 426
5.4.1 Requirements 428
5.4.2 RTP Details 429
5.4.3 Control Protocol 433
5.5 Performance 437
5.6 Summary 440
Open Issue:Application-Specific Protocols 441
Further Reading 442
Exercises 443
6 Congestion Control and Resource AllocationProblem:Allocating Resources 456
6.1 Issues in Resource Allocation 458
6.1.1 Network Model 458
6.1.2 Taxonomy 462
6.1.3 Evaluation Criteria 464
6.2 Queuing Disciplines 467
6.2.1 FIFO 468
6.2.2 Fair Oueuing 469
6.3 TCP Congestion Control 474
6.3.1 Additive Increase/Multiplicative Decrease 474
6.3.2 Slow Start 477
6.3.3 Fast Retransmit and Fast Recovery 483
6.4 Congestion-Avoidance Mechanisms 486
6.4.1 DECbit 486
6.4.2 Random Early Detection(RED) 487
6.4.3 Source-Based Congestion Avoidance 493
6.5 Quality of Service 499
6.5.1 Application Requirements 500
6.5.2 Integrated Services(RSVP) 506
6.5.3 Differentiated Services (EF,AF) 516
6.5.4 Equation-Based Congestion Control 522
6.6 Summary 524
Open Issue:Inside versus Outside the Network 525
Further Reading 526
Exercises 527
7 End-to-End Data 542
Problem:What Do We Do with the Data? 542
7.1 Presentation Formatting 544
7.1.1 Taxonomy 545
7.1.2 Examples(XDR,ASN.1,NDR) 549
7.1.3 Markup Languages(XML) 553
7.2 Data Compression 557
7.2.1 Lossless Compression Algorithms 559
7.2.2 Image Compression(JPEG) 561
7.2.3 Video Compression(MPEG) 566
7.2.4 Transmitting MPEG over a Network 571
7.2.5 Audio Compression(MP3) 575
7.3 Summary 576
Open Issue:Computer Networks Meet Consumer Electronics 577
Further Reading 578
Exercises 579
8 Network Security 586
Problem:Security Attacks 586
8.1 Cryptographic Tools 589
8.1.1 Principles of Ciphers 589
8.1.2 Symmetric-Key Ciphers 591
8.1.3 Public-Key Ciphers 593
8.1.4 Authenticators 595
8.2 Key Predistribution 599
8.2.1 Predistribution of Public Keys 599
8.2.2 Predistribution of Symmetric Keys 604
8.3 Authentication Protocols 604
8.3.1 Originality and Timeliness Techniques 605
8.3.2 Public-Key Authentication Protocols 606
8.3.3 Symmetric-Key Authentication Protocols 607
8.3.4 Diffie-Hellman Key Agreement 611
8.4 Secure Systems 613
8.4.1 Pretty Good Privacy(PGP) 613
8.4.2 Secure Shell(SSH) 615
8.4.3 Transport Layer Security(TLS,SSL,HTTPS) 618
8.4.4 IP Security (IPsec) 622
8.4.5 Wireless Security(802.11i) 625
8.5 Firewalls 626
8.5.1 Strengths and Weaknesses of Firewalls 629
8.6 Summary 631
Open Issue:Denial-of-Service Attacks 632
Further Reading 633
Exercises 634
9 Applications 640
Problem:Applications Need Their Own Protocols 640
9.1 Traditional Applications 642
9.1.1 Electronic Mail(SMTP,MIME,IMAP) 643
9.1.2 World Wide Web(HTTP) 650
9.1.3 Name Service(DNS) 657
9.1.4 Network Management(SNMP) 666
9.2 Web Services 668
9.2.1 Custom Application Protocols(WSDL,SOAP) 670
9.2.2 A Generic Application Protocol(REST) 676
9.3 Multimedia Applications 678
9.3.1 Session Control and Call Control(SDP,SIP,H.323) 679
9.3.2 Resource Allocation for Multimedia Applications 688
9.4 Overlay Networks 693
9.4.1 Routing Overlays 695
9.4.2 Peer-to-Peer Networks(Gnutella,BitTorrent) 702
9.4.3 Content Distribution Networks 714
9.5 Summary 719
Open Issue:New Network Architecture 720
Further Reading 721
Exercises 722
Solutions to Select Exercises 729
Glossary 743
Bibliography 769
Index 785