1 / 26

EE 122: Lecture 21 (HyperText Transfer Protocol - HTTP)

EE 122: Lecture 21 (HyperText Transfer Protocol - HTTP). Ion Stoica Nov 20, 2001. (*). 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

rlydia
Download Presentation

EE 122: Lecture 21 (HyperText Transfer Protocol - HTTP)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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 istoica@cs.berkeley.edu

  3. Basics • Client-server architecture • Synchronous request/reply protocol • Stateless • Uses unicast • Implemented on top of TCP/IP istoica@cs.berkeley.edu

  4. 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 istoica@cs.berkeley.edu

  5. Universal Resource Locator • An address or location of a resource, e.g., http://www.eecs.berkeley.edu/index.html • Prefix up to “:” represents the protocol to be used to obtain the resource istoica@cs.berkeley.edu

  6. Client Request • Steps to get the resource: http://www.eecs.berkeley.edu/index.html • Use DNS to obtain the IP address of www.eecs.berkeley.edu, A • Send to A an HTTP request: • Server response: (see next slide) GET /index.html HTTP/1.0 istoica@cs.berkeley.edu

  7. Server Response HTTP/1.0 200 OK Content-Type: text/html Content-Length: 1234 Last-Modified: Mon, 19 Nov 2001 15:31:20 GMT <HTML> <HEAD> <TITLE>EECS Home Page</TITLE> </HEAD> … </BODY> </HTML> istoica@cs.berkeley.edu

  8. . . . Big Picture Client Server TCP Syn Establish connection TCP syn + ack Client request TCP ack + HTTP GET Request response Close connection istoica@cs.berkeley.edu

  9. 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) istoica@cs.berkeley.edu

  10. Response Codes • 1x informational • 2x success • 3x redirection • 4x client error in request • 5x server error; can’t satisfy the request istoica@cs.berkeley.edu

  11. HTTP/1.0 Example Server Client Request image 1 Transfer image 1 Request image 2 Transfer image 2 Request text Transfer text Finish display page istoica@cs.berkeley.edu

  12. 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 istoica@cs.berkeley.edu

  13. . . . Web Proxies • Intermediaries between client and server Client 1 Client 2 Proxy Proxy Server Client N istoica@cs.berkeley.edu

  14. 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 istoica@cs.berkeley.edu

  15. 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 istoica@cs.berkeley.edu

  16. HTTP/1.1 • Performance: • Persistent connections • Pipelined requests/responses • Chunked transfer encoding • Compression of data types • … • Support for virtual hosting • Efficient caching support istoica@cs.berkeley.edu

  17. Persistent Connections • Allow multiple transfers over one connection • Avoid multiple TCP connection setups • Avoid multiple TCP slow starts istoica@cs.berkeley.edu

  18. Pipelined Requests/Responses Server Client • 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 Request 1 Request 2 Request 3 Transfer 1 Transfer 2 Transfer 3 istoica@cs.berkeley.edu

  19. 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 istoica@cs.berkeley.edu

  20. 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” istoica@cs.berkeley.edu

  21. Support for Virtual Hosting • Problem: recall that a request to get http://www.foo.com/index.html has in its header only: • 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 istoica@cs.berkeley.edu

  22. 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 istoica@cs.berkeley.edu

  23. 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 istoica@cs.berkeley.edu

  24. 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 istoica@cs.berkeley.edu

  25. 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 Accept-Language: en-us istoica@cs.berkeley.edu

  26. Summary • HTTP the backbone of WWW’ • Evolution of HTTP has concentrated on increasing the performance • Next generations (HTTP/NG) concentrate on increasing extensibility istoica@cs.berkeley.edu

More Related