An Introduction to Computer Networks, edition 1.9.16
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.
Description
Contents
Reviews
Language
English
ISBN
0111010101
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
The book hasn't received reviews yet.