HTTP the Definitive Guide

HTTP the Definitive Guide
HTTP the Definitive Guide

BookInfo

ISBN: 9781565925090Number of Pages: 656
Publisher: O’reilly, IncorporatedBook Title: Http: the Definitive Guide : the Definitive Guide
Publication Year: 2002Target Audience: Scholarly & Professional
Author: Anshu Aggarwal, Marjorie Sayer, Sailu Reddy, David Gourley, Brian TottyFormat: Trade Paperback

Abstract

HTTP the Definitive Guide is written by David Gourley and Brian Totty. This Book explains in detail how to use HTTP to develop web-based applications, how the core internet protocol interacts with the architecture building blocks, and how to correctly implement Internet clients and servers.

The core content of the HTTP Definitive guide , which is to understand the working principle of the web and how to apply this knowledge to web programming and management. It mainly covers the technical operation mode, motivation, performance and objectives of HTTP and some related technical problems. The HTTP Definitive guide is suitable for all those who want to understand HTTP and the underlying structure of the web.

In this book, it try to sort out some interrelated and often misunderstood rules in HTTP, and write a series of chapters based on various topics to introduce the characteristics of HTTP in all aspects. Throughout the book, it explained in detail why HTTP does this, not just how it does it.

In addition, in order to save the time of searching for references, it also introduced the important non HTTP technologies that are necessary for many HTTP applications to work properly. In the easily organized appendix, you can find alphabetical references to headers that form the basis of the most common HTTP text. We hope that this conceptual design will help readers to use HTTP.

About the Author


David Gourley is the CTO of Endeca, responsible for the research and development of Endeca products. The Company Endeca provide some new ways for enterprise data navigation and research. Before working in Endeca, David was a member of Inktomi’s basic engineering team. He helped develop Inktomi’s Internet search database and was the main developer of Inktomi’s Web cache.
David received his bachelor’s degree in computer science from the University of California, Berkeley. He also holds several patents in Web technology.


Brian Totty recently served as the Vice President of the R&D Department of Inktomi, where he was responsible for Web caching, Streaming media and Internet search technologies. He was a scientist at Silicon Graphics, where he designed and optimized software for high-performance networks and supercomputer systems. Before that, he was an engineer in the advanced technology group of Apple.
Brian received his doctor’s degree in computer science from the University of Illinois Urbana Champaign, and his bachelor’s degree in computer science and electronic engineering from MIT, where he won the Organick Award for computer system research. He also developed and taught some award-winning courses on Internet technology for the University of California extension system.

Marjorie Sayer is responsible for writing web caching software in Inktomi. After receiving his master’s degree and doctor’s degree in mathematics from the University of California, Berkeley, he has been committed to the reform of mathematics curriculum. Since 1990, he has been writing about energy resource management, parallel system software, telephone and network.

Sailu Reddy is currently responsible for the development of embedded performance enhanced HTTP proxy in Inktomi. Sailu has been engaged in the development of complex software systems for 12 years. Since 1995, Sailu has gone deep into the research and development of Web architecture. He is the core engineer of Netscape’s first web server, web proxy products, and later generations of products. He has technical experience in HTTP application, data compression technology, database engine and cooperation management. Sailu obtained a master’s degree in information systems from the University of Arizona and holds a number of patents in Web technology.

Anshu Aggarwal is the engineering director of Inktomi. He leads the protocol processing engineering group of Inktomi’s Web cache products and has been involved in Inktomi’s Web technology design since 1997. Anshu received his master’s and doctor’s degrees in computer science from the University of Colorado Boulder, and is engaged in research on memory consistency technology of distributed multiprocessors. He also holds master’s and bachelor’s degrees in electronic engineering. Anshu has written many technical papers and has two patents.

HTTP the Definitive Guide PDF version is avaliable Later ,Please come back soon.

Table of Contents

Preface
Running Example: Joe’s Hardware Store
Chapter-by-Chapter Guide
Typographic Conventions
Comments and Questions
Acknowledgments
I. HTTP: The Web’s Foundation

  1. Overview of HTTP
    1.1. HTTP: The Internet’s Multimedia Courier
    1.2. Web Clients and Servers
    1.3. Resources
    1.3.1. Media Types
    1.3.2. URIs
    1.3.3. URLs
    1.3.4. URNs
    1.4. Transactions
    1.4.1. Methods
    1.4.2. Status Codes
    1.4.3. Web Pages Can Consist of Multiple Objects
    1.5. Messages
    1.5.1. Simple Message Example
    1.6. Connections
    1.6.1. TCP/IP
    1.6.2. Connections, IP Addresses, and Port Numbers
    1.6.3. A Real Example Using Telnet
    1.7. Protocol Versions
    1.8. Architectural Components of the Web
    1.8.1. Proxies
    1.8.2. Caches
    1.8.3. Gateways
    1.8.4. Tunnels
    1.8.5. Agents
    1.9. The End of the Beginning
    1.10. For More Information
    1.10.1. HTTP Protocol Information
    1.10.2. Historical Perspective
    1.10.3. Other World Wide Web Information
  2. URLs and Resources
    2.1. Navigating the Internet’s Resources
    2.1.1. The Dark Days Before URLs
    2.2. URL Syntax
    2.2.1. Schemes: What Protocol to Use
    2.2.2. Hosts and Ports
    2.2.3. Usernames and Passwords
    2.2.4. Paths
    2.2.5. Parameters
    2.2.6. Query Strings
    2.2.7. Fragments
    2.3. URL Shortcuts
    2.3.1. Relative URLs
    2.3.1.1. Base URLs
    2.3.1.2. Resolving relative references
    2.3.2. Expandomatic URLs
    2.4. Shady Characters
    2.4.1. The URL Character Set
    2.4.2. Encoding Mechanisms
    2.4.3. Character Restrictions
    2.4.4. A Bit More
    2.5. A Sea of Schemes
    2.6. The Future
    2.6.1. If Not Now, When?
    2.7. For More Information
  3. HTTP Messages
    3.1. The Flow of Messages
    3.1.1. Messages Commute Inbound to the Origin Server
    3.1.2. Messages Flow Downstream
    3.2. The Parts of a Message
    3.2.1. Message Syntax
    3.2.2. Start Lines
    3.2.2.1. Request line
    3.2.2.2. Response line
    3.2.2.3. Methods
    3.2.2.4. Status codes
    3.2.2.5. Reason phrases
    3.2.2.6. Version numbers
    3.2.3. Headers
    3.2.3.1. Header classifications
    3.2.3.2. Header continuation lines
    3.2.4. Entity Bodies
    3.2.5. Version 0.9 Messages
    3.3. Methods
    3.3.1. Safe Methods
    3.3.2. GET
    3.3.3. HEAD
    3.3.4. PUT
    3.3.5. POST
    3.3.6. TRACE
    3.3.7. OPTIONS
    3.3.8. DELETE
    3.3.9. Extension Methods
    3.4. Status Codes
    3.4.1. 100-199: Informational Status Codes
    3.4.1.1. Clients and 100 Continue
    3.4.1.2. Servers and 100 Continue
    3.4.1.3. Proxies and 100 Continue
    3.4.2. 200-299: Success Status Codes
    3.4.3. 300-399: Redirection Status Codes
    3.4.4. 400-499: Client Error Status Codes
    3.4.5. 500-599: Server Error Status Codes
    3.5. Headers
    3.5.1. General Headers
    3.5.1.1. General caching headers
    3.5.2. Request Headers
    3.5.2.1. Accept headers
    3.5.2.2. Conditional request headers
    3.5.2.3. Request security headers
    3.5.2.4. Proxy request headers
    3.5.3. Response Headers
    3.5.3.1. Negotiation headers
    3.5.3.2. Response security headers
    3.5.4. Entity Headers
    3.5.4.1. Content headers
    3.5.4.2. Entity caching headers
    3.6. For More Information
  4. Connection Management
    4.1. TCP Connections
    4.1.1. TCP Reliable Data Pipes
    4.1.2. TCP Streams Are Segmented and Shipped by IP Packets
    4.1.3. Keeping TCP Connections Straight
    4.1.4. Programming with TCP Sockets
    4.2. TCP Performance Considerations
    4.2.1. HTTP Transaction Delays
    4.2.2. Performance Focus Areas
    4.2.3. TCP Connection Handshake Delays
    4.2.4. Delayed Acknowledgments
    4.2.5. TCP Slow Start
    4.2.6. Nagle’s Algorithm and TCP_NODELAY
    4.2.7. TIME_WAIT Accumulation and Port Exhaustion
    4.3. HTTP Connection Handling
    4.3.1. The Oft-Misunderstood Connection Header
    4.3.2. Serial Transaction Delays
    4.4. Parallel Connections
    4.4.1. Parallel Connections May Make Pages Load Faster
    4.4.2. Parallel Connections Are Not Always Faster
    4.4.3. Parallel Connections May “Feel” Faster
    4.5. Persistent Connections
    4.5.1. Persistent Versus Parallel Connections
    4.5.2. HTTP/1.0+ Keep-Alive Connections
    4.5.3. Keep-Alive Operation
    4.5.4. Keep-Alive Options
    4.5.5. Keep-Alive Connection Restrictions and Rules
    4.5.6. Keep-Alive and Dumb Proxies
    4.5.6.1. The Connection header and blind relays
    4.5.6.2. Proxies and hop-by-hop headers
    4.5.7. The Proxy-Connection Hack
    4.5.8. HTTP/1.1 Persistent Connections
    4.5.9. Persistent Connection Restrictions and Rules
    4.6. Pipelined Connections
    4.7. The Mysteries of Connection Close
    4.7.1. “At Will” Disconnection
    4.7.2. Content-Length and Truncation
    4.7.3. Connection Close Tolerance, Retries, and Idempotency
    4.7.4. Graceful Connection Close
    4.7.4.1. Full and half closes
    4.7.4.2. TCP close and reset errors
    4.7.4.3. Graceful close
    4.8. For More Information
    4.8.1. HTTP Connections
    4.8.2. HTTP Performance Issues
    4.8.3. TCP/IP
    II. HTTP Architecture
  5. Web Servers
    5.1. Web Servers Come in All Shapes and Sizes
    5.1.1. Web Server Implementations
    5.1.2. General-Purpose Software Web Servers
    5.1.3. Web Server Appliances
    5.1.4. Embedded Web Servers
    5.2. A Minimal Perl Web Server
    5.3. What Real Web Servers Do
    5.4. Step 1: Accepting Client Connections
    5.4.1. Handling New Connections
    5.4.2. Client Hostname Identification
    5.4.3. Determining the Client User Through ident
    5.5. Step 2: Receiving Request Messages
    5.5.1. Internal Representations of Messages
    5.5.2. Connection Input/Output Processing Architectures
    5.6. Step 3: Processing Requests
    5.7. Step 4: Mapping and Accessing Resources
    5.7.1. Docroots
    5.7.1.1. Virtually hosted docroots
    5.7.1.2. User home directory docroots
    5.7.2. Directory Listings
    5.7.3. Dynamic Content Resource Mapping
    5.7.4. Server-Side Includes (SSI)
    5.7.5. Access Controls
    5.8. Step 5: Building Responses
    5.8.1. Response Entities
    5.8.2. MIME Typing
    5.8.3. Redirection
    5.9. Step 6: Sending Responses
    5.10. Step 7: Logging
    5.11. For More Information
  6. Proxies
    6.1. Web Intermediaries
    6.1.1. Private and Shared Proxies
    6.1.2. Proxies Versus Gateways
    6.2. Why Use Proxies?
    6.3. Where Do Proxies Go?
    6.3.1. Proxy Server Deployment
    6.3.2. Proxy Hierarchies
    6.3.2.1. Proxy hierarchy content routing
    6.3.3. How Proxies Get Traffic
    6.4. Client Proxy Settings
    6.4.1. Client Proxy Configuration: Manual
    6.4.2. Client Proxy Configuration: PAC Files
    6.4.3. Client Proxy Configuration: WPAD
    6.5. Tricky Things About Proxy Requests
    6.5.1. Proxy URIs Differ from Server URIs
    6.5.2. The Same Problem with Virtual Hosting
    6.5.3. Intercepting Proxies Get Partial URIs
    6.5.4. Proxies Can Handle Both Proxy and Server Requests
    6.5.5. In-Flight URI Modification
    6.5.6. URI Client Auto-Expansion and Hostname Resolution
    6.5.7. URI Resolution Without a Proxy
    6.5.8. URI Resolution with an Explicit Proxy
    6.5.9. URI Resolution with an Intercepting Proxy
    6.6. Tracing Messages
    6.6.1. The Via Header
    6.6.1.1. Via syntax
    6.6.1.2. Via request and response paths
    6.6.1.3. Via and gateways
    6.6.1.4. The Server and Via headers
    6.6.1.5. Privacy and security implications of Via
    6.6.2. The TRACE Method
    6.6.2.1. Max-Forwards
    6.7. Proxy Authentication
    6.8. Proxy Interoperation
    6.8.1. Handling Unsupported Headers and Methods
    6.8.2. OPTIONS: Discovering Optional Feature Support
    6.8.3. The Allow Header
    6.9. For More Information
  7. Caching
    7.1. Redundant Data Transfers
    7.2. Bandwidth Bottlenecks
    7.3. Flash Crowds
    7.4. Distance Delays
    7.5. Hits and Misses
    7.5.1. Revalidations
    7.5.2. Hit Rate
    7.5.3. Byte Hit Rate
    7.5.4. Distinguishing Hits and Misses
    7.6. Cache Topologies
    7.6.1. Private Caches
    7.6.2. Public Proxy Caches
    7.6.3. Proxy Cache Hierarchies
    7.6.4. Cache Meshes, Content Routing, and Peering
    7.7. Cache Processing Steps
    7.7.1. Step 1: Receiving
    7.7.2. Step 2: Parsing
    7.7.3. Step 3: Lookup
    7.7.4. Step 4: Freshness Check
    7.7.5. Step 5: Response Creation
    7.7.6. Step 6: Sending
    7.7.7. Step 7: Logging
    7.7.8. Cache Processing Flowchart
    7.8. Keeping Copies Fresh
    7.8.1. Document Expiration
    7.8.2. Expiration Dates and Ages
    7.8.3. Server Revalidation
    7.8.4. Revalidation with Conditional Methods
    7.8.5. If-Modified-Since: Date Revalidation
    7.8.6. If-None-Match: Entity Tag Revalidation
    7.8.7. Weak and Strong Validators
    7.8.8. When to Use Entity Tags and Last-Modified Dates
    7.9. Controlling Cachability
    7.9.1. No-Cache and No-Store Headers
    7.9.2. Max-Age Response Headers
    7.9.3. Expires Response Headers
    7.9.4. Must-Revalidate Response Headers
    7.9.5. Heuristic Expiration
    7.9.6. Client Freshness Constraints
    7.9.7. Cautions
    7.10. Setting Cache Controls
    7.10.1. Controlling HTTP Headers with Apache
    7.10.2. Controlling HTML Caching Through HTTP-EQUIV
    7.11. Detailed Algorithms
    7.11.1. Age and Freshness Lifetime
    7.11.2. Age Computation
    7.11.2.1. Apparent age is based on the Date header
    7.11.2.2. Hop-by-hop age calculations
    7.11.2.3. Compensating for network delays
    7.11.3. Complete Age-Calculation Algorithm
    7.11.4. Freshness Lifetime Computation
    7.11.5. Complete Server-Freshness Algorithm
    7.12. Caches and Advertising
    7.12.1. The Advertiser’s Dilemma
    7.12.2. The Publisher’s Response
    7.12.3. Log Migration
    7.12.4. Hit Metering and Usage Limiting
    7.13. For More Information
  8. Integration Points: Gateways, Tunnels, and Relays
    8.1. Gateways
    8.1.1. Client-Side and Server-Side Gateways
    8.2. Protocol Gateways
    8.2.1. HTTP/*: Server-Side Web Gateways
    8.2.2. HTTP/HTTPS: Server-Side Security Gateways
    8.2.3. HTTPS/HTTP: Client-Side Security Accelerator Gateways
    8.3. Resource Gateways
    8.3.1. Common Gateway Interface (CGI)
    8.3.2. Server Extension APIs
    8.4. Application Interfaces and Web Services
    8.5. Tunnels
    8.5.1. Establishing HTTP Tunnels with CONNECT
    8.5.1.1. CONNECT requests
    8.5.1.2. CONNECT responses
    8.5.2. Data Tunneling, Timing, and Connection Management
    8.5.3. SSL Tunneling
    8.5.4. SSL Tunneling Versus HTTP/HTTPS Gateways
    8.5.5. Tunnel Authentication
    8.5.6. Tunnel Security Considerations
    8.6. Relays
    8.7. For More Information
  9. Web Robots
    9.1. Crawlers and Crawling
    9.1.1. Where to Start: The “Root Set”
    9.1.2. Extracting Links and Normalizing Relative Links
    9.1.3. Cycle Avoidance
    9.1.4. Loops and Dups
    9.1.5. Trails of Breadcrumbs
    9.1.6. Aliases and Robot Cycles
    9.1.7. Canonicalizing URLs
    9.1.8. Filesystem Link Cycles
    9.1.9. Dynamic Virtual Web Spaces
    9.1.10. Avoiding Loops and Dups
    9.2. Robotic HTTP
    9.2.1. Identifying Request Headers
    9.2.2. Virtual Hosting
    9.2.3. Conditional Requests
    9.2.4. Response Handling
    9.2.4.1. Status codes
    9.2.4.2. Entities
    9.2.5. User-Agent Targeting
    9.3. Misbehaving Robots
    9.4. Excluding Robots
    9.4.1. The Robots Exclusion Standard
    9.4.2. Web Sites and robots.txt Files
    9.4.2.1. Fetching robots.txt
    9.4.2.2. Response codes
    9.4.3. robots.txt File Format
    9.4.3.1. The User-Agent line
    9.4.3.2. The Disallow and Allow lines
    9.4.3.3. Disallow/Allow prefix matching
    9.4.4. Other robots.txt Wisdom
    9.4.5. Caching and Expiration of robots.txt
    9.4.6. Robot Exclusion Perl Code
    9.4.7. HTML Robot-Control META Tags
    9.4.7.1. Robot META directives
    9.4.7.2. Search engine META tags
    9.5. Robot Etiquette
    9.6. Search Engines
    9.6.1. Think Big
    9.6.2. Modern Search Engine Architecture
    9.6.3. Full-Text Index
    9.6.4. Posting the Query
    9.6.5. Sorting and Presenting the Results
    9.6.6. Spoofing
    9.7. For More Information
  10. HTTP-NG
    10.1. HTTP’s Growing Pains
    10.2. HTTP-NG Activity
    10.3. Modularize and Enhance
    10.4. Distributed Objects
    10.5. Layer 1: Messaging
    10.6. Layer 2: Remote Invocation
    10.7. Layer 3: Web Application
    10.8. WebMUX
    10.9. Binary Wire Protocol
    10.10. Current Status
    10.11. For More Information
    III. Identification, Authorization, and Security
  11. Client Identification and Cookies
    11.1. The Personal Touch
    11.2. HTTP Headers
    11.3. Client IP Address
    11.4. User Login
    11.5. Fat URLs
    11.6. Cookies
    11.6.1. Types of Cookies
    11.6.2. How Cookies Work
    11.6.3. Cookie Jar: Client-Side State
    11.6.3.1. Netscape Navigator cookies
    11.6.3.2. Microsoft Internet Explorer cookies
    11.6.4. Different Cookies for Different Sites
    11.6.4.1. Cookie Domain attribute
    11.6.4.2. Cookie Path attribute
    11.6.5. Cookie Ingredients
    11.6.6. Version 0 (Netscape) Cookies
    11.6.6.1. Version 0 Set-Cookie header
    11.6.6.2. Version 0 Cookie header
    11.6.7. Version 1 (RFC 2965) Cookies
    11.6.7.1. Version 1 Set-Cookie2 header
    11.6.7.2. Version 1 Cookie header
    11.6.7.3. Version 1 Cookie2 header and version negotiation
    11.6.8. Cookies and Session Tracking
    11.6.9. Cookies and Caching
    11.6.10. Cookies, Security, and Privacy
    11.7. For More Information
  12. Basic Authentication
    12.1. Authentication
    12.1.1. HTTP’s Challenge/Response Authentication Framework
    12.1.2. Authentication Protocols and Headers
    12.1.3. Security Realms
    12.2. Basic Authentication
    12.2.1. Basic Authentication Example
    12.2.2. Base-64 Username/Password Encoding
    12.2.3. Proxy Authentication
    12.3. The Security Flaws of Basic Authentication
    12.4. For More Information
  13. Digest Authentication
    13.1. The Improvements of Digest Authentication
    13.1.1. Using Digests to Keep Passwords Secret
    13.1.2. One-Way Digests
    13.1.3. Using Nonces to Prevent Replays
    13.1.4. The Digest Authentication Handshake
    13.2. Digest Calculations
    13.2.1. Digest Algorithm Input Data
    13.2.2. The Algorithms H(d) and KD(s,d)
    13.2.3. The Security-Related Data (A1)
    13.2.4. The Message-Related Data (A2)
    13.2.5. Overall Digest Algorithm
    13.2.6. Digest Authentication Session
    13.2.7. Preemptive Authorization
    13.2.7.1. Next nonce pregeneration
    13.2.7.2. Limited nonce reuse
    13.2.7.3. Synchronized nonce generation
    13.2.8. Nonce Selection
    13.2.9. Symmetric Authentication
    13.3. Quality of Protection Enhancements
    13.3.1. Message Integrity Protection
    13.3.2. Digest Authentication Headers
    13.4. Practical Considerations
    13.4.1. Multiple Challenges
    13.4.2. Error Handling
    13.4.3. Protection Spaces
    13.4.4. Rewriting URIs
    13.4.5. Caches
    13.5. Security Considerations
    13.5.1. Header Tampering
    13.5.2. Replay Attacks
    13.5.3. Multiple Authentication Mechanisms
    13.5.4. Dictionary Attacks
    13.5.5. Hostile Proxies and Man-in-the-Middle Attacks
    13.5.6. Chosen Plaintext Attacks
    13.5.7. Storing Passwords
    13.6. For More Information
  14. Secure HTTP
    14.1. Making HTTP Safe
    14.1.1. HTTPS
    14.2. Digital Cryptography
    14.2.1. The Art and Science of Secret Coding
    14.2.2. Ciphers
    14.2.3. Cipher Machines
    14.2.4. Keyed Ciphers
    14.2.5. Digital Ciphers
    14.3. Symmetric-Key Cryptography
    14.3.1. Key Length and Enumeration Attacks
    14.3.2. Establishing Shared Keys
    14.4. Public-Key Cryptography
    14.4.1. RSA
    14.4.2. Hybrid Cryptosystems and Session Keys
    14.5. Digital Signatures
    14.5.1. Signatures Are Cryptographic Checksums
    14.6. Digital Certificates
    14.6.1. The Guts of a Certificate
    14.6.2. X.509 v3 Certificates
    14.6.3. Using Certificates to Authenticate Servers
    14.7. HTTPS: The Details
    14.7.1. HTTPS Overview
    14.7.2. HTTPS Schemes
    14.7.3. Secure Transport Setup
    14.7.4. SSL Handshake
    14.7.5. Server Certificates
    14.7.6. Site Certificate Validation
    14.7.7. Virtual Hosting and Certificates
    14.8. A Real HTTPS Client
    14.8.1. OpenSSL
    14.8.2. A Simple HTTPS Client
    14.8.3. Executing Our Simple OpenSSL Client
    14.9. Tunneling Secure Traffic Through Proxies
    14.10. For More Information
    14.10.1. HTTP Security
    14.10.2. SSL and TLS
    14.10.3. Public-Key Infrastructure
    14.10.4. Digital Cryptography
    IV. Entities, Encodings, and Internationalization
  15. Entities and Encodings
    15.1. Messages Are Crates, Entities Are Cargo
    15.1.1. Entity Bodies
    15.2. Content-Length: The Entity’s Size
    15.2.1. Detecting Truncation
    15.2.2. Incorrect Content-Length
    15.2.3. Content-Length and Persistent Connections
    15.2.4. Content Encoding
    15.2.5. Rules for Determining Entity Body Length
    15.3. Entity Digests
    15.4. Media Type and Charset
    15.4.1. Character Encodings for Text Media
    15.4.2. Multipart Media Types
    15.4.3. Multipart Form Submissions
    15.4.4. Multipart Range Responses
    15.5. Content Encoding
    15.5.1. The Content-Encoding Process
    15.5.2. Content-Encoding Types
    15.5.3. Accept-Encoding Headers
    15.6. Transfer Encoding and Chunked Encoding
    15.6.1. Safe Transport
    15.6.2. Transfer-Encoding Headers
    15.6.3. Chunked Encoding
    15.6.3.1. Chunking and persistent connections
    15.6.3.2. Trailers in chunked messages
    15.6.4. Combining Content and Transfer Encodings
    15.6.5. Transfer-Encoding Rules
    15.7. Time-Varying Instances
    15.8. Validators and Freshness
    15.8.1. Freshness
    15.8.2. Conditionals and Validators
    15.9. Range Requests
    15.10. Delta Encoding
    15.10.1. Instance Manipulations, Delta Generators, and Delta Appliers
    15.11. For More Information
  16. Internationalization
    16.1. HTTP Support for International Content
    16.2. Character Sets and HTTP
    16.2.1. Charset Is a Character-to-Bits Encoding
    16.2.2. How Character Sets and Encodings Work
    16.2.3. The Wrong Charset Gives the Wrong Characters
    16.2.4. Standardized MIME Charset Values
    16.2.5. Content-Type Charset Header and META Tags
    16.2.6. The Accept-Charset Header
    16.3. Multilingual Character Encoding Primer
    16.3.1. Character Set Terminology
    16.3.2. Charset Is Poorly Named
    16.3.3. Characters
    16.3.4. Glyphs, Ligatures, and Presentation Forms
    16.3.5. Coded Character Sets
    16.3.5.1. US-ASCII: The mother of all character sets
    16.3.5.2. iso-8859
    16.3.5.3. JIS X 0201
    16.3.5.4. JIS X 0208 and JIS X 0212
    16.3.5.5. UCS
    16.3.6. Character Encoding Schemes
    16.3.6.1. 8-bit
    16.3.6.2. UTF-8
    16.3.6.3. iso-2022-jp
    16.3.6.4. euc-jp
    16.4. Language Tags and HTTP
    16.4.1. The Content-Language Header
    16.4.2. The Accept-Language Header
    16.4.3. Types of Language Tags
    16.4.4. Subtags
    16.4.5. Capitalization
    16.4.6. IANA Language Tag Registrations
    16.4.7. First Subtag: Namespace
    16.4.8. Second Subtag: Namespace
    16.4.9. Remaining Subtags: Namespace
    16.4.10. Configuring Language Preferences
    16.4.11. Language Tag Reference Tables
    16.5. Internationalized URIs
    16.5.1. Global Transcribability Versus Meaningful Characters
    16.5.2. URI Character Repertoire
    16.5.3. Escaping and Unescaping
    16.5.4. Escaping International Characters
    16.5.5. Modal Switches in URIs
    16.6. Other Considerations
    16.6.1. Headers and Out-of-Spec Data
    16.6.2. Dates
    16.6.3. Domain Names
    16.7. For More Information
    16.7.1. Appendixes
    16.7.2. Internet Internationalization
    16.7.3. International Standards
  17. Content Negotiation and Transcoding
    17.1. Content-Negotiation Techniques
    17.2. Client-Driven Negotiation
    17.3. Server-Driven Negotiation
    17.3.1. Content-Negotiation Headers
    17.3.2. Content-Negotiation Header Quality Values
    17.3.3. Varying on Other Headers
    17.3.4. Content Negotiation on Apache
    17.3.4.1. Using type-map files
    17.3.4.2. Using MultiViews
    17.3.5. Server-Side Extensions
    17.4. Transparent Negotiation
    17.4.1. Caching and Alternates
    17.4.2. The Vary Header
    17.5. Transcoding
    17.5.1. Format Conversion
    17.5.2. Information Synthesis
    17.5.3. Content Injection
    17.5.4. Transcoding Versus Static Pregeneration
    17.6. Next Steps
    17.7. For More Information
    V. Content Publishing and Distribution
  18. Web Hosting
    18.1. Hosting Services
    18.1.1. A Simple Example: Dedicated Hosting
    18.2. Virtual Hosting
    18.2.1. Virtual Server Request Lacks Host Information
    18.2.2. Making Virtual Hosting Work
    18.2.2.1. Virtual hosting by URL path
    18.2.2.2. Virtual hosting by port number
    18.2.2.3. Virtual hosting by IP address
    18.2.2.4. Virtual hosting by Host header
    18.2.3. HTTP/1.1 Host Headers
    18.2.3.1. Syntax and usage
    18.2.3.2. Missing Host headers
    18.2.3.3. Interpreting Host headers
    18.2.3.4. Host headers and proxies
    18.3. Making Web Sites Reliable
    18.3.1. Mirrored Server Farms
    18.3.2. Content Distribution Networks
    18.3.3. Surrogate Caches in CDNs
    18.3.4. Proxy Caches in CDNs
    18.4. Making Web Sites Fast
    18.5. For More Information
  19. Publishing Systems
    19.1. FrontPage Server Extensions for Publishing Support
    19.1.1. FrontPage Server Extensions
    19.1.2. FrontPage Vocabulary
    19.1.3. The FrontPage RPC Protocol
    19.1.3.1. Request
    19.1.3.2. Response
    19.1.4. FrontPage Security Model
    19.2. WebDAV and Collaborative Authoring
    19.2.1. WebDAV Methods
    19.2.2. WebDAV and XML
    19.2.3. WebDAV Headers
    19.2.4. WebDAV Locking and Overwrite Prevention
    19.2.5. The LOCK Method
    19.2.5.1. The opaquelocktoken scheme
    19.2.5.2. The XML element
    19.2.5.3. Lock refreshes and the Timeout header
    19.2.6. The UNLOCK Method
    19.2.7. Properties and META Data
    19.2.8. The PROPFIND Method
    19.2.9. The PROPPATCH Method
    19.2.10. Collections and Namespace Management
    19.2.11. The MKCOL Method
    19.2.12. The DELETE Method
    19.2.13. The COPY and MOVE Methods
    19.2.13.1. Overwrite header effect
    19.2.13.2. COPY/MOVE of properties
    19.2.13.3. Locked resources and COPY/MOVE
    19.2.14. Enhanced HTTP/1.1 Methods
    19.2.14.1. The PUT method
    19.2.14.2. The OPTIONS method
    19.2.15. Version Management in WebDAV
    19.2.16. Future of WebDAV
    19.3. For More Information
  20. Redirection and Load Balancing
    20.1. Why Redirect?
    20.2. Where to Redirect
    20.3. Overview of Redirection Protocols
    20.4. General Redirection Methods
    20.4.1. HTTP Redirection
    20.4.2. DNS Redirection
    20.4.2.1. DNS round robin
    20.4.2.2. Multiple addresses and round-robin address rotation
    20.4.2.3. DNS round robin for load balancing
    20.4.2.4. The impact of DNS caching
    20.4.2.5. Other DNS-based redirection algorithms
    20.4.3. Anycast Addressing
    20.4.4. IP MAC Forwarding
    20.4.5. IP Address Forwarding
    20.4.6. Network Element Control Protocol
    20.4.6.1. Messages
    20.5. Proxy Redirection Methods
    20.5.1. Explicit Browser Configuration
    20.5.2. Proxy Auto-configuration
    20.5.3. Web Proxy Autodiscovery Protocol
    20.5.3.1. PAC file autodiscovery
    20.5.3.2. WPAD algorithm
    20.5.3.3. CURL discovery using DHCP
    20.5.3.4. DNS A record lookup
    20.5.3.5. Retrieving the PAC file
    20.5.3.6. When to execute WPAD
    20.5.3.7. WPAD spoofing
    20.5.3.8. Timeouts
    20.5.3.9. Administrator considerations
    20.6. Cache Redirection Methods
    20.6.1. WCCP Redirection
    20.6.1.1. How WCCP redirection works
    20.6.1.2. WCCP2 messages
    20.6.1.3. Message components
    20.6.1.4. Service groups
    20.6.1.5. GRE packet encapsulation
    20.6.1.6. WCCP load balancing
    20.7. Internet Cache Protocol
    20.8. Cache Array Routing Protocol
    20.9. Hyper Text Caching Protocol
    20.9.1. HTCP Authentication
    20.9.2. Setting Caching Policies
    20.10. For More Information
  21. Logging and Usage Tracking
    21.1. What to Log?
    21.2. Log Formats
    21.2.1. Common Log Format
    21.2.2. Combined Log Format
    21.2.3. Netscape Extended Log Format
    21.2.4. Netscape Extended 2 Log Format
    21.2.5. Squid Proxy Log Format
    21.3. Hit Metering
    21.3.1. Overview
    21.3.2. The Meter Header
    21.4. A Word on Privacy
    21.5. For More Information
    VI. Appendixes
    A. URI Schemes
    B. HTTP Status Codes
    B.1. Status Code Classifications
    B.2. Status Codes
    C. HTTP Header Reference

1 thought on “HTTP the Definitive Guide

Comments are closed.