Presentation is loading. Please wait.

Presentation is loading. Please wait.

EE 122: Lecture 21 (HyperText Transfer Protocol - HTTP) Ion Stoica Nov 20, 2001 (*)

Similar presentations


Presentation on theme: "EE 122: Lecture 21 (HyperText Transfer Protocol - HTTP) Ion Stoica Nov 20, 2001 (*)"— Presentation transcript:

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


Download ppt "EE 122: Lecture 21 (HyperText Transfer Protocol - HTTP) Ion Stoica Nov 20, 2001 (*)"

Similar presentations


Ads by Google