Download presentation
Presentation is loading. Please wait.
Published byAllison Barry Modified over 11 years ago
1
HTTP and Apache Roy T. Fielding eBuilt, Inc. The Apache Software Foundation fielding@apache.org
2
Overview HTTP Basics Apache httpd architecture Connection management (listening) Request Reading Finding a representation Conditional request evaluation Response Writing Connection management (closing) Future Improvements waka/2.0
3
Web architecture Layered-client-server Uniform resource interface –Simple, but powerful –Semantics are visible to intermediaries HTTP extends interface across network HTTP Basics
4
HTTP Message Syntax GET /Test/hello.html HTTP/1.1 \r\n Host: kiwi.ics.uci.edu:8080 \r\n User-Agent: GET/7 libwww-perl/5.40 \r\n \r\n HTTP/1.1 200 OK \r\n Date: Thu, 09 Mar 2000 15:40:09 GMT \r\n Server: Apache/1.3.12 \r\n Content-Type: text/html \r\n Content-Language: en \r\n Transfer-Encoding: chunked \r\n Etag: a797cd-465af \r\n Cache-control: max-age=3600 \r\n Vary: Accept-Language \r\n \r\n 4090 \r\n …
5
Request Envelope GET /Test/hello.html HTTP/1.1 \r\n Host: kiwi.ics.uci.edu:8080 \r\n User-Agent: GET/7 libwww-perl/5.40 \r\n \r\n
6
Request Control Data GET /Test/hello.html HTTP/1.1 \r\n Host: kiwi.ics.uci.edu:8080 \r\n User-Agent: GET/7 libwww-perl/5.40 \r\n \r\n
7
Request Metadata GET /Test/hello.html HTTP/1.1 \r\n Host: kiwi.ics.uci.edu:8080 \r\n User-Agent: GET/7 libwww-perl/5.40 \r\n \r\n
8
Request Metadata POST /nasdaq/trade.php HTTP/1.1 \r\n Host: www.datek.com \r\n User-Agent: poseur/1.0 libwww/3.1 \r\n Content-type: www/x-urlencoded \r\n Content-length: 58 \r\n \r\n Ticker=LNUX&quantity=140&action=sell &type=limit&amt=298.00
9
Request Data POST /nasdaq/trade.php HTTP/1.1 \r\n Host: www.datek.com \r\n User-Agent: poseur/1.0 libwww/3.1 \r\n Content-type: www/x-urlencoded \r\n Content-length: 58 \r\n \r\n Ticker=LNUX&quantity=140&action=sell &type=limit&amt=298.00
10
Request Data GET /Test/hello.html HTTP/1.1 \r\n Host: kiwi.ics.uci.edu:8080 \r\n User-Agent: GET/7 libwww-perl/5.40 \r\n \r\n
11
Response Envelope GET /Test/hello.html HTTP/1.1 \r\n Host: kiwi.ics.uci.edu:8080 \r\n User-Agent: GET/7 libwww-perl/5.40 \r\n \r\n HTTP/1.1 200 OK \r\n Date: Thu, 09 Mar 2000 15:40:09 GMT \r\n Server: Apache/1.3.12 \r\n Content-Type: text/html \r\n Content-Language: en \r\n Transfer-Encoding: chunked \r\n Etag: a797cd-465af \r\n Cache-control: max-age=3600 \r\n Vary: Accept-Language \r\n \r\n 4090 \r\n …
12
Response Control Data GET /Test/hello.html HTTP/1.1 \r\n Host: kiwi.ics.uci.edu:8080 \r\n User-Agent: GET/7 libwww-perl/5.40 \r\n \r\n HTTP/1.1 200 OK \r\n Date: Thu, 09 Mar 2000 15:40:09 GMT \r\n Server: Apache/1.3.12 \r\n Content-Type: text/html \r\n Content-Language: en \r\n Transfer-Encoding: chunked \r\n Etag: a797cd-465af \r\n Cache-control: max-age=3600 \r\n Vary: Accept-Language \r\n \r\n 4090 \r\n …
13
Response Metadata GET /Test/hello.html HTTP/1.1 \r\n Host: kiwi.ics.uci.edu:8080 \r\n User-Agent: GET/7 libwww-perl/5.40 \r\n \r\n HTTP/1.1 200 OK \r\n Date: Thu, 09 Mar 2000 15:40:09 GMT \r\n Server: Apache/1.3.12 \r\n Content-Type: text/html \r\n Content-Language: en \r\n Transfer-Encoding: chunked \r\n Etag: a797cd-465af \r\n Cache-control: max-age=3600 \r\n Vary: Accept-Language \r\n \r\n 4090 \r\n …
14
Response Data GET /Test/hello.html HTTP/1.1 \r\n Host: kiwi.ics.uci.edu:8080 \r\n User-Agent: GET/7 libwww-perl/5.40 \r\n \r\n HTTP/1.1 200 OK \r\n Date: Thu, 09 Mar 2000 15:40:09 GMT \r\n Server: Apache/1.3.12 \r\n Content-Type: text/html \r\n Content-Language: en \r\n Transfer-Encoding: chunked \r\n Etag: a797cd-465af \r\n Cache-control: max-age=3600 \r\n Vary: Accept-Language \r\n \r\n 4090 \r\n …
15
Overview HTTP Basics Apache httpd architecture Connection management (listening) Request Reading Finding a representation Conditional request evaluation Response Writing Connection management (closing) Future Improvements waka/2.0
16
httpd Initialization httpd core apache-2.0/src/main/*.c Initiate program http_main.c Read configuration files http_config.c, http_core.c Start logging http_log.c Start server listeners (MPM) apache-2.0/src/modules/mpm/*
17
Connection management Listening and Accept mpm/prefork/prefork.c mpm/mpmt_pthread.c … Connection set-up src/main/http_connection.c Modular hooks for protocol independence ap_process_http_connection() –Calls ap_read_request() and we are finally at the level of HTTP
18
Request Reading src/main/http_protocol.c GET /Test/hello.html HTTP/1.1 \r\n Host: kiwi.ics.uci.edu:8080 \r\n User-Agent: GET/7 libwww-perl/5.40 \r\n \r\n Request Line read_request_line(r) Header fields get_mime_headers(r) Host determination http_vhost.c
19
Request Processing src/main/http_request.c Access control Directory walk Location walk File walk Handler selection Field pre-processing Content Handler
20
Request Body src/main/http_protocol.c Declaration ap_setup_client_block(r, policy) Test ap_should_client_block(r) Read until done ap_get_client_block(r, …) Shortcut ap_discard_request_body(r)
21
Finding a representation Each content handler is responsible for associating the URI with a resource and applying the method, returning a representation as the response Redirection Negotiation Subrequests Errors
22
Conditional request evaluation Conditional requests modify method processing depending on the current state of the resource representation Last-Modified Etag Cache validation If-Modified-Since If-Nonematch Prerequisites If-Match If-Unmodified-Since Range-If If
23
Response Writing HTTP/1.1 200 OK \r\n Date: Thu, 09 Mar 2000 15:40:09 GMT \r\n Server: Apache/1.3.12 \r\n Content-Type: text/html \r\n Content-Language: en \r\n Transfer-Encoding: chunked \r\n Etag: a797cd-465af \r\n Cache-control: max-age=3600 \r\n Vary: Accept-Language \r\n \r\n 4090 \r\n … Status code and reason phrase Header fields Body
24
Response Writing Status code and reason phrase r->status r->status_line || status_lines[idx] Header fields r->headers_out r->err_headers_out Headers set by modules mod_expires.c mod_headers.c –Header set Author John Q. Public
25
Send Body Body File Buffer IO-layer Transfer-encoding Length delimited Chunked Connection terminated
26
Connection management Persistent connections The big hairy if ap_set_keepalive(r) Connection tear-down Lingering close
27
Overview HTTP Basics Apache httpd architecture Connection management (listening) Request Reading Finding a representation Conditional request evaluation Response Writing Connection management (closing) Future Improvements waka/2.0
28
Future Improvements Configurable protocol elements Methods, status codes, field names Tokenized field manipulation Field name -> token Field value -> linked list Streaming IO Layers Stacked protocol manipulation Separate streams for data and metadata –Token streams Bucket brigades –Strings, Files, Cache handles
29
waka/2.0 A replacement for HTTP/1.x Emphasizes the REST architectural style Ideas from Speros HTTP-ng and W3C HTTP-NG Packet streams Control, meta-metadata, metadata, data Prioritized bandwidth usage Self-descriptive All syntax an extensible standard All cache rules in response Simple quality of service indicators Transport independent Tokenized Optimized for memory transfer
30
Questions? Where to go for more information http://www.ics.uci.edu/pub/ietf/http/ http://www.ics.uci.edu/~fielding/talks/ Places to see: Front Doorwww.apache.org Developer Notesdev.apache.org PR Databasebugs.apache.org Apache Weekwww.apacheweek.com OReilly Netwww.oreilly.net/apache/
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.