CONTENTS
Foreword
Foreword to the First Edition
Preface
1 Foundation
Problem: Building a Network
1. 1 Requirements
1. 1. 1 Connectivity
1.1.2 Cost-Effective Resource Sharing
1.1.3 Support for Common Services
1.1.4 Performance
1.2 Network Architecture
1.2.1 Layering and Protocols
1.2.2 OSI Architecture
1.2.3 Internet Architecture
1.3 Implementing Network Software
1.3.1 Application Programming Interface (Sockets)
1.3.2 Example Application
1.3.3 Protocol Implementation Issues
1.4 Summary Open Issue: Ubiquitous Networking Further Reading Exercises
2 Direct Link Networks
Problem: Physically Connecting Hosts
2.1 Hardware Building Blocks
2. 1.1 Nodes
2.1.2 Links
2.2 Encoding (NRZ, NRZI, Manchester, 4B/5B)
2.3 Framing
2.3.1 Byte-Oriented Protocols (BISYNC, PPP, DDCMP)
2.3.2 Bit-Oriented Protocols (HDLC)
2.3.3 Clock-Based Framing (SONET)
2.4 Error Detection
2.4.1 Two-Dimensional Parity
2.4.2 Internet Checksum Algorithm
2.4.3 Cyclic Redundancy Check
2.5 Reliable Transmission
2.5.1 Stop-and-Wait
2.5.2 Sliding Window
2.5.3 Concurrent Logical Channels
2.6 Ethernet (802.3)
2.6.1 Physical Properties
2.6.2 Access Protocol
2.6.3 Experience with Ethernet
2.7 Token Rings (802.5, FDDI)
2.7.1 Physical Properties
2.7.2 Token Ring Media Access Control
2.7.3 Token Ring Maintenance
2.7.4 Frame Format
2.7.5 FDDI
2.8 Wireless (802.11)
2.8.1 Physical Properties
2.8.2 Collision Avoidance
2.8.3 Distribution Syste
2.8.4 Frame Format
2.9 Network Adaptors
2.9.1 Components
2.9.2 View from the Host
2.9.3 Device Drivers
2.9.4 Memory Bottleneck
2.10 Summary Open Issue: Does It Belong in Hardware? Further Reading Exercises
3 Packet Switching
Problem: Not All Networks Are Directly Connected
3.1 Switching and Forwarding
3.1.1 Datagrams
3.1.2 Virtual Circuit Switching
3.1.3 Source Routing
3.1.4 Implementation and Performance
3.2 Bridges and LAN Switches
3.2.1 Learning Bridges
3.2.2 Spanning Tres Algorithm
3.2.3 Broadcast and Multicast
3.2.4 Limitations of Bridges
3.3 Cell Switching (ATM)
3.3.1 Celia
3.3.2 Segmontation and Reassembly
3.3.3 Virtual Paths
3.3.4 Physical Layers for ATM
3.3.5 ATM in the LAN
3.4 Switching Hardware
3.4.1 Design Goals
3.4.2 Ports and Fabrics
3.4.3 Crossbar Switches
3.4.4 Shared-Media Switches
3.4.5 Self-Routing Fabrics
3.5 Summary Open Issue: The Future of ATM Further Reading Exercises
4 Internetworking
Problem: There Is More Than One Network
4.1 Simple Internetworking (IP)
4.1.1 What Is an Internetwork?
4.1.2 Service Model
4.1.3 Global Addresses
4.1.4 Datagram Forwarding in IP
4.1.5 Address Translation (ARP)
4.1.6 Host Configuration (DHCP)
4.1.7 Error Reporting (ICMP)
4.1 .8 Virtual Networks and Tunnels
4.2 Routing
4.2.1 Network as a Graph
4.2.2 Distance Vector (RIP)
4.2.3 Link State (OSPF)
4.2.4 Metrics
4.2.5 Routing for Mobile Hosts
4.3 Global Internet
4.3.1 Subnetting
4.3.2 Classless Routing (CIDR)
4.3.3 Interdomain Routing (BGP)
4.3.4 Routing Areas
4.3.5 IP version 6 (IPv6)
4.4Multicast
4.4.1 Link-State Multicast
4.4.2 Distance-Vector Multicast
4.4.3 Protocol Independent Multicast (PIM)
4.5 Summary Open Issue: IP, ATM, and MPLS Further Reading Exercises
5 End-to-End Protocols
Problem: Getting Processes to Communicate
5.1Simple Demultiplexer (UDP)
5.2Reliable Byte Stream (TCP)
5.2.1 End-to-End Issues
5.2.2 Segment Format
5.2.3 Connection Establishment and Termination
5.2.4 Sliding Window Revisited
5.2.5 Adaptive Retransmission
5.2.6 Record Boundaries
5.2.7 TCP Extensions
5.2.8 Alternative Design Choice*
5.3Remote Procedure Call
5.3.1 Bulk Transfer (BLAST)
5.3.2 Request/Reply (CHAN)
5.3.3 Dispatcher (SELECT)
5.3.4 Putting It All Together (SunRPC, DCE)
5.4 Performance
5.4.1 Experimental Method
5.4.2 Latency
5.4.3 Throughput
5.5 Summary Open Issue: Application-Specific Protocols Further Reading Exercises
5 Congestion Control and Resource Allocation
Problem: Allocating Resources
6. 1 Issues in Resource Allocation
6.1.1 Network Model
6.1.2 Taxonomy
6.1.3 Evaluation Criteria
6.2 Queuing Disciplines
6.2.1 FIFO
6.2.2 Fair Queuing
6.3 TCP Congestion Control
6.3.1 Additive Increase/Multiplicative Decrease
6.3.2 Slow Start
6.3.3 Fast Retransmit and Fast Recovery
6.4 Congestion-Avoidance Mechanisms
6.4.1 DECbit
6.4.2 Random Early Detection (RED)
6.4.3 Source-Based Congestion Avoidance
6.5 Quality of Service
6.5.1 Application Requirements
6.5.2 Integrated Services (RSVP)
6.5.3 Differentiated Services
6.5.4 ATM Quality of Service
6.6 Summary Open Issue: Inside versus Outside the Network
Further Reading
Exercises
7 End-to-End Data Problem: What Do We Do with the Data?
7.1Presentation Formatting
7. 1.1 Taxonomy
7.1.2 Examples (XDR, ASN.1, NDR)
7.2Data Compression
7.2.1 Lossless Compression Algorithms
7.2.2 Image Compression (JPEG)
7.2.3 Video Compression (MPEG)
7.2.4 Transmitting MPEG over a Network
7.2.5 Audio Compression (MP3)
7.3 Summary Open Issue: Computer Networks Meet Consumer Electronics Further Reading Exercises
8 Network Security
Problem: Securing the Data
8.1Cryptographic Algorithms
8. 1.1 Requirements
8.1.2 The Data Encryption Standard (DES)
8.1.3 RSA
8.1.4 Message Digest 5 (MD5)
8.1.5 Implementation and Performance
8.2Security Mechanisms
8.2.1 Authentication Protocols
8.2.2 Message Integrity Protocols
8.2.3 Public Key Distribution (X.509)
8.3Example Systems
8.3.1 Privacy Enhanced Mail (PEM)
8.3.2 Pretty Good Privacy (PGP)
8.3.3 Transport Layer Security (TLS, SSL, HTTPS)
8.3.4 IP Security (IPSEC)
8.4Firewalls
8.4.1 Filter-Based Firewalls
8.4.2 Proxy-Based Firewalls
8.4.3 Limitations
8.5 Summary Open Issue: Denial-of-Service Attacks Further Reading Exercises
9 Applications
Problem: Applications Need Their Own Protocols
9.1Name Service (DNS)
9.1.1 Domain Hierarchy
9.1.2 Name Servers
9.1.3 Name Resolution
9.2Traditional Applications
9.2.1 Electronic Mail (SMTP, MIME)
9.2.2 World Wide Web (HTTP)
9.2.3 Network Management (SNMP)
9.3Multimedia Applications
9.3.1 Requirements
9.3.2 Real-time Transport Protocol (RTP)
9.3.3 Session Control and Call Control (H.323)
9.4 Summary Open Issue: Programming the Network Further Reading Exercises
Glossary
References
Index