Download presentation
Presentation is loading. Please wait.
Published byEmory Riley Modified over 9 years ago
1
EE 122: Lecture 21 (HyperText Transfer Protocol - HTTP) Ion Stoica Nov 20, 2001 (*)
2
istoica@cs.berkeley.edu2 Background World Wide Web (WWW): a set of cooperating clients and servers that communicate through HTTP HTTP history -First HTTP implementation - 1990 Tim Berners-Lee at CERN -HTTP/0.9 – 1991 Simple GET command for the Web -HTTP/1.0 –1992 Client/Server information, simple caching -HTTP/1.1 - 1996
3
istoica@cs.berkeley.edu3 Basics Client-server architecture Synchronous request/reply protocol Stateless Uses unicast Implemented on top of TCP/IP
4
istoica@cs.berkeley.edu4 Terminology Resource – file or service (e.g., dynamic results from the execution of a script) Entity – information transferred in a request or response Entity Tag – unique identifier for a resource
5
istoica@cs.berkeley.edu5 Universal Resource Locator An address or location of a resource, e.g., http://www.eecs.berkeley.edu/index.html http://www.eecs.berkeley.edu/index.html Prefix up to “:” represents the protocol to be used to obtain the resource
6
istoica@cs.berkeley.edu6 Client Request Steps to get the resource: http://www.eecs.berkeley.edu/index.html http://www.eecs.berkeley.edu/index.html 1.Use DNS to obtain the IP address of www.eecs.berkeley.edu, A 2.Send to A an HTTP request: 3.Server response: (see next slide) GET /index.html HTTP/1.0
7
istoica@cs.berkeley.edu7 Server Response HTTP/1.0 200 OK Content-Type: text/html Content-Length: 1234 Last-Modified: Mon, 19 Nov 2001 15:31:20 GMT EECS Home Page …
8
istoica@cs.berkeley.edu8 Big Picture Client Server TCP Syn TCP syn + ack TCP ack + HTTP GET... Establish connection Request response Client request Close connection
9
istoica@cs.berkeley.edu9 Request Methods GET – transfer resource from given URL HEAD – GET resource metadata (headers) only PUT – store/modify resource under the given URL DELETE – remove resource POST – provide input for a process identified by the given URL (usually used to post CGI parameters)
10
istoica@cs.berkeley.edu10 Response Codes 1x informational 2x success 3x redirection 4x client error in request 5x server error; can’t satisfy the request
11
istoica@cs.berkeley.edu11 HTTP/1.0 Example Client Server Request image 1 Transfer image 1 Request image 2 Transfer image 2 Request text Transfer text Finish display page
12
istoica@cs.berkeley.edu12 HHTP/1.0 Performance Create a new TCP connection for each resource -Large number of embedded objects in a web page -Many short lived connections TCP transfer -Too slow for small object -May never exit slow-start phase
13
istoica@cs.berkeley.edu13 Web Proxies Intermediaries between client and server Client 1 Proxy Server Client 2 Client N...
14
istoica@cs.berkeley.edu14 Web Proxies (cont’d) Location: close to the server, client, or in the network Functions: -Filter requests/responses -Modify requests/responses Change http requests to ftp requests Change response content, e.g., transcoding to display data efficiently on a Palm Pilot -Provide better privacy -Caching
15
istoica@cs.berkeley.edu15 HTTP/1.0 Caching A request directive: -Pragma: no-cache – ignore all caches and get resource directly from server A modifier to the GET request: -If-modified-since – return a “not modified” response if resource was not modified since specified time A response header: -Expires – specify to the client for how long it is safe to cache the resource
16
istoica@cs.berkeley.edu16 HTTP/1.1 Performance: -Persistent connections -Pipelined requests/responses -Chunked transfer encoding -Compression of data types -… Support for virtual hosting Efficient caching support
17
istoica@cs.berkeley.edu17 Persistent Connections Allow multiple transfers over one connection Avoid multiple TCP connection setups Avoid multiple TCP slow starts
18
istoica@cs.berkeley.edu18 Pipelined Requests/Responses Buffer requests and responses to reduce the number of packets Multiple requests can be contained in one TCP segment Note: order of responses has to be maintained Client Server Request 1 Request 2 Request 3 Transfer 1 Transfer 2 Transfer 3
19
istoica@cs.berkeley.edu19 Chunked Transfer Encoding In HTTP/1.0 server indicate the end of dynamic content by closing connection -Persistent connections not possible! Why? In HTTP/1.1 server splits dynamic content in chunks Size of chunk in hex followed by semicolon -Dynamic content transfer: series of chunks followed by a chunk of size 0
20
istoica@cs.berkeley.edu20 Compression of Data Types Enables transport compression of data types to decrease payload size Example: -Server sends in response: “Content-Encoding: gzip” -Client sends: “Accept-Encoding:gzip”
21
istoica@cs.berkeley.edu21 Support for Virtual Hosting Problem: recall that a request to get http://www.foo.com/index.html has in its header only: http://www.foo.com/index.html -GET /index.html HTTP/1.0 It is not possible to run two web servers at the same IP address, because GET is ambiguous -This is useful when outsourcing web content, i.e., company “foo” asks company “outsource” to manage its content HTTP/1.1 addresses this problem by mandating “Host” header line, e.g., GET /index.html HTTP/1.1 Host: www.foo.com
22
istoica@cs.berkeley.edu22 HTTP/1.1 - Caching HTTP/1.1 provides better support for caching -Separate “what to cache” and “whether a cache response can be used safely” -Allow server to provide more info on resource cacheability -A cache does not return unknowingly a stale resources -Not depending on absolute timestamps
23
istoica@cs.berkeley.edu23 HTTP/1.1 - Caching (cont’d) Four new headers associated to caching: age header, entity tags, cache-control, and vary Age Header – the amount of time that is known to have passed since the response message was retrieved Entity tags – unique tags to differentiate between different cached versions of the same resource
24
istoica@cs.berkeley.edu24 HTTP/1.1 - Caching (cont’d) Cache-Control -no-cache: get resource only from server -only-if-cached: obtain resource only from cache -no-store: don’t allow caches to store request/response -max-age: response’s should be no grater than this value -max-stale: expired response OK but not older than staled value -min-fresh: response should remain fresh for at least stated value -no-transform: proxy should not change media type
25
istoica@cs.berkeley.edu25 HTTP/1.1 – Caching (cont’d) Vary -Accommodate multiple representations of the same resource -Used to list a set of request headers to be used to select the appropriate representation Example: -Server sends the following response -Request will contain: -Cache return the response that has: HTTP/1.1 200 OK … Vary: Accept-Language Accept-Language: en-us
26
istoica@cs.berkeley.edu26 Summary HTTP the backbone of WWW’ Evolution of HTTP has concentrated on increasing the performance Next generations (HTTP/NG) concentrate on increasing extensibility
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.