Preface
PART 1 Using And Building Internet Applications
Chapter 1 Introduction
1.1 Growth Of Computer Networking
1.2 Complexity In Network Systems
1.3 Mastering The Complexity
1.4 Concepts And Terminology
1.5 The Value Of Hands-On Experience
1.6 Organization Of The Text
1.7 Summary
Chapter 2 Motivation And Tools
2.1 Introduction
2.2 Resource Sharing
2.3 Growth Of The Internet
2.4 Probing The Internet
2.5 Interpreting A Ping Response
2.6 Tracing A Route
2.7 Summary
Chapter 3 Network Programming And Applications
3.1 Introduction
3.2 Network Communication
3.3 Client-Server Computing
3.4 Communication Paradigm
3.5 An Example Application Program Interface
3.6 An Intuitive Look At The API
3.7 Definition Of The API
3.8 Code For An Echo Application
3.9 Code For A Chat Application
3.10 Code For A Web Application
3.11 Managing Multiple Connections With The Select Function
3.12 Summary
PART II Data Transmission
Chapter 4 Transmission Media
4.1 Introduction
4.2 Copper Wires
4.3 Glass Fibers
4.4 Radio
4.5 Satellites
4.6 Geosynchronous Satellites
4.7 Low Earth Orbit Satellites
4.8 Low Earth Orbit Satellite Arrays
4.9 Microwave
4.10 Infrared
4.11 Light From A Laser
4.12 Summary
Chapter 5 Local Asynchronous Communication(RS-232)
5.1 Introduction
5.2 The Need For Asynchronous Communication
5.3 Using Electric Current To Send Bits
5.4 Standards For Communication
5.5 Baud Rate,Framing,And Errors
5.6 Half And Full Duplex Asynchronous Communication
5.7 Limitations Of Real Hardware
5.8 Hardware Bandwidth And The Transmission Of Bits
5.9 The Effect Of Noise On Communication
5.10 Significance For Data Networking
5.11 Summary
Chapter 6 Long-Distance Communication (Carriers,Modulation,And Modems)
6.1 Introduction
6.2 Sending Signals Across Long Distances
6.3 Modem Hardware Used For Modulation And Demodulation
6.4 Leased Analog Data Circuits
6.5 Optical,Radio Frequency,And Dialup Modems
6.6 Carrier Frequencies And Multiplexing
6.7 Baseband And Broadband Technologies
6.8 Wavelength Division Multiplexing
6.9 Spread Spectrum
6.10 Time Division Multiplexing
6.11 Summary
PART III Packet Transmission
Chapter 7 Packets,Frames,And Error Detection
7.1 Introduction
7.2 The Concept Of Packets
7.3 Packets And Time-Division Multiplexing
7.4 Packets And Hardware Frames
7.5 Byte Stuffing
7.6 Transmission Errors
7.7 Parity Bits And Parity Checking
7.8 Probability,Mathematics,And Error Detection
7.9 Detecting Errors With Checksums
7.10 Detecting Errors With Cyclic Redundancy Checks
7.11 Combining Building Blocks
7.12 Burst Errors
7.13 Frame Format And Error Detection Mechanisms
7.14 Summary
Chapter 8 LAN Technologies And Network Topology
8.1 Introduction
8.2 Direct Point-to-Point Communication
8.3 Shared Communication Channels
8.4 Significance Of LANs And Locality Of Reference
8.5 LAN Topologies
8.6 Example Bus Network:Ethernet
8.7 Carrier Sense On Multi-Access Networks(CSMA)
8.8 Collision Detection And Backoff With CSMA/CD
8.9 802.11b Wireless LANs And CSMA/CA
8.10 Another Example Bus Network:LocalTalk
8.11 Ring Topology And Token Passing
8.12 Self-Healing Token Passing Networks
8.13 Example Star Network:ATM
8.14 Summary
Chapter 9 Hardware Addressing And Frame Type Identification
9.1 Introduction
9.2 Specifying A Recipient
9.3 How LAN Hardware Uses Addresses To Filter Packets
9.4 Format Of A Physical Address
9.5 Broadcasting
9.6 Multicasting
9.7 Multicast Addressing
9.8 Identifying Packet Contents
9.9 Frame Headers And Frame Format
9.10 An Example Frame Format
9.11 Using Networks That Do Not Have Self-Identifying Frames
9.12 Network Analyzers,Physical Addresses,Frame Types
9.13 Summary
Chapter 10 LAN Wiring,Physical Topology,And Interface Hardware
10.1 Introduction
10.2 Speeds Of LANs And Computers
10.3 Network Interface Hardware
10.4 The Connection Between A NIC And A Network
10.5 Original Thick Ethernet Wiring
10.6 Connection Multiplexing
10.7 Thin Ethernet Wiring
10.8 Twisted Pair Ethernet
10.9 Advantages And Disadvantages Of Wiring Schemes
10.10 The Topology Paradox
10.11 Network Interface Cards And Wiring Schemes
10.12 10/100 Network Interfaces And Autonegotiation
10.13 Categories Of Wire
10.14 Wiring Schemes And Other Network Technologies
10.15 Summary
Chapter 11 Extending LANs:Fiber Modems,Repeaters,Bridges,and Switches
11.1 Introduction
11.2 Distance Limitation And LAN Design
11.3 Fiber Optic Extensions
11.4 Repeaters
11.5 Bridges
11.6 Frame Filtering
11.7 Startup And Steady State Behavior Of Bridged Networks
11.8 Planning A Bridged Network
11.9 Bridging Between Buildings
11.10 Bridging Across Longer Distances
11.11 A Cycle Of Bridges
11.12 Distributed Spanning Tree
11.13 Switching
11.14 Combining Switches And Hubs
11.15 Bridging And Switching With Other Technologies
11.16 Summary
Chapter 12 Long-Distance And Local Loop Digital Technologies
12.1 Introduction
12.2 Digital Telephony
12.3 Synchronous Communication
12.4 Digital Circuits,NIUs,And DSU/CSUs
12.5 Telephone Standards
12.6 DS Terminology And Data Rates
12.7 Lower Capacity Circuits
12.8 Intermediate Capacity Digital Circuits
12.9 Highest Capacity Circuits
12.10 Optical Carrier Standards
12.11 The C Suffix
12.12 Synchronous Optical NETwork (SONET)
12.13 The Local Subscriber Loop
12.14 ISDN
12.15 Asymmetric Digital Subscriber Line Technology
12.16 Other DSL Technologies
12.17 Cable Modem Technology
12.18 Upstream Communication
12.19 Hybrid Fiber Coax
12.20 Fiber To The Curb
12.21 Head-End And Tail-End Modems
12.22 Wireless Alternatives For Special Cases
12.23 Broadcast Satellite Systems
12.24 Summary
Chapter 13 WAN Technologies And Routing
13.1 Introduction
13.2 Large Networks And Wide Areas
13.3 Packet Switches
13.4 Forming A WAN
13.5 Store And Forward
13.6 Physical Addressing In A WAN
13.7 Next-Hop Forwarding
13.8 Source Independence
13.9 Relationship Of Hierarchical Addresses To Routing
13.10 Routing In A WAN
13.11 Use Of Default Routes
13.12 Routing Table Computation
13.13 Shortest Path Computation In A Graph
13.14 Distributed Route Computation
13.15 Distance Vector Routing
13.16 Lind-State Routing(SPF)
13.17 Example WAN Technologies
13.18 Summary
Chapter 14 Connection-Oriented Networking And ATM
14.1 Introduction
14.2 A Single,Global Network
14.3 ISDN And ATM
14.4 ATM Design And Cells
14.5 Connection-Oriented Service
14.6 VPI/VCI
14.7 Labels And Label Switching
14.8 An Example Trip Through An ATM Network
14.9 Permanent Virtual Circuits
14.10 Switched Virtual Circuits
14.11 Quality Of Service
14.12 The Motivation For Cells And Label Switching
14.13 ATM Data Transmission And AAL5
14.14 Critique Of ATM
14.15 MultiProtocol Label Switching(MPLS)
14.16 Summary
Chapter 15 Network Characteristics:Ownership,Service Paradigm,And Performance
15.1 Introduction
15.2 Network Ownership
15.3 Privacy And Public Networks
15.4 Advantages And Disadvantages
15.5 Virtual Private Networks
15.6 Guaranteeing Absolute Privacy
15.7 Service Paradigm
15.8 Connection-Oriented Service Paradigm
15.9 Connectionless Service Paradigm
15.10 Interior And Exterior Service Paradigms
15.11 Comparison Of Service Paradigms
15.12 Examples Of Service Paradigms
15.13 Addresses And Connection Identifiers
15.14 Network Performance Characteristics
15.15 Jitter
15.16 Summary
Chapter 16 Protocols And Layering
16.1 Introduction
16.2 The Need For Protocols
16.3 Protocol Suites
16.4 A Plan For Protocol Design
16.5 The Seven Layers
16.6 Stacks:Layered Software
16.7 How Layered Software Works
16.8 Multiple,Nested Headers
16.9 The Scientific Basis For Layering
16.10 Techniques Protocols Use
16.11 The Art Of Protocol Design
16.12 Summary
PART IV Internetworking
Chapter 17 Internetworking:Concepts,Architecture,and Protocols
17.1 Introduction
17.2 The Motivation For Internetworking
17.3 The Concept Of Universal Service
17.4 Universal Service In A Heterogeneous World
17.5 Internetworking
17.6 Physical Network Connection With Routers
17.7 Internet Architecture
17.8 Achieving Universal Service
17.9 A Virtual Network
17.10 Protocols For Internetworking
17.11 Significance Of Internetworking And TCP/IP
17.12 Layering And TCP/IP Protocols
17.13 Host Computers,Routers,And Protocol Layers
17.14 Summary
Chapter 18 IP:Internet Protocol Addresses
18.1 Introduction
18.2 Addresses For The Virtual Internet
18.3 The IP Addressing Scheme
18.4 The IP Address Hierarchy
18.5 Original Classes Of IP Addresses
18.6 Computing The Class Of An Address
18.7 Dotted Decimal Notation
18.8 Classes And Dotted Decimal Notation
18.9 Division Of The Address Space
18.10 Authority For Addresses
18.11 A Classful Addressing Example
18.12 Subnet And Classless Addressing
18.13 Address Masks
18.14 CIDR Notation
18.15 A CIDR Address Block Example
18.16 CIDR Host Addresses
18.17 Special IP Addresses
18.18 Summary Of Special IP Addresses
18.19 The Berkeley Broadcast Address Form
18.20 Routers And The IP Addressing Principle
18.21 Multi-Homed Hosts
18.22 Summary
Chapter 19 Binding Protocol Addresses(ARP)
19.1 Introduction
19.2 Protocol Addresses And Packet Delivery
19.3 Address Resolution
19.4 Address Resolution Techniques
19.5 Address Resolution With Table Lookup
19.6 Address Resolution With Closed-Form Computation
19.7 Address Resolution With Message Exchange
19.8 Address Resolution Protocol
19.9 ARP Message Delivery
19.10 ARP Message Format
19.11 Sending An ARP Message
19.12 Identifying ARP Responses
19.13 Caching ARP Responses
19.14 Processing An Incoming ARP Message
19.15 Layering,Address Resolution,Protocol Addresses
19.16 Summary
Chapter 20 IP Datagrams And Datagram Forwarding
20.1 Introduction
20.2 Connectionless Service
20.3 Virtual Packets
20.4 The IP Datagram
20.5 Forwarding An IP Datagram
20.6 IP Addresses And Routing Table Entries
20.7 The Mask Field And Datagram Forwarding
20.8 Destination And Next-Hop Addresses
20.9 Best-Effort Delivery
20.10 The IP Datagram Header Format
20.11 Summary
Chapter 21 IP Encapsulation,Fragmentation,And Reassembly
21.1 Introduction
21.2 Datagram Transmission And Frames
21.3 Encapsulation
21.4 Transmission Across An Internet
21.5 MTU,Datagram Size,And Encapsulation
21.6 Reasembly
21.7 Identifying A Datagram
21.8 Fragment Loss
21.9 Fragmenting A Fragment
21.10 Summary
Chapter 22 The Future IP(IPv6)
22.1 Introduction
22.2 The Success Of IP
22.3 The Motivation For Change
22.4 A Name And A Version Number
22.5 IPv6 Features
22.6 IPv6 Datagram Format
22.7 IPv6 Base Header Format
22.8 How IPv6 Handles Multiple Headers
22.9 Fragmentation,Reasembly,And Path MTU
22.10 The Purpose Of Multiple Headers
22.11 IPv6 Addressing
22.12 IPv6 Colon Hexadecimal Notation
22.13 Summary
Chapter 23 An Error Reporting Mechanism(ICMP)
23.1 Introduction
23.2 Best-Effort Semantics And Error Detection
23.3 Internet Control Message Protocol
23.4 ICMP Message Transport
23.5 Using ICMP Messages To Test Reachability
23.6 Using ICMP To Trace A Route
23.7 The Last Address Printed By Traceroute
23.8 Using ICMP For Path MTU Discovery
23.9 Summary
Chapter 24 UDP:Datagram Transport Service
24.1 Introduction
24.2 The Need For End-To-End Transport Protocols
24.3 The User Datagram Protocol
24.4 The Connectionless Paradigm
24.5 Message-Oriented Interface
24.6 UDP Communication Semantics
24.7 Arbitrary Interaction
24.8 Support For Unicast,Multicast,And Broadcast
24.9 Endpoint Identification With Protocol Port Numbers
24.10 UDP Datagram Format
24.11 The UDP Checksum And The Pseudo Header
24.12 UDP Encapsulation
24.13 Summary
Chapter 25 TCP:Reliable Transport Service
25.1 Introduction
25.2 The Need For Reliable Transport
25.3 The Transmission Control Protocol
25.4 The Service TCP Provides To Applications
25.5 End-To-End Service And Datagrams
25.6 Achieving Reliability
25.7 Packet Loss And Retransmission
25.8 Adaptive Retransmission
25.9 Comparison Of Retransmission Times
25.10 Buffers,Flow Control,And Windows
25.11 Three-Way Handshake
25.12 Congestion Control
25.13 TCP Segment Format
25.14 Summary
Chapter 26 Network Address Translation
26.1 Introduction
26.2 The Requirement For Unique Addresses
26.3 Network Address Translation Technology
26.4 NAT Topology
26.5 Possible Implementations Of NAT
26.6 Basic Address Translation
26.7 Translation Table
26.8 NAPT And TCP Splicing
26.9 Other Variants:Twice NAT And CAT
26.10 NAT Software And Systems For Use At Home
26.11 Summary
Chapter 27 Internet Routing
27.1 Introduction
27.2 Static Vs.Dynamic Routing
27.3 Static Routing In Hosts And A Default Route
27.4 Dynamic Routing And Routers
27.5 Routing In The Global Internet
27.6 Autonomous System Concept
27.7 The Two Types Of Internet Routing Protocols
27.8 Routes And Data Traffic
27.9 The Border Gateway Protocol(BGP)
27.10 The Routing Information Protocol(RIP)
27.11 RIP Packet Format
27.12 The Open Shortest Path First Protocol(OSPF)
27.13 An Example OSPF Graph
27.14 OSPF Areas
27.15 Multicast Routing
27.16 Summary
PART V Network Applications
Chapter 28 Client-Server Interaction
28.1 Introduction
28.2 The Functionality Application Software Provides
28.3 The Functionality An Internet Provides
28.4 Making Contact
28.5 The Client-Server Paradigm
28.6 Characteristics Of Clients And Servers
28.7 Server Programs And Server-Class Computers
28.8 Requests,Responses,And Direction Of Data Flow
28.9 Transport Protocols and Client-Server Interaction
28.10 Multiple Services On One Computer
28.11 Identifying A Particular Service
28.12 Multiple Copies Of A Server For A Single Service
28.13 Dynamic Server Creation
28.14 Transport Protocols And Unambiguous Communication
28.15 Connection-Oriented And Connectionless Transport
28.16 A Service Reachable Through Multiple Protocols
28.17 Complex Client-Server Interactions
28.18 Interactions And Circular Dependencies
28.19 Summary
Chapter 29 The Socket Interface
29.1 Introduction
29.2 Application Program Interface
29.3 The Socket API
29.4 Sockets And Socket Libraries
29.5 Socket Communication And UNIX I/O
29.6 Sockets,Descriptors,And Network I/O
29.7 Parameters And The Socket API
29.8 Procedures That Implement The Socket API
29.9 Read And Write With Sockets
29.10 Other Socket Procedures
29.11 Sockets,Threads,And Inheritance
29.12 Summary
Chapter 30 Example Of A Client And A Server
30.1 Introduction
30.2 Connection-Oriented Communication
30.3 An Example Service
30.4 Command-Line Arguments For The Example Programs
30.5 Sequence Of Socket Procedure Calls
30.6 Code For Example Client
30.7 Code For Example Server
30.8 Stream Service And Multiple Recv Calls
30.9 Socket Procedures And Blocking
30.10 Size Of The Code And Error Reporting
30.11 Using The Example Client With Another Service
30.12 Using Another Client To Test The Server
30.13 Summary
Chapter 31 Naming With The Domain Name System
31.1 Introduction
31.2 Structure Of Computer Names
31.3 Geographic Structure
31.4 Domain Names Within An Organization
31.5 Domain Names That Begin With www
31.6 The DNS Client-Server Model
31.7 The DNS Server Hierarchy
31.8 Server Architectures
31.9 Locality Of Reference And Multiple Servers
31.10 Links Among Servers
31.11 Resolving A Name
31.12 Optimization Of DNS Performance
31.13 Types Of DNS Entries
31.14 Aliases Using The CNAME Type
31.15 An Important Consequence Of Multiple Types
31.16 Abbreviations And The DNS
31.17 Summary
Chapter 32 Electronic Mail Representation And Transfer
32.1 Introduction
32.2 The Electronic Mail Paradigm
32.3 Electronic Mailboxes And Addresses
32.4 Electronic Mail Message Format
32.5 Carbon Copies
32.6 Multipurpose Internet Mail Extensions
32.7 E-mail And Application Programs
32.8 Mail Transfer
32.9 The Simple Mail Transfer Protocol
32.10 Optimizing For Multiple Recipients On A Computer
32.11 Mail Exploders,Lists,And Forwarders
32.12 Mail Gateways
32.13 Automated Mailing Lists
32.14 Mail Relays And E-mail Addresses
32.15 Mailbox Access
32.16 Dialup Connections And POP
32.17 Summary
Chapter 33 IP Telephony(VoIP)
33.1 Introduction
33.2 The Motivation And Challenge Of IP Telephony
33.3 Encoding ,Transmission,And Playback
33.4 Signaling Systems And Protocols
33.5 A Basic IP Telephone System
33.6 Interoperation With Other Telephone Systems
33.7 Alternative Terminology And Concepts
33.8 Proposed Protocols And Layering
33.9 H.323 Characteristics
33.10 H.323 Layering
33.11 SIP Characteristics And User Identification
33.12 SIP Methods
33.13 An Example SIP Session
33.14 Telephone Number Mapping And Routing
33.15 IP Telephones And Electrical Power
33.16 Summary
Chapter 34 File Transfer And Remote File Access
34.1 Introduction
34.2 Generalized File Transfer
34.3 The File Transfer Protocol
34.4 FTP General Model And User Interface
34.5 FTP Commands
34.6 Connections,Authorization,And File Permissions
34.7 Anonymous File Access
34.8 File Transfer In Either Direction
34.9 Wildcard Expansion In File Names
34.10 File Name Translation
34.11 Changing Directories And Listing Contents
34.12 File Types And Transfer Modes
34.13 Example FTP Session
34.14 Verbose Output
34.15 Client-Server Interaction In FTP
34.16 Control And Data Connections
34.17 Data Connections And End Of File
34.18 Trivial File Transfer Protocol
34.19 Network File System
34.20 Summary
Chapter 35 World Wide Web Pages And Browsing
35.1 Introduction
35.2 Browser Interface
35.3 Hypertext And Hypermedia
35.4 Document Representation
35.5 HTML Format And Representation
35.6 Example THML Formatting Tags
35.7 Headings
35.8 Lists
35.9 Embedding Graphics Images In A Web Page
35.10 Identifying A Page
35.11 Hypertext Links From One Document To Another
35.12 Client-Server Interaction
35.13 Web Document Transfer And HTTP
35.14 Browser Architecture
35.15 Optional Clients
35.16 Caching In Web Browsers
35.17 HTTP Support For Caching
35.18 Alternative Transfer Protocols
35.19 Other Markup Languages
35.20 Summary
Chapter 36 Dynamic Web Document Technologies (CGI,ASP,JSP,PHP,ColdFusion)
36.1 Introduction
36.2 Three Basic Types of Web Documents
36.3 Advantages And Disadvantages Of Each Document Type
36.4 Implementation Of Dynamic Documents
36.5 The CGI Standard
36.6 Output From A CGI Program
36.7 An Example CGI Program
36.8 Parameters And Environment Variables
36.9 State Information And Cookies
36.10 A CGI Script With Long-Term State Information
36.11 A CGI Script With Short-Term State Information
36.12 Forms And Interaction
36.13 Server-Side Scripting Technologies
36.14 Summary
Chapter 37 Active Web Document Technologies (Java,JavaScript)
37.1 Introduction
37.2 Continuous Update With Serer Push And Client Pull
37.3 Active Documents And Server Overhead
37.4 Active Document Representation And Translation
37.5 Java Technology
37.6 The Java Programming Language
37.7 The Java Runtime Environment
37.8 The Java Library
37.9 A Graphics Toolkit
37.10 Using Java Graphics On A Particular Computer
37.11 Java Interpreters And Browsers
37.12 Compiling A Java Program
37.13 An Example Applet
37.14 Invoking An Applet
37.15 Example Of Interaction With A Browser
37.16 Errors And Exception Handling
37.17 JavaScript Technology
37.18 Alternatives
37.19 Summary
Chapter 38 RPC and Middleware
38.1 Introduction
38.2 Programming Clients And Servers
38.3 Remote Procedure Call Paradigm
38.4 RPC Paradigm
38.5 Communication Stubs
38.6 External Data Representation
38.7 Middleware And Object-Oriented Middleware
38.8 Summary
Chapter 39 Network Management(SNMP)
39.1 Introduction
39.2 Managing An Internet
39.3 The Danger Of Hidden Failures
39.4 Network Management Software
39.5 Clients,Servers,Managers,And Agents
39.6 Simple Network Managment Protocol
39.7 Fetch-Store Paradigm
39.8 The MIB And Object Names
39.9 The Variety Of MIB Variables
39.10 MIB Variables That Correspond To Arrays
39.11 Summary
Chapter 40 Network Security
40.1 Introduction
40.2 Secure Networks And Policies
40.3 Aspects Of Security
40.4 Responsibility And Control
40.5 Integrity Mechanisms
40.6 Access Control And Passwords
40.7 Encryption And Confidentiality
40.8 Public Key Encryption
40.9 Authentication With Digital Signatures
40.10 Internet Firewall Concept
40.11 Packet Filtering Using Ports
40.12 Using Packet Filters To Create A Firewall
40.13 Virtual Private Networks
40.14 Tunneling
40.15 Security Technologies
40.16 Summary
Chapter 41 Initialization(Configuration)
41.1 Introduction
41.2 Bootstrapping Protocol Software
41.3 Protocol Parameters
41.4 Protocol Configuration
41.5 Examples Of Items That Need To Be Configured
41.6 Configuration From Stable Storage
41.7 The Need To Automate Protocol Configuration
41.8 Methods For Automated Protocol Configuration
41.9 The Address Used To Find An Address
41.10 A Sequence Of Protocols Used During Bootstrap
41.11 Bootstrap Protocol(BOOTP)
41.12 Dynamic Host Configuration Protocol(DHCP)
41.13 Optimizations In DHCP
41.14 Indirect Server Access Through A Relay
41.15 DHCP Message Format
41.16 DHCP And Domain Names
41.17 Summary
Appendix 1 Glossary Of Networking Terms And Abbreviations
Appendix 2 The ASCII Character Set
Appendix 3 Address Masks In Dotted Decimal
Appendix 4 How To Use The CD-ROM Included With This Book
Bibliography
Index