Free

An Introduction to Computer Networks, edition 1.9.16

By Peter L Dordal
Free
The publisher has enabled DRM protection, which means that you need to use the BookFusion iOS, Android or Web app to read this eBook. This eBook cannot be used outside of the BookFusion platform.
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