+ All Categories
Home > Documents > 20-755: The Internet Lecture 7: Web Services I

20-755: The Internet Lecture 7: Web Services I

Date post: 12-Jan-2016
Category:
Upload: mahsa
View: 19 times
Download: 1 times
Share this document with a friend
Description:
20-755: The Internet Lecture 7: Web Services I. David O’Hallaron School of Computer Science and Department of Electrical and Computer Engineering Carnegie Mellon University Institute for eCommerce, Summer 1999. Today’s lecture. Web history and HTTP intro (30 min) Break (10 min) - PowerPoint PPT Presentation
41
Lecture 7, 20-755: The Internet, Summer 1999 1 20-755: The Internet Lecture 7: Web Services I David O’Hallaron School of Computer Science and Department of Electrical and Computer Engineering Carnegie Mellon University Institute for eCommerce, Summer 1999
Transcript
Page 1: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 1

20-755: The InternetLecture 7: Web Services I

David O’Hallaron

School of Computer Science and

Department of Electrical and Computer Engineering

Carnegie Mellon University

Institute for eCommerce, Summer 1999

Page 2: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 2

Today’s lecture

• Web history and HTTP intro (30 min)

• Break (10 min)

• HTTP/1.1 methods (50 min)

Page 3: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 3

Web history

• 1945: – Vannevar Bush, “As we may think”, Atlantic Monthly,

July, 1945.

» Describes the idea of a distributed hypertext system.

» a “memex” that mimics the “web of trails” in our minds.

• 1989:– Tim Berners-Lee (CERN) writes internal proposal to

develop a distributed hypertext system.

» connects “a web of notes with links”.

» intended to help CERN physicists in large projects share and manage information

• 1990:– Tim BL writes graphical browser for Next machines.

Page 4: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 4

Web history (cont)

• 1992– NCSA server released

– 26 WWW servers worldwide

• 1993– Marc Andreessen releases first version of NCSA Mosaic

(Feb)

– Mosaic version released for (Windows, Mac, Unix).

– Web (port 80) traffic at 1% of NSFNET backbone traffic.

– Over 200 WWW servers worldwide.

• 1994– Andreessen and colleagues leave NCSA to form "Mosaic

Communications Corp" (now Netscape).

Page 5: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 5

Web server statistics

source: Netcraft Web Survey www.netcraft.com/survey

Apache

Microsoft

Other

Mosaic

Netscape

Page 6: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 6

Web services

webclient

(browser)

webserver

HTTP request

HTTP response

• Clients and servers communicate using the HyperText Transfer Protocol (HTTP)

• Current version is HTTP/1.1

– RFC 2616, June, 1999.

Page 7: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 7

Static and dynamic content

• The content returned in HTTP responses can be either static or dynamic.

• Static content: – content stored in files and retrieved in response to an

HTTP request

» HTML files

» images

» audio clips

• Dynamic content:– content produced on-the-fly in response to an HTTP

request

» usually by CGI process executed by the server.

Page 8: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 8

Backus-Naur Form (BNF)• BNF is a way to write grammars that specify

computer languages, protocols, and command line arguments to programs (and many others)

– BNF describes the legal strings for that language or protocol

• The HTTP spec uses the following BNF constructs (among others):

– “literal”

» literal text

– rule1 | rule2

» rule 1 or rule 2 is allowed

Page 9: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 9

BNF (cont)

• HTTP BNF constructs– (rule1 rule2)

» sequence of elements: rule1 followed by rule2

» (elem (foo | bar) elem)

– “elem foo elem” or “elem bar elem” are allowed.

– <n>*<m>(element)

» at least m and at most n occurences of element.

» default values are n=0 and m=infinity.

» *(element) allows zero or more occurences of element.

» 1(element) requires at least one element.

» 1*2(element) allows one or two.

– [rule]

» rule is optional

Page 10: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 10

BNF (cont)

• Basic rules– OCTET = <any 8-bit sequence of data>

– CHAR = <any ASCI I char>

– ALPHA = <A...Z and a...z>

– DIGIT = <0…9>

– SP = <ASCII SPACE character (32)>

– CRLF = <newline \n>

– TEXT = <printable ASCII chars>

Page 11: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 11

URIs and URLs

• network resources are identified by Universal Resource Indicators (URIs)

• The most familiar is the absolute URI known as the HTTP URL:– http-url = “http:” “//” host [“:” port] [abs_path]– port defaults to “80”– abs_path defaults to “/”– abs_path ending in / defaults to …/index.html

• examples:– http://euro.ecom.cmu.edu:80/index.html– http://euro.ecom.cmu.edu/index.html– http://euro.ecom.cmu.edu

Page 12: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 12

HTTP/1.1 messages

An HTTP message is either a Request or a Response:

HTTP-message = Request | Response

Requests and responses have the same basic form:

generic-message = start-line *message-header CRLF [message body]

start-line = Request-line | Status linemessage-header = field-name “:” [field value] CRLFmessage-body = <e.g., HTML file>

Page 13: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 13

HTTP/1.1 requests

Request = Method SP Request-URI SP HTTP-VERSION CRLF *(general-header | request-header | entity header) CRLF [ message-body ]

• Method: tells the server what operation to perform– GET: retrieve file

– OPTIONS: retrieve server and access capabilities

• Request-URI: identifies the resource to manipulate– data file (HTML), executable file (CGI)

• headers: parameterize the method– Accept-Language: en-us – User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)

• message-body: text characters

Page 14: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 14

HTTP/1.1 responsesResponse = HTTP-Version SP Status-Code SP Reason-Phrase CRLF *(general-header | response-header | entity header) CRLF [ message-body ]

• Status code: 3-digit number

• Reason-Phrase: explanation of status code

• headers: parameterize the response– Date: Thu, 22 Jul 1999 23:42:18 GMT

– Server: Apache/1.2.5 BSDI3.0-PHP/FI-2.0

– Content-Type: text/html

• message-body:– file

Page 15: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 15

How servers interpret Request-URIs

• GET / HTTP/1.1– resolves to home/html/index.html

– action: retrieves index.html

• GET /index.html ...– home/html/index.html

– action: retrieves index.html

• GET /foo.html ...– home/html/foo.html

– action: retrieves foo.html

• GET /cgi-bin/test.pl …– home/cgi-bin/test.pl

– action: runs test.pl

• GET http://euro.ecom.cmu.edu/index.html– home/html/index.html

– action: retrieves index.html

home

cgi-bin html

test.pl index.html foo.html

Page 16: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 16

Example HTTP/1.1 conversationkittyhawk> telnet euro.ecom.cmu.edu 80Connected to euro.ecom.cmu.edu.Escape character is '^]'.

GET /test.html HTTP/1.1 ;request lineHost: euro.ecom.cmu.edu ;request hdrCRLFHTTP/1.1 200 OK ;status lineDate: Thu, 22 Jul 1999 03:37:04 GMT ;response hdrServer: Apache/1.3.3 Ben-SSL/1.28 (Unix)Last-Modified: Thu, 22 Jul 1999 03:33:21 GMTETag: "48bb2-4f-37969101"Accept-Ranges: bytesContent-Length: 79Content-Type: text/htmlCRLF<html> ;beginning of 79 byte message body<head><title>Test page</title></head><body><h1>Test page</h1></html>

Request sent by client

Response sent by server

Page 17: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 17

Break time!

Page 18: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 18

Today’s lecture

• Web history and HTTP/1.1 intro (30 min)

• Break (10 min)

• HTTP/1.1 methods (50 min)

Page 19: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 19

Example HTTP/1.1 conversationkittyhawk> telnet euro.ecom.cmu.edu 80Connected to euro.ecom.cmu.edu.Escape character is '^]'.

GET /test.html HTTP/1.1 ;request lineHost: euro.ecom.cmu.edu ;request hdrCRLFHTTP/1.1 200 OK ;status lineDate: Thu, 22 Jul 1999 03:37:04 GMT ;response hdrServer: Apache/1.3.3 Ben-SSL/1.28 (Unix)Last-Modified: Thu, 22 Jul 1999 03:33:21 GMTETag: "48bb2-4f-37969101"Accept-Ranges: bytesContent-Length: 79Content-Type: text/htmlCRLF<html> ;beginning of 79 byte message body<head><title>Test page</title></head><body><h1>Test page</h1></html>

Request sent by client

Response sent by server

Page 20: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 20

OPTIONS

• Retrieves information about the server in general or resources on that server, without actually retrieving the resource.

• Request URIs:– if request URI = “*”, then the request is about the server

in general

» Is the server up?

» Is it HTTP/1.1 compliant?

» What brand of server?

» What OS is it running?

– if request URI != “*”, then the request applies to the options that available when accessing that resource:

» what methods can the client use to access the resource?

Page 21: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 21

OPTIONS (euro.ecom)

kittyhawk> telnet euro.ecom.cmu.edu 80Trying 128.2.218.2...Connected to euro.ecom.cmu.edu.Escape character is '^]'.

OPTIONS * HTTP/1.1Host: euro.ecom.cmu.eduCRLFHTTP/1.1 200 OKDate: Thu, 22 Jul 1999 06:12:11 GMTServer: Apache/1.3.3 Ben-SSL/1.28 (Unix)Content-Length: 0Allow: GET, HEAD, OPTIONS, TRACE

Request

Response

Host is a requiredheader in HTTP/1.1 but not in HTTP/1.0

Page 22: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 22

OPTIONS (euro.ecom)

kittyhawk> telnet euro.ecom.cmu.edu 80Trying 128.2.218.2...Connected to euro.ecom.cmu.edu.Escape character is '^]'.

OPTIONS /cgi-bin/fixit.pl HTTP/1.1Host: euro.ecom.cmu.eduCRLFHTTP/1.1 200 OKDate: Thu, 22 Jul 1999 22:09:11 GMTServer: Apache/1.3.3 Ben-SSL/1.28 (Unix)Content-Length: 0Allow: GET, HEAD, POST, OPTIONS, TRACE

Page 23: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 23

OPTIONS (microsoft.com)

kittyhawk> telnet microsoft.com 80Trying 207.46.131.137...Connected to microsoft.com.Escape character is '^]'.

OPTIONS * HTTP/1.1Host: microsoft.comCRLFHTTP/1.0 200 OKServer: Microsoft-IIS/4.0Date: Thu, 22 Jul 1999 04:13:34 GMTPublic: OPTIONS, TRACE, GET, HEAD, POST, PUT, DELETEContent-Length: 0

Page 24: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 24

OPTIONS (microsoft.com)

kittyhawk> telnet microsoft.com 80Trying 207.46.130.150...Connected to microsoft.com.Escape character is '^]'.

OPTIONS / HTTP/1.1Host: microsoft.comCRLFHTTP/1.0 200 OKServer: Microsoft-IIS/4.0Date: Thu, 22 Jul 1999 22:13:46 GMTPublic: OPTIONS, TRACE, GET, HEAD, POST, PUT, DELETEAllow: OPTIONS, TRACE, GET, HEADContent-Length: 0

Page 25: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 25

OPTIONS (amazon.com)

kittyhawk> telnet amazon.com 80Trying 208.216.182.15...Connected to amazon.com.Escape character is '^]'.

OPTIONS / HTTP/1.0CRLFHTTP/1.0 405 Because I felt like it.Server: Netscape-Commerce/1.12Date: Thursday, 22-Jul-99 04:17:32 GMTAllow: GET, POSTContent-type: text/plain

Page 26: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 26

OPTIONS (etoys.com)

kittyhawk> telnet etoys.com 80Trying 206.251.23.116...Connected to etoys.com.Escape character is '^]'.

OPTIONS * HTTP/1.1Host: etoys.comCRLFHTTP/1.1 200 OKDate: Thu, 22 Jul 1999 04:52:59 GMTServer: Etoys Web server 1.0Content-Length: 0Allow: GET, HEAD, OPTIONS, TRACE

Page 27: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 27

OPTIONS (etoys.com)

kittyhawk> telnet etoys.com 80Trying 206.251.23.116...Connected to etoys.com.Escape character is '^]'.

OPTIONS /index.html HTTP/1.1Host: etoys.comCRLFHTTP/1.1 200 OKDate: Thu, 22 Jul 1999 22:04:43 GMTServer: Etoys Web server 1.0Content-Length: 0Allow: GET, HEAD, POST, OPTIONS, TRACE

Page 28: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 28

GET

• Retrieves the information identified by the request URI.

– static content (HTML file)

– dynamic content produced by CGI program

» passes arguments to CGI program in URI

• Can also act as a conditional retrieve when certain request headers are present:

– If-Modified-Since

– If-Unmodified-Since

– If-Match

– If-None-Match

– If-Range

• Conditional GETs useful for caching

Page 29: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 29

GET (euro.ecom.cmu.edu)kittyhawk> telnet euro.ecom.cmu.edu 80Connected to euro.ecom.cmu.edu.Escape character is '^]'.

GET /test.html HTTP/1.1Host: euro.ecom.cmu.eduCRLFHTTP/1.1 200 OKDate: Thu, 22 Jul 1999 03:37:04 GMTServer: Apache/1.3.3 Ben-SSL/1.28 (Unix)Last-Modified: Thu, 22 Jul 1999 03:33:21 GMTETag: "48bb2-4f-37969101"Accept-Ranges: bytesContent-Length: 79Content-Type: text/htmlCRLF<html><head><title>Test page</title></head><body><h1>Test page</h1></html>

Page 30: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 30

GET request to euro.ecom(Internet Explorer browser)

GET /test.html HTTP/1.1 Accept: */* Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98) Host: euro.ecom.cmu.edu Connection: Keep-AliveCRLF

Page 31: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 31

GET response from euro.ecom

HTTP/1.1 200 OKDate: Thu, 22 Jul 1999 04:02:15 GMTServer: Apache/1.3.3 Ben-SSL/1.28 (Unix)Last-Modified: Thu, 22 Jul 1999 03:33:21 GMTETag: "48bb2-4f-37969101"Accept-Ranges: bytesContent-Length: 79Keep-Alive: timeout=15, max=100Connection: Keep-AliveContent-Type: text/htmlCRLF<html><head><title>Test page</title></head><body><h1>Test page</h1></html>

Page 32: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 32

GET request to euro.ecom (Netscape browser)

GET /test.html HTTP/1.0Connection: Keep-AliveUser-Agent: Mozilla/4.06 [en] (Win98; I)Host: euro.ecom.cmu.eduAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*Accept-Encoding: gzipAccept-Language: enAccept-Charset: iso-8859-1,*,utf-8CRLF

Page 33: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 33

GET response from euro.ecom

HTTP/1.1 200 OKDate: Thu, 22 Jul 1999 06:34:42 GMTServer: Apache/1.3.3 Ben-SSL/1.28 (Unix)Last-Modified: Thu, 22 Jul 1999 03:33:21 GMTETag: "48bb2-4f-37969101"Accept-Ranges: bytesContent-Length: 79Keep-Alive: timeout=15, max=100Connection: Keep-AliveContent-Type: text/htmlCRLF<html><head><title>Test page</title></head><body><h1>Test page</h1></html>

Page 34: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 34

HEAD

• Returns same response header as a GET request would have...

• But doesn’t actually carry out the request.– Some servers don’t implement this properly.

– example: espn.com

• Useful for applications that– check for valid and broken links in Web pages.

– check Web pages for modifications.

Page 35: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 35

Head (etrade.com)

kittyhawk> telnet etrade.com 80Trying 198.93.32.75...Connected to etrade.com.Escape character is '^]'.

HEAD / HTTP/1.1Host: etrade.comCRLFHTTP/1.0 200 OKServer: Netscape-Enterprise/2.01-p100Date: Fri, 23 Jul 1999 03:18:57 GMTRequestStartUsec: 780328RequestStartSec: 932699937Accept-ranges: bytesLast-modified: Tue, 20 Jul 1999 00:59:26 GMTContent-length: 15370Content-type: text/html

Page 36: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 36

HEAD (espn.com)

kittyhawk> telnet espn.com 80Trying 204.202.136.31...Connected to espn.com.Escape character is '^]'.

HEAD / HTTP/1.1Host: espn.comCRLFHTTP/1.1 301 Document MovedServer: Microsoft-IIS/4.0Date: Fri, 23 Jul 1999 03:22:32 GMTLocation: http://espn.go.com/Content-Type: text/htmlCRLF<html>Is now part of the http://espn.go.com service<br></html>

Modern browserstransparently

connect to the newespn.go.com location

Page 37: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 37

POST

• Another technique for producing dynamic content.

• Executes program identified in request URI (the CGI program).

• Passes arguments to CGI program in the message body

– unlike GET, which passes the arguments in the URI itself.

• Responds with output of the CGI program.

Page 38: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 38

POST request

POST /cgi-bin/post.pl HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */* Referer: http://www.cs.cmu.edu/~droh/755/form.html Accept-Language: en-us Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98) Host: kittyhawk.cmcl.cs.cmu.edu:8000 Content-Length: 25 CRLFfirst=dave&last=ohallaron

Page 39: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 39

POST response

HTTP/1.1 200 OKDate: Fri, 23 Jul 1999 05:42:30 GMTServer: Apache/1.3.4 (Unix)Transfer-Encoding: chunkedContent-Type: text/html

<p>first=dave&last=ohallaronDynamic content generated by CGI script

Response header generated by server

Page 40: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 40

TRACE

• returns contents of request header in response message body.

• HTTP’s version of an echo server.

• used for debugging.

Page 41: 20-755: The Internet Lecture 7: Web Services I

Lecture 7, 20-755: The Internet, Summer 1999 41

PUT and DELETE

• rarely supported functions

• PUT:– add a URI to the server’s file system

• DELETE– delete a URI from the server’s file system


Recommended