Free

An Introduction to Computer Networks, edition 1.9.16

By Peter L Dordal
Free
Book Description

unknown

Table of Contents
  • An Introduction to Computer Networks
  • 0   Preface
    • 0.1   Licensing
    • 0.2   Classroom Use
    • 0.3   Acknowledgments
    • 0.4   Progress Notes
    • 0.5   Technical considerations
    • 0.6   A Note On the Cover
    • 0.7   Recent Changes
  • 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.5.1   Traffic Engineering
    • 1.6   Routing Loops
    • 1.7   Congestion
    • 1.8   Packets Again
    • 1.9   LANs and Ethernet
    • 1.10   IP - Internet Protocol
      • 1.10.1   IP Forwarding
      • 1.10.2   The Future of IPv4
    • 1.11   DNS
    • 1.12   Transport
      • 1.12.1   Transport Communications Patterns
      • 1.12.2   Content-Distribution Networks
    • 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
    • 2.1   10-Mbps Classic Ethernet
      • 2.1.1   Ethernet Packet Format
      • 2.1.2   Ethernet Multicast
      • 2.1.3   Ethernet Address Internal Structure
      • 2.1.4   The LAN Layer
      • 2.1.5   The Slot Time and Collisions
      • 2.1.6   Exponential Backoff Algorithm
      • 2.1.7   Capture effect
      • 2.1.8   Hubs and topology
      • 2.1.9   Errors
      • 2.1.10   CSMA persistence
      • 2.1.11   Analysis of Classic Ethernet
    • 2.2   100 Mbps (Fast) Ethernet
    • 2.3   Gigabit Ethernet
    • 2.4   Ethernet Switches
      • 2.4.1   Ethernet Learning Algorithm
      • 2.4.2   Switch Hardware
    • 2.5   Spanning Tree Algorithm and Redundancy
      • 2.5.1   Example 1: Switches Only
      • 2.5.2   Example 2: Switches and Segments
    • 2.6   Virtual LAN (VLAN)
    • 2.7   TRILL and SPB
    • 2.8   Software-Defined Networking
      • 2.8.1   OpenFlow Switches
      • 2.8.2   Learning Switches in OpenFlow
      • 2.8.3   Other OpenFlow examples
    • 2.9   Epilog
    • 2.10   Exercises
  • 3   Other LANs
    • 3.1   Virtual Private Networks
    • 3.2   Carrier Ethernet
    • 3.3   Token Ring
    • 3.4   Virtual Circuits
    • 3.5   Asynchronous Transfer Mode: ATM
      • 3.5.1   ATM Segmentation and Reassembly
    • 3.6   Adventures in Radioland
      • 3.6.1   Privacy
      • 3.6.2   Collisions
      • 3.6.3   Hidden Nodes
      • 3.6.4   Band Width
      • 3.6.5   Cost
      • 3.6.6   Multipath
      • 3.6.7   Power
      • 3.6.8   Tangle
    • 3.7   Wi-Fi
      • 3.7.1   Wi-Fi and Collisions
      • 3.7.2   Dynamic Rate Scaling
      • 3.7.3   Multiple Spatial Streams
      • 3.7.4   Access Points
      • 3.7.5   Wi-Fi Security
      • 3.7.6   Wi-Fi Monitoring
      • 3.7.7   Wi-Fi Polling Mode
      • 3.7.8   MANETs
    • 3.8   WiMAX and LTE
      • 3.8.1   Uplink Scheduling
      • 3.8.2   Ranging
      • 3.8.3   Network Entry
      • 3.8.4   Mobility
    • 3.9   Fixed Wireless
      • 3.9.1   Terrestrial Wireless
      • 3.9.2   Satellite Internet
    • 3.10   Epilog
    • 3.11   Exercises
  • 4   Links
    • 4.1   Encoding and Framing
      • 4.1.1   NRZ
      • 4.1.2   NRZI
      • 4.1.3   Manchester
      • 4.1.4   4B/5B
      • 4.1.5   Framing
    • 4.2   Time-Division Multiplexing
      • 4.2.1   T-Carrier Lines
      • 4.2.2   SONET
      • 4.2.3   Optical Transport Network
      • 4.2.4   Other Optical Fiber
    • 4.3   Epilog
    • 4.4   Exercises
  • 5   Packets
    • 5.1   Packet Delay
      • 5.1.1   Delay examples
      • 5.1.2   Bandwidth × Delay
    • 5.2   Packet Delay Variability
    • 5.3   Packet Size
      • 5.3.1   Error Rates and Packet Size
      • 5.3.2   Packet Size and Real-Time Traffic
    • 5.4   Error Detection
      • 5.4.1   Cyclical Redundancy Check: CRC
      • 5.4.2   Error-Correcting Codes
    • 5.5   Epilog
    • 5.6   Exercises
  • 6   Abstract Sliding Windows
    • 6.1   Building Reliable Transport: Stop-and-Wait
      • 6.1.1   Packet Loss
      • 6.1.2   Sorcerer’s Apprentice Bug
      • 6.1.3   Flow Control
    • 6.2   Sliding Windows
      • 6.2.1   Bandwidth × Delay
      • 6.2.2   The Receiver Side
      • 6.2.3   Loss Recovery Under Sliding Windows
    • 6.3   Linear Bottlenecks
      • 6.3.1   Simple fixed-window-size analysis
      • 6.3.2   RTT Calculations
      • 6.3.3   Graphs at the Congestion Knee
      • 6.3.4   Simple Packet-Based Sliding-Windows Implementation
    • 6.4   Epilog
    • 6.5   Exercises
  • 7   IP version 4
    • 7.1   The IPv4 Header
    • 7.2   Interfaces
      • 7.2.1   Multihomed hosts
    • 7.3   Special Addresses
      • 7.3.1   Multicast addresses
    • 7.4   Fragmentation
    • 7.5   The Classless IP Delivery Algorithm
    • 7.6   IPv4 Subnets
      • 7.6.1   Subnet Example
      • 7.6.2   Links between subnets
      • 7.6.3   Subnets versus Switching
    • 7.7   Network Address Translation
      • 7.7.1   NAT Problems
      • 7.7.2   Middleboxes
    • 7.8   DNS
      • 7.8.1   nslookup
      • 7.8.2   Other DNS Records
      • 7.8.3   DNS and CDNs
    • 7.9   Address Resolution Protocol: ARP
      • 7.9.1   ARP Finer Points
      • 7.9.2   ARP Security
      • 7.9.3   ARP Failover
      • 7.9.4   Detecting Sniffers
      • 7.9.5   ARP and multihomed hosts
    • 7.10   Dynamic Host Configuration Protocol (DHCP)
      • 7.10.1   NAT, DHCP and the Small Office
      • 7.10.2   DHCP and Routers
    • 7.11   Internet Control Message Protocol
      • 7.11.1   Traceroute and Time Exceeded
      • 7.11.2   Redirects
      • 7.11.3   Router Solicitation
    • 7.12   Unnumbered Interfaces
    • 7.13   Mobile IP
      • 7.13.1   IP-in-IP Encapsulation
    • 7.14   Epilog
    • 7.15   Exercises
  • 8   IP version 6
    • 8.1   The IPv6 Header
    • 8.2   IPv6 Addresses
      • 8.2.1   Interface identifiers
      • 8.2.2   Link-local addresses
      • 8.2.3   Anycast addresses
    • 8.3   Network Prefixes
    • 8.4   IPv6 Multicast
    • 8.5   IPv6 Extension Headers
      • 8.5.1   Hop-by-Hop Options Header
      • 8.5.2   Destination Options Header
      • 8.5.3   Routing Header
      • 8.5.4   IPv6 Fragment Header
      • 8.5.5   General Extension-Header Issues
    • 8.6   Neighbor Discovery
      • 8.6.1   Router Discovery
      • 8.6.2   Prefix Discovery
      • 8.6.3   Neighbor Solicitation
      • 8.6.4   Security and Neighbor Discovery
    • 8.7   IPv6 Host Address Assignment
      • 8.7.1   Duplicate Address Detection
      • 8.7.2   Stateless Autoconfiguration (SLAAC)
      • 8.7.3   DHCPv6
    • 8.8   Globally Exposed Addresses
    • 8.9   ICMPv6
      • 8.9.1   Node Information Messages
    • 8.10   IPv6 Subnets
      • 8.10.1   Subnets and /64
    • 8.11   Using IPv6 and IPv4 Together
    • 8.12   IPv6 Examples Without a Router
      • 8.12.1   ping6
      • 8.12.2   TCP connections using link-local addresses
      • 8.12.3   Manual address configuration
    • 8.13   IPv6 Connectivity via Tunneling
      • 8.13.1   IPv6 firewalls
      • 8.13.2   Setting up a router
    • 8.14   IPv6-to-IPv4 Connectivity
    • 8.15   Epilog
    • 8.16   Exercises
  • 9   Routing-Update Algorithms
    • 9.1   Distance-Vector Routing-Update Algorithm
      • 9.1.1   Distance-Vector Update Rules
      • 9.1.2   Example 1
      • 9.1.3   Example 2
      • 9.1.4   Example 3
      • 9.1.5   Example 4
    • 9.2   Distance-Vector Slow-Convergence Problem
      • 9.2.1   Slow-Convergence Fixes
    • 9.3   Observations on Minimizing Route Cost
    • 9.4   Loop-Free Distance Vector Algorithms
      • 9.4.1   DSDV
      • 9.4.2   AODV
      • 9.4.3   HWMP
      • 9.4.4   EIGRP
    • 9.5   Link-State Routing-Update Algorithm
      • 9.5.1   Shortest-Path-First Algorithm
    • 9.6   Routing on Other Attributes
    • 9.7   ECMP
    • 9.8   Epilog
    • 9.9   Exercises
  • 10   Large-Scale IP Routing
    • 10.1   Classless Internet Domain Routing: CIDR
    • 10.2   Hierarchical Routing
    • 10.3   Legacy Routing
    • 10.4   Provider-Based Routing
      • 10.4.1   Internet Exchange Points
      • 10.4.2   CIDR and Staying Out of Jail
      • 10.4.3   Hierarchical Routing via Providers
      • 10.4.4   IP Geolocation
    • 10.5   Geographical Routing
    • 10.6   Border Gateway Protocol, BGP
      • 10.6.1   AS-paths
      • 10.6.2   AS-Paths and Route Aggregation
      • 10.6.3   Transit Traffic
      • 10.6.4   BGP Filtering and Routing Policies
      • 10.6.5   BGP Path attributes
      • 10.6.6   BGP and Traffic Engineering
      • 10.6.7   BGP and Anycast
      • 10.6.8   BGP Relationships
      • 10.6.9   Examples of BGP Instability
    • 10.7   Epilog
    • 10.8   Exercises
  • 11   UDP Transport
    • 11.1   User Datagram Protocol – UDP
      • 11.1.1   QUIC
      • 11.1.2   DCCP
      • 11.1.3   UDP Simplex-Talk
      • 11.1.4   netcat
      • 11.1.5   Binary Data
    • 11.2   Trivial File Transport Protocol, TFTP
    • 11.3   Fundamental Transport Issues
      • 11.3.1   Old Duplicate Packets
      • 11.3.2   Lost Final ACK
      • 11.3.3   Duplicated Connection Request
      • 11.3.4   Reboots
    • 11.4   Other TFTP notes
      • 11.4.1   TFTP and the Sorcerer
      • 11.4.2   TFTP States
      • 11.4.3   TFTP Throughput
    • 11.5   Remote Procedure Call (RPC)
      • 11.5.1   Network File System
      • 11.5.2   Sun RPC
      • 11.5.3   Serial Execution
      • 11.5.4   RPC Refinements
    • 11.6   Epilog
    • 11.7   Exercises
  • 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.6.1   The TCP Client
      • 12.6.2   netcat again
    • 12.7   TCP state diagram
      • 12.7.1   Closing a connection
      • 12.7.2   Calling close()
    • 12.8   TCP Old Duplicates
    • 12.9   TIMEWAIT
    • 12.10   The Three-Way Handshake Revisited
      • 12.10.1   ISNs and spoofing
    • 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.22.1   MPTCP
      • 12.22.2   SCTP
      • 12.22.3   DCCP
      • 12.22.4   QUIC Revisited
    • 12.23   Epilog
    • 12.24   Exercises
  • 13   TCP Reno and Congestion Management
    • 13.1   Basics of TCP Congestion Management
      • 13.1.1   The Somewhat-Steady State
    • 13.2   Slow Start
      • 13.2.1   TCP Reno Per-ACK Responses
      • 13.2.2   Threshold Slow Start
      • 13.2.3   Slow-Start Multiple Drop Example
      • 13.2.4   Summary of TCP so far
    • 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.7.1   TCP Queue Sizes
    • 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.1.1   Priority Queuing
    • 14.2   Bottleneck Links with Competition
      • 14.2.1   Example 1: linear bottleneck
      • 14.2.2   Example 2: router competition
      • 14.2.3   Example 3: competition and queue utilization
      • 14.2.4   Example 4: cross traffic and RTT variation
      • 14.2.5   Example 5: dynamic bottlenecks
      • 14.2.6   Packet Pairs
    • 14.3   TCP Fairness with Synchronized Losses
      • 14.3.1   Example 2: Faster additive increase
      • 14.3.2   Example 3: Longer RTT
      • 14.3.3   TCP RTT bias
      • 14.3.4   Synchronized-Loss Hypothesis
      • 14.3.5   Loss Synchronization
      • 14.3.6   Extreme RTT Ratios
    • 14.4   Notions of Fairness
      • 14.4.1   Max-Min Fairness
      • 14.4.2   Proportional Fairness
    • 14.5   TCP Reno loss rate versus cwnd
      • 14.5.1   Irregular teeth
      • 14.5.2   Unsynchronized TCP Losses
    • 14.6   TCP Friendliness
      • 14.6.1   TFRC
      • 14.6.2   RTP
      • 14.6.3   DCCP Congestion Control
    • 14.7   AIMD Revisited
      • 14.7.1   AIMD and Convergence to Fairness
    • 14.8   Active Queue Management
      • 14.8.1   Bufferbloat
      • 14.8.2   DECbit
      • 14.8.3   Explicit Congestion Notification (ECN)
      • 14.8.4   RED
      • 14.8.5   ADT
      • 14.8.6   CoDel
    • 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.6.1   TCP Vegas versus TCP Reno
    • 15.7   FAST TCP
    • 15.8   TCP Westwood
      • 15.8.1   ACK Compression and Westwood+
    • 15.9   TCP Illinois
    • 15.10   Compound TCP
    • 15.11   TCP Veno
    • 15.12   TCP Hybla
    • 15.13   DCTCP
      • 15.13.1   TCP Incast
    • 15.14   H-TCP
    • 15.15   TCP CUBIC
    • 15.16   TCP BBR
    • 15.17   Epilog
    • 15.18   Exercises
  • 16   Network Simulations: ns-2
    • 16.1   The ns-2 simulator
      • 16.1.1   Using ns-2
    • 16.2   A Single TCP Sender
      • 16.2.1   Graph of cwnd v time
      • 16.2.2   The Trace File
      • 16.2.3   Single Losses
      • 16.2.4   Reading the Tracefile in Python
      • 16.2.5   The nam Animation
      • 16.2.6   Single-sender Throughput Experiments
    • 16.3   Two TCP Senders Competing
      • 16.3.1   The Tcl Script
      • 16.3.2   Equal Delays
      • 16.3.3   Unequal Delays
      • 16.3.4   Phase Effects
      • 16.3.5   Minimizing Phase Effects
      • 16.3.6   Phase Effects and overhead
      • 16.3.7   Phase Effects and telnet traffic
      • 16.3.8   overhead versus telnet
      • 16.3.9   The RTT Problem
      • 16.3.10   Raising the Bandwidth
    • 16.4   TCP Loss Events and Synchronized Losses
      • 16.4.1   Some TCP Reno cwnd graphs
      • 16.4.2   SACK TCP and Avoiding Loss Anomalies
      • 16.4.3   Loss rate versus cwnd: part 2
    • 16.5   TCP Reno versus TCP Vegas
    • 16.6   Wireless Simulation
    • 16.7   Epilog
    • 16.8   Exercises
  • 17   The ns-3 Network Simulator
    • 17.1   Installing and Running ns-3
      • 17.1.1   Running a Script
      • 17.1.2   Compilation Errors
    • 17.2   A Single TCP Sender
      • 17.2.1   Running the Script
      • 17.2.2   The Ascii Tracefile
      • 17.2.3   Unexpected Timeouts and Other Phenomena
    • 17.3   Wireless
      • 17.3.1   Tracefile Analysis
      • 17.3.2   AODV Performance
    • 17.4   Exercises
  • 18   Mininet
    • 18.1   Installing Mininet
    • 18.2   A Simple Mininet Example
      • 18.2.1   Running Commands on Nodes
    • 18.3   Multiple Switches in a Line
      • 18.3.1   Running a webserver
    • 18.4   IP Routers in a Line
    • 18.5   IP Routers With Simple Distance-Vector Implementation
      • 18.5.1   Multicast Programming
      • 18.5.2   The RIP Main Loop
    • 18.6   TCP Competition: Reno vs Vegas
      • 18.6.1   Running A TCP Competition
    • 18.7   TCP Competition: Reno vs BBR
    • 18.8   Linux Traffic Control (tc)
    • 18.9   OpenFlow and the POX Controller
      • 18.9.1   hub.py
      • 18.9.2   l2_pairs.py
      • 18.9.3   l2_nx.py
      • 18.9.4   multitrunk.py
      • 18.9.5   loadbalance31.py
      • 18.9.6   l2_multi.py
    • 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.5.1   Weighted Fair Queuing
      • 19.5.2   Different Packet Sizes and Virtual Finishing Times
      • 19.5.3   Bit-by-bit Round Robin
      • 19.5.4   The GPS Model
      • 19.5.5   The Quantum Algorithm
      • 19.5.6   Stochastic Fair Queuing
    • 19.6   Applications of Fair Queuing
      • 19.6.1   Fair Queuing and Bufferbloat
    • 19.7   Hierarchical Queuing
      • 19.7.1   Generic Hierarchical Queuing
      • 19.7.2   Hierarchical Examples
    • 19.8   Hierarchical Weighted Fair Queuing
      • 19.8.1   A Hierarchical Weighted Fair Queuing Algorithm
    • 19.9   Token Bucket Filters
      • 19.9.1   Token Bucket Definition
      • 19.9.2   Token-Bucket Examples
      • 19.9.3   Multiple Token Buckets
      • 19.9.4   GCRA
    • 19.10   Applications of Token Bucket
      • 19.10.1   Guaranteeing VoIP Bandwidth
      • 19.10.2   Limiting Delay
    • 19.11   Token Bucket Queue Utilization
      • 19.11.1   Token Bucket Through One Router
      • 19.11.2   Token Bucket Through Multiple Routers
      • 19.11.3   Delay Constraints
    • 19.12   Hierarchical Token Bucket
    • 19.13   Fair Queuing / Token Bucket combinations
      • 19.13.1   CBQ
      • 19.13.2   Linux htb
      • 19.13.3   Parekh-Gallager Theorem
    • 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.3.1   Playback Buffer
      • 20.3.2   Streaming Video
      • 20.3.3   UDP and Real-Time Traffic
    • 20.4   Integrated Services / RSVP
    • 20.5   Global IP Multicast
    • 20.6   RSVP
      • 20.6.1   A CDN Alternative to IntServ
    • 20.7   Differentiated Services
      • 20.7.1   Expedited Forwarding
      • 20.7.2   Assured Forwarding
    • 20.8   RED with In and Out
    • 20.9   NSIS
    • 20.10   Comcast Congestion-Management System
    • 20.11   Real-time Transport Protocol (RTP)
      • 20.11.1   RTP Mixers
      • 20.11.2   RTP Packet Format
      • 20.11.3   RTP Control Protocol
      • 20.11.4   RTP and VoIP
    • 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.2.1   SNMP versions
    • 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.8.1   Multi-attribute Get()
      • 21.8.2   Set()
    • 21.9   MIB Browsing
    • 21.10   MIB-2
      • 21.10.1   The system Group
      • 21.10.2   Table definitions and the interfaces Group
      • 21.10.3   The ip Group
      • 21.10.4   The icmp Group
      • 21.10.5   The tcp Group
      • 21.10.6   The udp Group
      • 21.10.7   The snmp Group
    • 21.11   SNMPv1 communities and security
    • 21.12   SNMP and ASN.1 Encoding
      • 21.12.1   Primitive Types
      • 21.12.2   Composite Types
    • 21.13   SNMPv2
      • 21.13.1   SNMPv2 SMI and Data Types
      • 21.13.2   SNMPv2 Get Semantics
      • 21.13.3   SNMPv2 GetBulk()
      • 21.13.4   SNMPv2 Indexes
      • 21.13.5   TestAndIncr
      • 21.13.6   Table Augmentation
      • 21.13.7   SNMPv2 MIB Changes
      • 21.13.8   sysORTable
      • 21.13.9   IF-MIB and ifXTable
      • 21.13.10   ETHERLIKE-MIB
      • 21.13.11   IP-MIB and IP-Forward MIB
      • 21.13.12   TCP-MIB
    • 21.14   Table Row Creation
      • 21.14.1   RMON
      • 21.14.2   SNMPv2 RowStatus
      • 21.14.3   PING-MIB
    • 21.15   SNMPv3
      • 21.15.1   What Could Possibly Go Wrong?
      • 21.15.2   Cryptographic Fundamentals
      • 21.15.3   SNMPv3 Engines
      • 21.15.4   Message Authentication
      • 21.15.5   Passwords and Keys
      • 21.15.6   Message Signing
      • 21.15.7   Key Changes
      • 21.15.8   Creating Additional Users
      • 21.15.9   VACM for SNMPv3
    • 21.16   Exercises
  • 22   Security
    • 22.1   Code-Execution Intrusion
      • 22.1.1   The Morris Worm
      • 22.1.2   Christmas Day Attack
    • 22.2   Stack Buffer Overflow
      • 22.2.1   Return to libc
      • 22.2.2   An Actual Stack-Overflow Example
      • 22.2.3   Defenses Against Buffer Overflows
    • 22.3   Heap Buffer Overflow
      • 22.3.1   A Linux heap vulnerability
      • 22.3.2   A JPEG heap vulnerability
      • 22.3.3   Cross-Site Scripting (XSS)
      • 22.3.4   SQL Injection
    • 22.4   Network Intrusion Detection
      • 22.4.1   Evasion
    • 22.5   Cryptographic Goals
      • 22.5.1   Alice and Bob
    • 22.6   Secure Hashes
      • 22.6.1   Secure Hashes and Authentication
      • 22.6.2   Password Hashes
      • 22.6.3   CHAP
      • 22.6.4   SCRAM
    • 22.7   Shared-Key Encryption
      • 22.7.1   Session Keys
      • 22.7.2   Block Ciphers
      • 22.7.3   Cipher Modes
      • 22.7.4   Stream Ciphers
      • 22.7.5   Block-cipher-based stream ciphers
      • 22.7.6   Encryption and Authentication
      • 22.7.7   Wi-Fi WEP Encryption Failure
    • 22.8   Diffie-Hellman-Merkle Exchange
      • 22.8.1   Fast Arithmetic
      • 22.8.2   Simultaneous Authentication of Equals
    • 22.9   Public-Key Encryption
      • 22.9.1   RSA
      • 22.9.2   Forward Secrecy
      • 22.9.3   Trust and the Man in the Middle
      • 22.9.4   End-to-End Encryption
    • 22.10   SSH and TLS
      • 22.10.1   SSH
      • 22.10.2   TLS
      • 22.10.3   A TLS Programming Example
    • 22.11   IPsec
      • 22.11.1   Security Associations
    • 22.12   RSA Key Examples
      • 22.12.1   Breaking the key
    • 22.13   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
    No review for this book yet, be the first to review.
      No comment for this book yet, be the first to comment
      You May Also Like