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