Web Server Design Week 3 Old Dominion University

Slides:



Advertisements
Similar presentations
The abs_path in a URI If the abs_path is not present in the URL, it must be given as "/" in a Request-URI for a resource. Thus, if a user points a browser.
Advertisements

The abs_path in a URI If the abs_path is not present in the URL, it must be given as "/" in a Request-URI for a resource. Thus, if a user points a browser.
Web Server Design Week 5 Old Dominion University Department of Computer Science CS 495/595 Spring 2010 Martin Klein 2/10/10.
CP476 Internet Computing Lecture 5 : HTTP, WWW and URL 1 Lecture 5. WWW, HTTP and URL Objective: to review the concepts of WWW to understand how HTTP works.
TCP/IP Protocol Suite 1 Chapter 22 Upon completion you will be able to: World Wide Web: HTTP Understand the components of a browser and a server Understand.
Web Server Design Week 8 Old Dominion University Department of Computer Science CS 495/595 Spring 2010 Martin Klein 3/3/10.
Web Server Design Week 4 Old Dominion University Department of Computer Science CS 495/595 Spring 2010 Martin Klein 2/03/10.
Web Server Design Week 11 Old Dominion University Department of Computer Science CS 495/595 Spring 2010 Martin Klein 3/24/10.
Web Server Design Assignment #2: Conditionals & Persistence Due: 02/24/2010 Old Dominion University Department of Computer Science CS 495/595 Spring 2010.
Web Server Design Week 2 Old Dominion University Department of Computer Science CS 495/595 Spring 2010 Martin Klein 1/20/10.
Web Server Design Week 7 Old Dominion University Department of Computer Science CS 495/595 Spring 2010 Martin Klein 2/24/10.
Web Server Design Week 13 Old Dominion University Department of Computer Science CS 495/595 Spring 2010 Martin Klein 4/7/10.
Web Server Design Week 6 Old Dominion University Department of Computer Science CS 495/595 Spring 2010 Martin Klein 2/17/10.
Web Server Design Week 5 Old Dominion University Department of Computer Science CS 495/595 Spring 2012 Michael L. Nelson 02/07/12.
Web Programming Week 1 Old Dominion University Department of Computer Science CS 418/518 Fall 2007 Michael L. Nelson 8/27/07.
Web Server Design Week 1 Old Dominion University Department of Computer Science CS 495/595 Spring 2006 Michael L. Nelson 1/09/06.
Web Server Design Week 13 Old Dominion University Department of Computer Science CS 495/595 Spring 2012 Michael L. Nelson 04/03/12.
Web Server Design Week 3 Old Dominion University Department of Computer Science CS 495/595 Spring 2006 Michael L. Nelson 1/23/06.
Web Server Design Week 6 Old Dominion University Department of Computer Science CS 495/595 Spring 2006 Michael L. Nelson 2/13/06.
Lecture # 1 By: Aftab Alam Department Of Computer Science University Of Peshawar Internet Programming.
What’s Really Happening
Block 5: An application layer protocol: HTTP
WWW and HTTP King Fahd University of Petroleum & Minerals
HTTP – An overview.
Web Server Design Week 10 Old Dominion University
Web Server Design Week 4 Old Dominion University
Hypertext Transfer Protocol
Hypertext Transport Protocol
Web Server Design Week 1 Old Dominion University
Web Caching? Web Caching:.
Web Server Design Assignment #4: Authentication
Web Server Design Assignment #2: Conditionals & Persistence
Web Server Design Week 8 Old Dominion University
Web Server Design Week 11 Old Dominion University
Web Server Design Week 7 Old Dominion University
IS333D: MULTI-TIER APPLICATION DEVELOPMENT
Web Server Design Assignment #5 Extra Credit
Web Server Design Week 4 Old Dominion University
Web Server Design Week 12 Old Dominion University
Web Server Design Week 15 Old Dominion University
Web Server Design Week 5 Old Dominion University
Group 3: Olena Hunsicker and Divya Josyula
Web Server Design Assignment #2: Conditionals & Persistence
Web Server Design Week 2 Old Dominion University
Web Server Design Week 8 Old Dominion University
Web Server Design Week 1 Old Dominion University
EE 122: HyperText Transfer Protocol (HTTP)
Web Server Design Week 8 Old Dominion University
Web Server Design Assignment #2: Conditionals & Persistence
Web Server Design Week 6 Old Dominion University
Web Server Design Week 10 Old Dominion University
Web Server Design Week 8 Old Dominion University
Web Server Design Week 11 Old Dominion University
Kevin Harville Source: Webmaster in a Nutshell, O'Rielly Books
Web Server Design Week 5 Old Dominion University
Web Server Design Week 3 Old Dominion University
Web Server Design Week 4 Old Dominion University
Web Server Design Week 16 Old Dominion University
Web Server Design Week 12 Old Dominion University
Web Server Design Week 12 Old Dominion University
Web Server Design Week 14 Old Dominion University
Web Server Design Assignment #1: Basic Operations
Web Server Design Week 6 Old Dominion University
Web Server Design Assignment #5 Extra Credit
Web Server Design Week 3 Old Dominion University
Web Server Design Week 3 Old Dominion University
Old Dominion University Department of Computer Science
Web Server Design Week 7 Old Dominion University
Web Programming Week 1 Old Dominion University
Web Server Design Week 7 Old Dominion University
Presentation transcript:

Web Server Design Week 3 Old Dominion University Department of Computer Science CS 495/595 Spring 2009 Michael L. Nelson <mln@cs.odu.edu> 01/24/12

(Client-Side) Caching… /Users/mln/Library/Caches/Firefox % ls Profiles/7ngg6k69.default/Cache/ 006D79AEd01 2BF3BF47d01 59BE1336d01 88A074F9d01 B2CD50F8d01 00E1A1DEd01 2C0192FFd01 5A4F43D1d01 88F5AD87d01 B481E3A5d01 027AAA03d01 2CD06959d01 5C4EA487d01 898C3E4Dd01 B4B13877d01 028080ACd01 2DB057E2d01 5FEA7F9Ad01 8C30E478d01 B659B544d01 [deletia…] The client could: do a HEAD, see if our copy is still “good”, and only do a GET if not do a “conditional” GET (next week) We need metadata to determine “goodness”

Last-Modified AIHT:~/Desktop/cs595-s06 mln$ telnet www.cs.odu.edu 80 | tee 1-1.out Trying 128.82.4.2... Connected to xenon.cs.odu.edu. Escape character is '^]'. GET /~mln/index.html HTTP/1.1 Connection: close Host: www.cs.odu.edu HTTP/1.1 200 OK Date: Mon, 09 Jan 2006 17:07:04 GMT Server: Apache/1.3.26 (Unix) ApacheJServ/1.1.2 PHP/4.3.4 Last-Modified: Sun, 29 May 2005 02:46:53 GMT ETag: "1c52-14ed-42992d1d" Accept-Ranges: bytes Content-Length: 5357 Content-Type: text/html <html> <head> <title>Home Page for Michael L. Nelson</title> <style type="text/css"> <!-- [lots of html deleted] Connection closed by foreign host.

Generated from Files on Filesystem <?php // outputs e.g. somefile.txt was last modified: December 29 2002 22:16:23. $filename = 'somefile.txt'; if (file_exists($filename)) { echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename)); } ?> example from: http://php.net/manual/en/function.filemtime.php, other languages similar

Implication Entities that are not files on a file system (i.e., they are dynamically generated) do not have Last-Modified headers… RFC 2616 defines a similar construct that MAY be used in these scenarios…

Entity Tags: “Etag” AIHT:~/Desktop/cs595-s06 mln$ telnet www.cs.odu.edu 80 | tee 1-1.out Trying 128.82.4.2... Connected to xenon.cs.odu.edu. Escape character is '^]'. GET /~mln/index.html HTTP/1.1 Connection: close Host: www.cs.odu.edu HTTP/1.1 200 OK Date: Mon, 09 Jan 2006 17:07:04 GMT Server: Apache/1.3.26 (Unix) ApacheJServ/1.1.2 PHP/4.3.4 Last-Modified: Sun, 29 May 2005 02:46:53 GMT ETag: "1c52-14ed-42992d1d" Accept-Ranges: bytes Content-Length: 5357 Content-Type: text/html <html> <head> <title>Home Page for Michael L. Nelson</title> <style type="text/css"> <!-- [lots of html deleted] Connection closed by foreign host.

What is an “Entity”? section 1.3: entity The information transferred as the payload of a request or response. An entity consists of metainformation in the form of entity-header fields and content in the form of an entity-body, as described in section 7. section 7: An entity consists of entity-header fields and an entity-body, although some responses will only include the entity-headers.

Looking Again at a Response section 6: Response = Status-Line ; Section 6.1 *(( general-header ; Section 4.5 | response-header ; Section 6.2 | entity-header ) CRLF) ; Section 7.1 CRLF [ message-body ] ; Section 7.2

Entity Headers Are a Subset of Response Headers 7.1 Entity Header Fields Entity-header fields define metainformation about the entity-body or, if no body is present, about the resource identified by the request. Some of this metainformation is OPTIONAL; some might be REQUIRED by portions of this specification. entity-header = Allow ; Section 14.7 | Content-Encoding ; Section 14.11 | Content-Language ; Section 14.12 | Content-Length ; Section 14.13 | Content-Location ; Section 14.14 | Content-MD5 ; Section 14.15 | Content-Range ; Section 14.16 | Content-Type ; Section 14.17 | Expires ; Section 14.21 | Last-Modified ; Section 14.29 | extension-header extension-header = message-header

Section 3.11 - Entity Tags Etags used in request headers response headers An entity tag consists of an opaque quoted string, possibly prefixed by a weakness indicator. […] A "strong entity tag" MAY be shared by two entities of a resource only if they are equivalent by octet equality. A "weak entity tag," indicated by the "W/" prefix, MAY be shared by two entities of a resource only if the entities are equivalent and could be substituted for each other with no significant change in semantics. A weak entity tag can only be used for weak comparison. An entity tag MUST be unique across all versions of all entities associated with a particular resource. A given entity tag value MAY be used for entities obtained by requests on different URIs. The use of the same entity tag value in conjunction with entities obtained by requests on different URIs does not imply the equivalence of those entities.

Section 13.3.2 The ETag response-header field value, an entity tag, provides for an "opaque" cache validator. This might allow more reliable validation in situations where it is inconvenient to store modification dates, where the one-second resolution of HTTP date values is not sufficient, or where the origin server wishes to avoid certain paradoxes that might arise from the use of modification dates.

Opaqueness A string / tag / pointer / data structure whose semantics / implementation are hidden/local Q: What does “1c52-14ed-42992d1d” mean? A: it doesn’t matter… Examples: ATM & CC data strips Hotel & Flight reservation codes http cookies

Section 13.3.3 Weak and Strong Validators Entity tags are normally "strong validators," but the protocol provides a mechanism to tag an entity tag as "weak." One can think of a strong validator as one that changes whenever the bits of an entity changes, while a weak value changes whenever the meaning of an entity changes. Alternatively, one can think of a strong validator as part of an identifier for a specific entity, while a weak validator is part of an identifier for a set of semantically equivalent entities. Note: One example of a strong validator is an integer that is incremented in stable storage every time an entity is changed. An entity's modification time, if represented with one-second resolution, could be a weak validator, since it is possible that the resource might be modified twice during a single second. Support for weak validators is optional. However, weak validators allow for more efficient caching of equivalent objects; … strong = exact match; weak = “good enough” match

Common Hash Functions Variable length input, fixed length output Can’t be reversed small changes in input, large changes in output MD5 http://www.ietf.org/rfc/rfc1321.txt SHA-1 http://www.w3.org/PICS/DSig/SHA1_1_0.html AIHT.local:/Users/mln/Desktop/cs595-s06 % cat aaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa AIHT.local:/Users/mln/Desktop/cs595-s06 % cat aab aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa AIHT.local:/Users/mln/Desktop/cs595-s06 % md5 aaa MD5 (aaa) = ab5e3552116660a492c1c12fa08da9d2 AIHT.local:/Users/mln/Desktop/cs595-s06 % md5 aab MD5 (aab) = 015c1a591ba345438760b6aafc1f7b60

Possible Approaches Strong: Weak: md5(entitybody+entityheaders) simhash(entitybody) http://matpalm.com/resemblance/simhash/ http://code.google.com/p/simhash/ http://scholar.google.com/scholar?cluster=18431355887360639014

How Does Apache Do It? A configurable function with default inputs of (inode, size, modification time): http://httpd.apache.org/docs/2.2/mod/core.html#fileetag Direct relationship to three parts of: ETag: "1c52-14ed-42992d1d" ?? Probably, but look in the Apache source code to be sure let’s run a test… read about “.htaccess” files http://httpd.apache.org/docs/2.2/howto/htaccess.html

Black Box Test request: bash-3.2$ telnet www.cs.odu.edu 80 Trying 128.82.4.2... Connected to xenon.cs.odu.edu. Escape character is '^]'. HEAD /~mln/teaching/cs595-s09/etag-test/foo.txt HTTP/1.1 Host: www.cs.odu.edu Connection: close request: HTTP/1.1 200 OK Date: Fri, 30 Jan 2009 20:38:01 GMT Server: Apache/2.2.0 Last-Modified: Fri, 30 Jan 2009 20:36:03 GMT ETag: "445d3f-c-274c52c0" Accept-Ranges: bytes Content-Length: 12 Connection: close Content-Type: text/plain HTTP/1.1 200 OK Date: Fri, 30 Jan 2009 20:38:31 GMT Server: Apache/2.2.0 Last-Modified: Fri, 30 Jan 2009 20:36:03 GMT ETag: "445d3f-274c52c0" Accept-Ranges: bytes Content-Length: 12 Connection: close Content-Type: text/plain % cat .htaccess FileETag INode Size MTime % cat .htaccess FileETag INode MTime HTTP/1.1 200 OK Date: Fri, 30 Jan 2009 20:38:49 GMT Server: Apache/2.2.0 Last-Modified: Fri, 30 Jan 2009 20:36:03 GMT ETag: "445d3f" Accept-Ranges: bytes Content-Length: 12 Connection: close Content-Type: text/plain HTTP/1.1 200 OK Date: Fri, 30 Jan 2009 20:39:27 GMT Server: Apache/2.2.0 Last-Modified: Fri, 30 Jan 2009 20:36:03 GMT Accept-Ranges: bytes Content-Length: 12 Connection: close Content-Type: text/plain % cat .htaccess FileETag INode % cat .htaccess FileETag None

(contd) HTTP/1.1 200 OK Date: Fri, 30 Jan 2009 20:54:18 GMT (original) ETag: "445d3f-c-274c52c0" HTTP/1.1 200 OK Date: Fri, 30 Jan 2009 20:54:18 GMT Server: Apache/2.2.0 Last-Modified: Fri, 30 Jan 2009 20:51:27 GMT ETag: "445d3f-c-5e5f71c0" Accept-Ranges: bytes Content-Length: 12 Connection: close Content-Type: text/plain HTTP/1.1 200 OK Date: Fri, 30 Jan 2009 20:54:57 GMT Server: Apache/2.2.0 Last-Modified: Fri, 30 Jan 2009 20:54:47 GMT ETag: "445d3f-10-6a4b33c0" Accept-Ranges: bytes Content-Length: 16 Connection: close Content-Type: text/plain % touch foo.txt % echo "bar" >> foo.txt