An Introduction to Computer Networks¶
Peter L Dordal
Department of Computer Science
Loyola University Chicago
Contents:
- 0 Preface
 - 1   An Overview of Networks
- 1.1 Layers
 - 1.2 Data Rate, Throughput and Bandwidth
 - 1.3 Packets
 - 1.4 Datagram Forwarding
 - 1.5 Topology
 - 1.6 Routing Loops
 - 1.7 Congestion
 - 1.8 Packets Again
 - 1.9 LANs and Ethernet
 - 1.10 IP - Internet Protocol
 - 1.11 DNS
 - 1.12 Transport
 - 1.13 Firewalls
 - 1.14 Some Useful Utilities
 - 1.15 IETF and OSI
 - 1.16 Berkeley Unix
 - 1.17 Epilog
 - 1.18 Exercises
 
 - 2 Ethernet
 - 3 Other LANs
 - 4 Links
 - 5 Packets
 - 6 Abstract Sliding Windows
 - 7   IP version 4
- 7.1 The IPv4 Header
 - 7.2 Interfaces
 - 7.3 Special Addresses
 - 7.4 Fragmentation
 - 7.5 The Classless IP Delivery Algorithm
 - 7.6 IPv4 Subnets
 - 7.7 Network Address Translation
 - 7.8 DNS
 - 7.9 Address Resolution Protocol: ARP
 - 7.10 Dynamic Host Configuration Protocol (DHCP)
 - 7.11 Internet Control Message Protocol
 - 7.12 Unnumbered Interfaces
 - 7.13 Mobile IP
 - 7.14 Epilog
 - 7.15 Exercises
 
 - 8   IP version 6
- 8.1 The IPv6 Header
 - 8.2 IPv6 Addresses
 - 8.3 Network Prefixes
 - 8.4 IPv6 Multicast
 - 8.5 IPv6 Extension Headers
 - 8.6 Neighbor Discovery
 - 8.7 IPv6 Host Address Assignment
 - 8.8 Globally Exposed Addresses
 - 8.9 ICMPv6
 - 8.10 IPv6 Subnets
 - 8.11 Using IPv6 and IPv4 Together
 - 8.12 IPv6 Examples Without a Router
 - 8.13 IPv6 Connectivity via Tunneling
 - 8.14 IPv6-to-IPv4 Connectivity
 - 8.15 Epilog
 - 8.16 Exercises
 
 - 9 Routing-Update Algorithms
 - 10 Large-Scale IP Routing
 - 11 UDP Transport
 - 12   TCP Transport
- 12.1 The End-to-End Principle
 - 12.2 TCP Header
 - 12.3 TCP Connection Establishment
 - 12.4 TCP and WireShark
 - 12.5 TCP Offloading
 - 12.6 TCP simplex-talk
 - 12.7 TCP state diagram
 - 12.8 TCP Old Duplicates
 - 12.9 TIMEWAIT
 - 12.10 The Three-Way Handshake Revisited
 - 12.11 Anomalous TCP scenarios
 - 12.12 TCP Faster Opening
 - 12.13 Path MTU Discovery
 - 12.14 TCP Sliding Windows
 - 12.15 TCP Delayed ACKs
 - 12.16 Nagle Algorithm
 - 12.17 TCP Flow Control
 - 12.18 Silly Window Syndrome
 - 12.19 TCP Timeout and Retransmission
 - 12.20 KeepAlive
 - 12.21 TCP timers
 - 12.22 Variants and Alternatives
 - 12.23 Epilog
 - 12.24 Exercises
 
 - 13   TCP Reno and Congestion Management
- 13.1 Basics of TCP Congestion Management
 - 13.2 Slow Start
 - 13.3 TCP Tahoe and Fast Retransmit
 - 13.4 TCP Reno and Fast Recovery
 - 13.5 TCP NewReno
 - 13.6 Selective Acknowledgments (SACK)
 - 13.7 TCP and Bottleneck Link Utilization
 - 13.8 Single Packet Losses
 - 13.9 TCP Assumptions and Scalability
 - 13.10 TCP Parameters
 - 13.11 Epilog
 - 13.12 Exercises
 
 - 14   Dynamics of TCP
- 14.1 A First Look At Queuing
 - 14.2 Bottleneck Links with Competition
 - 14.3 TCP Fairness with Synchronized Losses
 - 14.4 Notions of Fairness
 - 14.5   TCP Reno loss rate versus 
cwnd - 14.6 TCP Friendliness
 - 14.7 AIMD Revisited
 - 14.8 Active Queue Management
 - 14.9 The High-Bandwidth TCP Problem
 - 14.10 The Lossy-Link TCP Problem
 - 14.11 The Satellite-Link TCP Problem
 - 14.12 Epilog
 - 14.13 Exercises
 
 - 15   Newer TCP Implementations
- 15.1 Choosing a TCP on Linux
 - 15.2 High-Bandwidth Desiderata
 - 15.3 RTTs
 - 15.4 A Roadmap
 - 15.5 Highspeed TCP
 - 15.6 TCP Vegas
 - 15.7 FAST TCP
 - 15.8 TCP Westwood
 - 15.9 TCP Illinois
 - 15.10 Compound TCP
 - 15.11 TCP Veno
 - 15.12 TCP Hybla
 - 15.13 DCTCP
 - 15.14 H-TCP
 - 15.15 TCP CUBIC
 - 15.16 TCP BBR
 - 15.17 Epilog
 - 15.18 Exercises
 
 - 16 Network Simulations: ns-2
 - 17 The ns-3 Network Simulator
 - 18   Mininet
- 18.1 Installing Mininet
 - 18.2 A Simple Mininet Example
 - 18.3 Multiple Switches in a Line
 - 18.4 IP Routers in a Line
 - 18.5 IP Routers With Simple Distance-Vector Implementation
 - 18.6 TCP Competition: Reno vs Vegas
 - 18.7 TCP Competition: Reno vs BBR
 - 18.8 Linux Traffic Control (tc)
 - 18.9 OpenFlow and the POX Controller
 - 18.10 Exercises
 
 - 19   Queuing and Scheduling
- 19.1 Queuing and Real-Time Traffic
 - 19.2 Traffic Management
 - 19.3 Priority Queuing
 - 19.4 Queuing Disciplines
 - 19.5 Fair Queuing
 - 19.6 Applications of Fair Queuing
 - 19.7 Hierarchical Queuing
 - 19.8 Hierarchical Weighted Fair Queuing
 - 19.9 Token Bucket Filters
 - 19.10 Applications of Token Bucket
 - 19.11 Token Bucket Queue Utilization
 - 19.12 Hierarchical Token Bucket
 - 19.13 Fair Queuing / Token Bucket combinations
 - 19.14 Epilog
 - 19.15 Exercises
 
 - 20   Quality of Service
- 20.1 Net Neutrality
 - 20.2 Where the Wild Queues Are
 - 20.3 Real-time Traffic
 - 20.4 Integrated Services / RSVP
 - 20.5 Global IP Multicast
 - 20.6 RSVP
 - 20.7 Differentiated Services
 - 20.8 RED with In and Out
 - 20.9 NSIS
 - 20.10 Comcast Congestion-Management System
 - 20.11 Real-time Transport Protocol (RTP)
 - 20.12 Multi-Protocol Label Switching (MPLS)
 - 20.13 Epilog
 - 20.14 Exercises
 
 - 21   Network Management and SNMP
- 21.1 Network Architecture
 - 21.2 SNMP Basics
 - 21.3 SNMP Naming and OIDs
 - 21.4 MIBs
 - 21.5 SNMPv1 Data Types
 - 21.6 ASN.1 Syntax and SNMP
 - 21.7 SNMP Tables
 - 21.8 SNMP Operations
 - 21.9 MIB Browsing
 - 21.10 MIB-2
 - 21.11 SNMPv1 communities and security
 - 21.12 SNMP and ASN.1 Encoding
 - 21.13 SNMPv2
 - 21.14 Table Row Creation
 - 21.15 SNMPv3
 - 21.16 Exercises
 
 - 22   Security
- 22.1 Code-Execution Intrusion
 - 22.2 Stack Buffer Overflow
 - 22.3 Heap Buffer Overflow
 - 22.4 Network Intrusion Detection
 - 22.5 Cryptographic Goals
 - 22.6 Secure Hashes
 - 22.7 Shared-Key Encryption
 - 22.8 Diffie-Hellman-Merkle Exchange
 - 22.9 Public-Key Encryption
 - 22.10 SSH and TLS
 - 22.11 IPsec
 - 22.12 DNSSEC
 - 22.13 RSA Key Examples
 - 22.14 Exercises
 
 - 23 Bibliography
 - 24   Selected Solutions
- 24.1 Solutions for An Overview of Networks
 - 24.2 Solutions for Ethernet
 - 24.3 Solutions for Other LANs
 - 24.4 Solutions for Links
 - 24.5 Solutions for Packets
 - 24.6 Solutions for Sliding Windows
 - 24.7 Solutions for IPv4
 - 24.8 Solutions for Routing-Update Algorithms
 - 24.9 Solutions for Large-Scale IP Routing
 - 24.10 Solutions for UDP
 - 24.11 Solutions for TCP Reno
 - 24.12 Solutions for Dynamics of TCP
 - 24.13 Solutions for Mininet
 - 24.14 Solutions for Queuing and Scheduling