Chapter 1 Introduction And Overview 1
1.1 The Motivation For Internetworking 1
1.2 The TCP/IP Internet 2
1.3 Internet Services 2
1.4 History And Scope Of The Internet 5
1.5 The Internet Architecture Board 7
1.6 The IAB Reorganization 7
1.7 Internet Request For Comments 8
1.8 Future Growth And Technology 9
1.9 Organization Of The Text 10
1.10 Summary 10
Chapter 2 Review Of Underlying Network Technologies 13
2.1 Introduction 13
2.2 Two Approaches To Network Communication 14
2.3 Wide Area And Local Area Networks 15
2.4 Ethernet Technology 16
2.5 Switched Ethernet 24
2.6 Asynchronous Transfer Mode 25
2.7 Summary 27
Chapter 3 Internetworking Concept And Architectural Model 31
3.1 Introduction 31
3.2 Application-Level Interconnection 31
3.3 Network-Level Interconnection 32
3.4 Properties Of The Intrenet 33
3.5 Internet Architecture 34
3.6 Interconnection Through IP Routers 35
3.7 The User's View 36
3.8 All Networks Are Equal 37
3.9 The Unanswered Questions 38
3.10 Summary 38
Chapter 4 Classful Internet Addresses 41
4.1 Introduction 41
4.2 Universal Identifiers 41
4.3 The Original Classful Addressing Scheme 42
4.4 Addresses Specify Network Connections 43
4.5 Network And Directed Broadcast Addresses 43
4.6 Limited Broadcast 44
4.7 The All-Os Address 45
4.8 Subnet And Classless Extensions 45
4.9 IP Multicast Addresses 45
4.10 Weaknesses In Internet Addressing 46
4.11 Dotted Decimal Notation 47
4.12 Loopback Address 48
4.13 Summary Of Special Address Conventions 48
4.14 Internet Addressing Authority 48
4.15 Reserved Address Prefixes 50
4.16 An Example 50
4.17 Network Byte Order 52
4.18 Summary 52
Chapter 5 Mapping Internet Addresses To Physical Addresses (ARP) 57
5.1 Introduction 57
5.2 The Address Resolution Problem 57
5.3 Two Types Of Physical Addresses 58
5.4 Resolution Through Direct Mapping 58
5.5 Resolution Through Dynamic Binding 59
5.6 The Address Resolution Cache 60
5.7 ARP Cache Timeout 61
5.8 ARP Refinements 62
5.9 Relationship Of ARP To Other Protocols 62
5.10 ARP Implementation 62
5.11 ARP Encapsulation And Identification 64
5.12 ARP Protocol Format 64
5.13 Automatic ARP Cache Revalidation 66
5.14 Reverse Address Resolution (RARP) 66
5.15 Summary 67
Chapter 6 Internet Protocol: Connectionless Datagram Delivery (IPv4) 71
6.1 Introduction 71
6.2 A Virtual Network 71
6.3 Internet Architecture And Philosophy 72
6.4 The Conceptual Service Organization 72
6.5 Connectionless Delivery System 73
6.6 Purpose Of The Internet Protocol 73
6.7 The IPv4 Datagram 74
6.8 Internet Datagram Options 83
6.9 Summary 89
Chapter 7 Internet Protocol: Forwarding IP Datagrams 93
7.1 Introduction 93
7.2 Forwarding In An Internet 93
7.3 Direct And Indirect Delivery 95
7.4 Table-Driven IP Forwarding 97
7.5 Next-Hop Forwarding 97
7.6 Default Routes 100
7.7 Host-Specific Routes 100
7.8 The IP Forwarding Algorithm 100
7.9 Forwarding With IP Addresses 101
7.10 Handling Incoming Datagrams 103
7.11 Establishing Routing Tables 104
7.12 Summary 104
Chapter 8 Internet Protocol: Error And Control Messages (ICMP) 109
8.1 Introduction 109
8.2 The Internet Control Message Protocol 109
8.3 Error Reporting Vs.Error Correction 110
8.4 ICMP Message Delivery 111
8.5 ICMP Message Format 112
8.6 Testing Destination Reachability And Status (Ping) 113
8.7 Echo Request And Reply Message Format 114
8.8 Reports Of Unreachable Destinations 115
8.9 Congestion And Datagram Flow Control 116
8.10 Source Quench Format 117
8.11 Route Change Requests From Routers 118
8.12 Detecting Circular Or Excessively Long Routes 119
8.13 Reporting Other Problems 120
8.14 Clock Synchronization And Transit Time Estimation 121
8.15 Older ICMP Messages No Longer Needed 122
8.16 Summary 123
Chapter 9 Classless And Subnet Address Extensions (CIDR) 127
9.1 Introduction 127
9.2 Review Of Relevant Facts 127
9.3 Minimizing Network Numbers 128
9.4 Proxy ARP 128
9.5 Subnet Addressing 130
9.6 Flexibility In Subnet Address Assignment 132
9.7 Variable-Length Subnets 134
9.8 Implementation Of Subnets With Masks 135
9.9 Subnet Mask Representation 136
9.10 Forwarding In The Presence Of Subnets 137
9.11 The Subnet Forwarding Algorithm 138
9.12 A Unified Forwarding Algorithm 139
9.13 Maintenance Of Subnet Masks 140
9.14 Broadcasting To Subnets 140
9.15 Anonymous Point-To-Point Networks 141
9.16 Classless Addressing And Supernetting 142
9.17 CIDR Address Blocks And Bit Masks 143
9.18 Address Blocks And CIDR Notation 144
9.19 A Classless Addressing Example 145
9.20 Data Structures And Algorithms For Classless Lookup 145
9.21 Longest-Match And Mixtures Of Route Types 148
9.22 CIDR Blocks Reserved For Private Networks 149
9.23 Summary 150
Chapter 10 Protocol Layering 155
10.1 Introduction 155
10.2 The Need For Multiple Protocols 155
10.3 The Conceptual Layers Of Protocol Software 156
10.4 Functionality Of The Layers 159
10.5 X&25 And Its Relation To The ISO Model 160
10.6 Locus Of Intelligence 163
10.7 The Protocol Layering Principle 163
10.8 Layering In The Presence Of Network Substructure 166
10.9 Two Important Boundaries In The TCP/IP Model 168
10.10 The Disadvantage Of Layering 169
10.11 The Basic Idea Behind Multiplexing And Demultiplexing 170
10.12 Summary 171
Chapter 11 User Datagram Protocol (UDP) 175
11.1 Introduction 175
11.2 Identifying The Ultimate Destination 175
11.3 The User Datagram Protocol 176
11.4 Format Of UDP Messages 177
11.5 UDP Pseudo-Header 178
11.6 UDP Encapsulation And Protocol Layering 179
11.7 Layering And The UDP Checksum Computation 181
11.8 UDP Multiplexing, Demultiplexing, And Ports 181
11.9 Reserved And Available UDP Port Numbers 182
11.10 Summary 184
Chapter 12 Reliable Stream Transport Service (TCP) 187
12.1 Introduction 187
12.2 The Need For Stream Delivery 187
12.3 Properties Of The Reliable Delivery Service 188
12.4 Providing Reliability 189
12.5 The Idea Behind Sliding Windows 191
12.6 The Transmission Control Protocol 193
12.7 Ports, Connections, And Endpoints 194
12.8 Passive And Active Opens 196
12.9 Segments, Streams, And Sequence Numbers 197
12.10 Variable Window Size And Flow Control 198
12.11 TCP Segment Format 199
12.12 Out Of Band Data 200
12.13 TCP Options 201
12.14 TCP Checksum Computation 203
12.15 Acknowledgements, Retransmission, And Timeouts 204
12.16 Accurate Measurement Of Round Trip Samples 207
12.17 Karn's Algorithm And Timer Backoff 208
12.18 Responding To High Variance In Delay 209
12.19 Response To Congestion 211
12.20 Fast Recovery And Other Modifications 213
12.21 Explicit Feedback Mechanisms (SACK and ECN) 215
12.22 Congestion, Tail Drop, And TCP 216
12.23 Random Early Detection (RED) 217
12.24 Establishing A TCP Connection 219
12.25 Initial Sequence Numbers 220
12.26 Closing a TCP Connection 221
12.27 TCP Connection Reset 222
12.28 TCP State Machine 222
12.29 Forcing Data Delivery 224
12.30 Reserved TCP Port Numbers 224
12.31 TCP Performance 225
12.32 Silly Window Syndrome And Small Packets 226
12.33 Avoiding Silly Window Syndrome 227
12.34 Summary 230
Chapter 13 Routing Architecture: Cores, Peers, And Algorithms 235
13.1 Introduction 235
13.2 The Origin Of Routing Tables 236
13.3 Forwarding With Partial Information 237
13.4 Original Internet Architecture And Cores 238
13.5 Beyond The Core Architecture To Peer Backbones 240
13.6 Automatic Route Propagation 241
13.7 Distance Vector (Bellman-Ford) Routing 241
13.8 Reliability And Routing Protocols 243
13.9 Link-State (SPF) Routing 243
13.10 Summary 244
Chapter 14 Routing Between Peers (BGP) 249
14.1 Introduction 249
14.2 Routing Update Protocol Scope 249
14.3 Determining A Practical Limit On Group Size 250
14.4 A Fundamental Idea: Extra Hops 251
14.5 Autonomous System Concept 253
14.6 Exterior Gateway Protocols And Reachability 254
14.7 BGP Characteristics 255
14.8 BGP Functionality And Message Types 256
14.9 BGP Message Header 256
14.10 BGP OPEN Message 257
14.11 BGP UPDATE Message 259
14.12 Compressed Mask-Address Pairs 259
14.13 BGP Path Attributes 260
14.14 BGP KEEPALIVE Message 262
14.15 Information From The Receiver's Perspective 262
14.16 The Key Restriction Of Exterior Gateway Protocols 263
14.17 The Internet Routing Architecture 265
14.18 BGP NOTIFICATION Message 266
14.19 Summary 267
Chapter 15 Routing Within An Autonomous System (RIP, OSPF) 271
15.1 Introduction 271
15.2 Static Vs.Dynamic Interior Routes 271
15.3 Routing Information Protocol (RIP) 274
15.4 Slow Convergence Problem 276
15.5 Solving The Slow Convergence Problem 277
15.6 RIP1 Message Format 278
15.7 RIP2 Address Conventions 280
15.8 RIP Route Interpretation And Aggregation 280
15.9 RIP2 Extensions And Message Format 281
15.10 The Disadvantage Of RIP Hop Counts 282
15.11 Delay Metric (HELLO) 283
15.12 Delay Metrics And Oscillation 283
15.13 Combining RIP, Hello, And BGP 285
15.14 Gated: Inter-Autoncnous System Communication 286
15.15 The Open SPF Protocol (OSPF) 286
15.16 Routing With Partial Information 293
15.17 Summary 293
Chapter 16 Internet Multicasting 297
16.1 Introduction 297
16.2 Hardware Broadcast 297
16.3 Hardware Origins Of Multicast 298
16.4 Ethernet Multicast 299
16.5 IP Multicast 299
16.6 The Conceptual Pieces 300
16.7 IP Multicast Addresses 301
16.8 Multicast Address Semantics 302
16.9 Mapping IP Multicast To Ethernet Multicast 303
16.10 Hosts And Multicast Delivery 303
16.11 Multicast Scope 304
16.12 Extending Host Software To Handle Multicasting 305
16.13 Internet Group Management Protocol 305
16.14 IGMP Implementation 306
16.15 Group Membership State Transitions 308
16.16 IGMP Membership Query Message Format 309
16.17 IGMP Membership Report Message Format 310
16.18 Multicast Forwarding And Routing Information 312
16.19 Basic Multicast Forwarding Paradigms 313
16.20 Consequences Of TRPF 315
16.21 Multicast Trees 317
16.22 The Essence Of Multicast Route Propagation 318
16.23 Reverse Path Multicasting 318
16.24 Multicast Routing Protocols 319
16.25 Reliable Multicast And ACK Implosions 322
16.26 Summary 323
Chapter 17 IP Switching And MPLS 327
17.1 Introduction 327
17.2 Switching Technology 327
17.3 Large Networks, Label Swapping, And Paths 328
17.4 Using Switching With IP 329
17.5 IP Switching Technologies And MPLS 330
17.6 Classification, Flows, And Higher Layer Switching 331
17.7 Hierarchical Use Of MPLS 331
17.8 MPLS Encapsulation 332
17.9 Label Switching Router 333
17.10 Control Processing And Label Distribution 334
17.11 MPLS And Fragmentation 334
17.12 Mesh Topology And Traffic Engineering 335
17.13 Summary 336
Chapter 18 Mobile IP 339
18.1 Introduction 339
18.2 Mobility, Routing, and Addressing 339
18.3 Mobile IP Characteristics 340
18.4 Overview Of Mobile IP Operation 340
18.5 Mobile Addressing Details 341
18.6 Foreign Agent Discovery 341
18.7 Agent Registration 342
18.8 Registration Message Format 343
18.9 Communication With A Foreign Agent 344
18.10 Datagram Transmission And Reception 344
18.11 The Two-Crossing Problem 345
18.12 Communication With Computers On the Home Network 346
18.13 Summary 346
Chapter 19 Private Network Interconnection (NAT, VPN) 349
19.1 Introduction 349
19.2 Private And Hybrid Networks 349
19.3 VPN Addressing And Routing 351
19.4 Extending VPN Technology To Individual Hosts 352
19.5 A VPN With Private Addresses 352
19.6 Network Address Translation (NAT) 353
19.7 NAT Translation Table Creation 354
19.8 Multi-Address NAT 355
19.9 Port-Mapped NAT 356
19.10 Interaction Between NAT And ICMP 357
19.11 Interaction Between NAT And Applications 358
19.12 NAT In The Presence Of Fragmentation 358
19.13 Conceptual Address Domains 359
19.14 Slirp And Iptables 359
19.15 Summary 360
Chapter 20 Client-Server Model Of Interaction 363
20.1 Introduction 363
20.2 The Client-Server Model 363
20.3 A Simple Example: UDP Echo Server 364
20.4 Time And Date Service 366
20.5 The Complexity of Servers 366
20.6 Broadcasting A Request 368
20.7 Alternatives To The Client-Server Model 368
20.8 Summary 369
Chapter 21 The Socket Interface 373
21.1 Introduction 373
21.2 The UNIX I/O Paradigm And Network I/O 373
21.3 Adding Network I/O to UNIX 374
21.4 The Socket Abstraction 375
21.5 Creating A Socket 375
21.6 Socket Inheritance And Termination 375
21.7 Specifying A Local Address 376
21.8 Connecting Sockets To Destination Addresses 377
21.9 Sending Data Through A Socket 378
21.10 Receiving Data Through A Socket 380
21.11 Obtaining Local And Remote Socket Addresses 381
21.12 Obtaining And Setting Socket Options 382
21.13 Specifying A Queue Length For A Server 383
21.14 How A Server Accepts Connections 383
21.15 Servers That Handle Multiple Services 384
21.16 Obtaining And Setting Host Names 385
21.17 Obtaining And Setting The Internal Host Domain 386
21.18 Socket Library Calls 386
21.19 Network Byte Order Conversion Routines 387
21.20 IP Address Manipulation Routines 389
21.21 Accessing The Domain Name System 390
21.22 Obtaining Information About Hosts 391
21.23 Obtaining Information About Networks 392
21.24 Obtaining Information About Protocols 393
21.25 Obtaining Information About Network Services 393
21.26 An Example Client 394
21.27 An Example Server 396
21.28 Summary 399
Chapter 22 Bootstrap And Autoconfiguration (DHCP) 403
22.1 Introduction 403
22.2 History Of Bootstrapping 403
22.3 Using IP To Determine An IP Address 404
22.4 The DHCP Retransmission Policy 405
22.5 The DHCP Message Format 405
22.6 The Need For Dynamic Configuration 408
22.7 DHCP Lease Concept 409
22.8 Multiple Addresses And Relays 409
22.9 Address Acquisition States 410
22.10 Early Lease Termination 411
22.11 Lease Renewal States 412
22.12 DHCP Options And Message Type 413
22.13 Option Overload 414
22.14 DHCP And Domain Names 414
22.15 Summary 414
Chapter 23 The Domain Name System (DNS) 419
23.1 Introduction 419
23.2 Names For Machines 420
23.3 Flat Namespace 420
23.4 Hierarchical Names 421
23.5 Delegation Of Authority For Names 422
23.6 Subset Authority 422
23.7 Internet Domain Names 423
23.8 Top-Level Domains 424
23.9 Name Syntax And Type 426
23.10 Mapping Domain Names To Addresses 427
23.11 Domain Name Resolution 429
23.12 Efficient Translation 430
23.13 Caching: The Key To Efficiency 431
23.14 Domain Name System Message Format 431
23.15 Compressed Name Format 435
23.16 Abbreviation Of Domain Names 435
23.17 Inverse Mappings 436
23.18 Pointer Queries 437
23.19 Object Types And Resource Record Contents 437
23.20 Obtaining Authority For A Subdomain 439
23.21 Dynamic DNS Update And Notification 439
23.22 DNS Security Extensions (DNSSEC) 440
23.23 Summary 441
Chapter 24 Remote Login And Desktop (TELNET, SSH) 445
24.1 Introduction 445
24.2 Remote Interactive Computing 445
24.3 TELNET Protocol 446
24.4 Accommodating Heterogeneity 448
24.5 Passing Commands That Control The Remote Side 449
24.6 Forcing The Server To Read A Control Function 450
24.7 TELNET Options 452
24.8 TELNET Option Negotiation 452
24.9 Secure Shell (SSH) 453
24.10 Other Remote Access Technologies 455
24.11 Summary 455
Chapter 25 File Transfer And Access (FTP, TFTP, NFS) 459
25.1 Introduction 459
25.2 Remote File Access, Transfer, And Storage Networks 459
25.3 On-line Shared Access 460
25.4 Sharing By File Transfer 461
25.5 FTP: The Major TCP/IP File Transfer Protocol 461
25.6 FTP Features 461
25.7 FTP Process Model 462
25.8 TCP Port Numbers And Data Connections 463
25.9 The User's View Of FTP 464
25.10 Anonymous FTP 464
25.11 Secure File Transfer (SSL-FTP, Scp, Sftp) 464
25.12 TFTP 465
25.13 NFS 467
25.14 Implementation Of NFS (RPC And XDR) 468
25.15 Summary 469
Chapter 26 Electronic Mail (SMTP, POP, IMAP, MIME) 473
26.1 Introduction 473
26.2 Electronic Mail 473
26.3 Mailbox Names And Aliases 474
26.4 Alias Expansion And Mail Forwarding 475
26.5 TCP/IP Standards For Electronic Mail Service 476
26.6 Simple Mail Transfer Protocol (SMTP) 477
26.7 Mail Retrieval And Mailbox Manipulation Protocols 479
26.8 The MIME Extensions For Non-ASCII Data 480
26.9 MIME Multipart Messages 482
26.10 Summary 483
Chapter 27 World Wide Web (HTTP) 487
27.1 Introduction 487
27.2 Importance Of The Web 487
27.3 Architectural Components 488
27.4 Uniform Resource Locators 488
27.5 An Example Document 489
27.6 Hypertext Transfer Protocol 490
27.7 HTTP GET Request 490
27.8 Error Messages 491
27.9 Persistent Connections And Lengths 492
27.10 Data Length And Program Output 492
27.11 Length Encoding And Headers 493
27.12 Negotiation 494
27.13 Conditional Requests 495
27.14 Proxy Servers And Caching 495
27.15 Caching 496
27.16 Other HTTP Functionality 497
27.17 HTTP, Security, And E-Commerce 497
27.18 Summary 498
Chapter 28 Voice And Video Over IP (RTP, RSVP, QoS) 501
28.1 Introduction 501
28.2 Digitizing And Encoding 501
28.3 Audio And Video Transmission And Reproduction 502
28.4 Jitter And Playback Delay 503
28.5 Real-time Transport Protocol (RTP) 504
28.6 Streams, Mixing, And Multicasting 505
28.7 RTP Encapsulation 506
28.8 RTP Control Protocol (RTCP) 506
28.9 RTCP Operation 506
28.10 IP Telephony And Signaling 508
28.11 Quality Of Service Controversy 510
28.12 QoS, Utilization, And Capacity 511
28.13 IntServ Resource Reservation (RSVP) 511
28.14 IntServ Enforcement (COPS) 512
28.15 DiffServ And Per-Hop Behavior 513
28.16 Traffic Scheduling 513
28.17 Traffic Policing 515
28.18 Summary 515
Chapter 29 Network Management (SNMP) 519
29.1 Introduction 519
29.2 The Level Of Management Protocols 519
29.3 Architectural Model 520
29.4 Protocol Framework 522
29.5 Examples of MIB Variables 523
29.6 The Structure Of Management Information 524
29.7 Formal Definitions Using ASN.1 525
29.8 Structure And Representation Of MIB Object Names 525
29.9 Simple Network Management Protocol 530
29.10 SNMP Message Format 532
29.11 An Example Encoded SNMP Message 535
29.12 New Features In SNMPv3 538
29.13 Summary 538
Chapter 30 Internet Security And Firewall Design (IPsec, SSL) 543
30.1 Introduction 543
30.2 Protecting Resources 544
30.3 Information Policy 545
30.4 Internet Security 545
30.5 IP Security (IPsec) 546
30.6 IPsec Authentication Header 546
30.7 Security Association 547
30.8 IPsec Encapsulating Security Payload 548
30.9 Authentication And Mutable Header Fields 549
30.10 IPsec Tunneling 550
30.11 Required Security Algorithms 550
30.12 Secure Sockets (SSL and TLS) 551
30.13 Firewalls And Internet Access 551
30.14 Multiple Connections And Weakest Links 552
30.15 Firewall Implementation And Packet Filters 552
30.16 Security And Packet Filter Specification 553
30.17 The Consequence Of Restricted Access For Clients 554
30.18 Stateful Firewalls 554
30.19 Content Protection And Proxies 555
30.20 Monitoring And Logging 556
30.21 Summary 556
Chapter 31 A Next Generation IP (IPv6) 561
31.1 Introduction 561
31.2 Why Change? 561
31.3 Beyond IPv4 562
31.4 The Road To A New Version Of IP 562
31.5 The Name Of The Next IP 562
31.6 Features Of IPv6 563
31.7 General Form Of An IPv6 Datagram 564
31.8 IPv6 Base Header Format 564
31.9 IPv6 Extension Headers 566
31.10 Parsing An IPv6 Datagram 566
31.11 IPv6 Fragmentation And Reassembly 567
31.12 The Consequence Of End-To-End Fragmentation 568
31.13 IPv6 Source Routing 569
31.14 IPv6 Options 569
31.15 Size Of The IPv6 Address Space 571
31.16 IPv6 Colon Hexadecimal Notation 571
31.17 Three Basic IPv6 Address Types 572
31.18 The Duality Of Broadcast And Multicast 573
31.19 An Engineering Choice And Simulated Broadcast 573
31.20 Proposed IPv6 Address Space Assignment 574
31.21 Embedded IPv4 Addresses And Transition 574
31.22 Unspecified And Loopback Addresses 576
31.23 Unicast Address Structure 577
31.24 Interface Identifiers 577
31.25 Local Addresses 578
31.26 Autoconfiguration And Renumbering 578
31.27 Summary 579
Appendix 1 A Look At RFCs 582
Appendix 2 Glossary Of Internetworking Terms And Abbreviations 586
Bibliography 626
Index 634