
BookInfo
ISBN: 9781565925090 | Number of Pages: 656 |
Publisher: O’reilly, Incorporated | Book Title: Http: the Definitive Guide : the Definitive Guide |
Publication Year: 2002 | Target Audience: Scholarly & Professional |
Author: Anshu Aggarwal, Marjorie Sayer, Sailu Reddy, David Gourley, Brian Totty | Format: 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
- 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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.