HTTP Reading: Section 9.1.2 and 9.4.3 COS 461: Computer Networks Spring 2012 1.

Slides:



Advertisements
Similar presentations
Nick Feamster CS 3251: Computer Networking I Spring 2013
Advertisements

4 Copyright © 2005, Oracle. All rights reserved. Creating the Web Tier: Servlets.
1 What is JavaScript? JavaScript was designed to add interactivity to HTML pages JavaScript is a scripting language A scripting language is a lightweight.
Benchmark Series Microsoft Excel 2013 Level 2
Building a Simple Web Proxy
Hypertext Transfer PROTOCOL ----HTTP Sen Wang CSE5232 Network Programming.
CS 22: Enhanced Web Site Design - Week 8Slide 1 of 15 Enhanced Web Site Design Stanford University Continuing Studies CS 22 Mark Branom
Services Course Windows Live SkyDrive Participant Guide.
PSSA Preparation.
Presenter: James Huang Date: Sept. 29,  HTTP and WWW  Bottle Web Framework  Request Routing  Sending Static Files  Handling HTML  HTTP Errors.
TCP/IP Protocol Suite 1 Chapter 18 Upon completion you will be able to: Remote Login: Telnet Understand how TELNET works Understand the role of NVT in.
HyperText Transfer Protocol (HTTP)
Chapter 9 Application Layer, HTTP Professor Rick Han University of Colorado at Boulder
Hypertext Transfer Protocol Kyle Roth Mark Hoover.
Chapter 2: Application Layer
How the web works: HTTP and CGI explained
The World Wide Web and the Internet Dr Jim Briggs 1WUCM1.
Chapter 2 Application Layer Computer Networking: A Top Down Approach Featuring the Internet, 3 rd edition. Jim Kurose, Keith Ross Addison-Wesley, July.
Web, HTTP and Web Caching
Definitions, Definitions, Definitions Lead to Understanding.
Application Layer  We will learn about protocols by examining popular application-level protocols  HTTP  FTP  SMTP / POP3 / IMAP  Focus on client-server.
2/9/2004 Web and HTTP February 9, /9/2004 Assignments Due – Reading and Warmup Work on Message of the Day.
Hypertext Transport Protocol CS Dick Steflik.
HTTP Protocol Specification
FTP (File Transfer Protocol) & Telnet
HTTP Reading: Section and COS 461: Computer Networks Spring
HyperText Transfer Protocol (HTTP).  HTTP is the protocol that supports communication between web browsers and web servers.  A “Web Server” is a HTTP.
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.
2: Application Layer1 CS 4244: Internet Software Development Dr. Eli Tilevich.
Rensselaer Polytechnic Institute Shivkumar Kalvanaraman, Biplab Sikdar 1 The Web: the http protocol http: hypertext transfer protocol Web’s application.
Week 11: Application Layer1 Web and HTTP First some jargon r Web page consists of objects r Object can be HTML file, JPEG image, Java applet, audio file,…
Maryam Elahi University of Calgary – CPSC 441.  HTTP stands for Hypertext Transfer Protocol.  Used to deliver virtually all files and other data (collectively.
2: Application Layer1 Web and HTTP First some jargon Web page consists of base HTML-file which includes several referenced objects Object can be HTML file,
1 Computer Communication & Networks Lecture 28 Application Layer: HTTP & WWW p Waleed Ejaz
CIS679: Lecture 13 r Review of Last Lecture r More on HTTP.
Operating Systems Lesson 12. HTTP vs HTML HTML: hypertext markup language ◦ Definitions of tags that are added to Web documents to control their appearance.
2: Application Layer 1 Chapter 2: Application layer r 2.1 Principles of network applications  app architectures  app requirements r 2.2 Web and HTTP.
Web Technologies Lecture 1 The Internet and HTTP.
CS 6401 The World Wide Web Outline Background Structure Protocols.
Overview of Servlets and JSP
Data Communications and Computer Networks Chapter 2 CS 3830 Lecture 7 Omar Meqdadi Department of Computer Science and Software Engineering University of.
EEC-484/584 Computer Networks Lecture 4 Wenbing Zhao (Part of the slides are based on Drs. Kurose & Ross ’ s slides for their Computer.
HyperText Transfer Protocol (HTTP) Deepti Kulkarni CISC 856: TCP/IP and Upper Layer Protocols Fall 2008 Acknowledgements Professor Amer Richi Gupta.
Week 11: Application Layer 1 Web and HTTP r Web page consists of objects r Object can be HTML file, JPEG image, Java applet, audio file,… r Web page consists.
© Janice Regan, CMPT 128, Jan 2007 CMPT 371 Data Communications and Networking HTTP 0.
What’s Really Happening
Application Layer Dr. Adil Yousif Lecture 2 CS.
Tiny http client and server
Block 5: An application layer protocol: HTTP
How HTTP Works Made by Manish Kushwaha.
WWW and HTTP King Fahd University of Petroleum & Minerals
Hypertext Transfer Protocol
HTTP – An overview.
The Hypertext Transfer Protocol
Web Development Web Servers.
HTTP request message: general format
COMP2322 Lab 2 HTTP Steven Lee Feb. 8, 2017.
HTTP Protocol Specification
Hypertext Transfer Protocol
Internet transport protocols services
Web Caching? Web Caching:.
HTTP Protocol.
Computer Communication & Networks
HTTP Hypertext Transfer Protocol
CS 5565 Network Architecture and Protocols
HyperText Transfer Protocol
EE 122: HyperText Transfer Protocol (HTTP)
Hypertext Transfer Protocol (HTTP)
HTTP Hypertext Transfer Protocol
CSCI-351 Data communication and Networks
Presentation transcript:

HTTP Reading: Section and COS 461: Computer Networks Spring

Outline HTTP overview Proxies Persistent HTTP HTTP caching 2

Application Layer Protocols Variable Headers vs. Fixed Headers – App headers handled by program rather than hardware – Variable headers allow for incrementally adding features Human Readable – Easy for programmers to reason about – Parsed by humans / programs rather than hardware More later on, but useful for understanding HTTP’s design 3

HTTP Basics (Overview) HTTP layered over bidirectional byte stream – Almost always TCP Interaction – Client looks up host (DNS) – Client sends request to server – Server responds with data or error – Requests/responses are encoded in text Stateless – Server maintains no info about past client requests 4

HTTP Request 5 “cr” is \r “lf” is \n sp is “ “

HTTP Request Request line – Method GET – return URI HEAD – return headers only of GET response POST – send data to the server (forms, etc.) – URL (relative) E.g., /index.html – HTTP version 6

HTTP Request (cont.) Request headers – Variable length, human-readable – Uses: Authorization – authentication info Acceptable document types/encodings From – user If-Modified-Since Referrer – what caused this page to be requested User-Agent – client software Blank-line Body 7

HTTP Request Example GET /index.html HTTP/1.1 Host: 8

HTTP Request Example GET /index.html HTTP/1.1 Host: Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) Connection: Keep-Alive 9

HTTP Response 10

HTTP Response Status-line – HTTP version – 3 digit response code 1XX – informational 2XX – success – 200 OK 3XX – redirection – 301 Moved Permanently – 303 Moved Temporarily – 304 Not Modified 4XX – client error – 404 Not Found 5XX – server error – 505 HTTP Version Not Supported – Reason phrase 11

HTTP Response (cont.) Headers – Variable length, human-readable – Uses: Location – for redirection Server – server software WWW-Authenticate – request for authentication Allow – list of methods supported (get, head, etc) Content-Encoding – E.g x-gzip Content-Length Content-Type Expires (caching) Last-Modified (caching) Blank-line Body 12

HTTP Response Example HTTP/ OK Date: Tue, 27 Mar :49:38 GMT Server: Apache/ (Unix) (Red-Hat/Linux) mod_ssl/2.7.1 OpenSSL/0.9.5a DAV/1.0.2 PHP/4.0.1pl2 mod_perl/1.24 Last-Modified: Mon, 29 Jan :54:18 GMT Accept-Ranges: bytes Content-Length: 4333 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: text/html ….. 13

How to Mark End of Message? Content-Length – Must know size of transfer in advance Close connection – Only server can do this Implied length – E.g., 304 never have body content Transfer-Encoding: chunked (HTTP/1.1) – After headers, each chunk is content length in hex, CRLF, then body. Final chunk is length 0. 14

Example: Chunked Encoding HTTP/ OK Transfer-Encoding: chunked 25 This is the data in the first chunk 1A and this is the second one 0 Especially useful for dynamically-generated content, as length is not a priori known – Server would otherwise need to cache data until done generating, and then go back and fill-in length header before transmitting 15

Outline HTTP overview Proxies Persistent HTTP HTTP caching 16

Proxies End host that acts a broker between client and server – Speaks to server on client’s behalf Why? – Privacy – Content filtering – Can use caching (coming up) 17

Proxies (Cont.) Accept requests from multiple clients Takes request and reissues it to server Takes response and forwards to client 18 client Proxy server client HTTP request HTTP response HTTP request HTTP response origin server origin server

Assignment 1 Non-caching, HTTP 1.0 proxy – Support only GET requests Multi-process – Use fork() Simple binary that takes a port number –./proxy (proxy listens on port 12345) Work in Firefox & Chrome – Use settings to point browser to your proxy 19

Assignment 1 (Cont.) What you need from a client request: host, port, and URI path – GET HTTP/1.0 What you send to a remote server: – GET / HTTP/1.0 Host: Connection: close Check request line and header format Forward the response to the client 20

Assignment 1 (Cont.) Non-GET request? – return “Not Implemented” (code 501) Unparseable request? – return “Bad Request” (code 400) Use provided parsing library Postel’s law – Be liberal in what you accept, and conservative in what you send – convert HTTP 1.1 request to HTTP 1.0 – convert \r to \r\n – etc 21

Advice Networking is hard – Hard to know what’s going on in network layers – Start out simple, test often Build in steps – Incrementally add pieces – Make sure they work – Will help reduce the effect of “incomplete” information 22

Assignment 1 – Getting Started Modify Assn 0 to have server respond – Simple echo of what client sent Modify Assn 0 to handle concurrent clients – Use fork() Create “proxy” server – Simply “repeats” client msg to a server, and “repeats” server msg back Client sends HTTP requests, proxy parses 23

Outline HTTP overview Proxies Persistent HTTP HTTP caching 24

Problems with simple model Simple model – request one object a time, sequentially Multiple connection setups – Connection setup for each item (imgs, js, etc) Short transfers are hard on TCP Lots of extra connections – Increases server state/processing 25

Persistent HTTP Reuse connection – Request header “Connection: Keep-Alive” – Reduces # of connection setups Benefits – Reduces server overhead – Reduces latency (i.e., faster page loads) – Allows pipelining 26

Pipelining Issue multiple requests at a time – Don’t have to wait for previous response – More efficient use of link Use carefully – POST requests should not be pipelined (changes server state) – GET/HEAD requests are usually okay 27

Persistent HTTP Non-persistent HTTP issues: Connection setup for each request But browsers often open parallel connections Persistent HTTP: Server leaves connection open after sending response Subsequent HTTP messages between same client/server are sent over connection Persistent without pipelining: Client issues new request only when previous response has been received One RTT for each object Persistent with pipelining: Default in HTTP/1.1 spec Client sends multiple requests As little as one RTT for all the referenced objects Server must handle responses in same order as requests 28

“Persistent without pipelining” most common When does pipelining work best? – Small objects, equal time to serve each object – Small because pipelining simply removes additional 1 RTT delay to request new content Alternative design? – Multiple parallel connections (typically 2-4). Also allows parallelism at server – Doesn’t have problem of head-of-line blocking like pipelining Dynamic content makes HOL blocking possibility worse In practice, many servers don’t support, and many browsers do not default to pipelining 29

Outline HTTP overview Proxies Persistent HTTP HTTP caching 30

HTTP Caching Why cache? – Lot of objects don’t change (images, js, css) – Reduce # of client connections – Reduce server load – Reduce overall network traffic; save $$$ 31

Caching is Hard Significant fraction (>50%?) of HTTP objects uncachable – Dynamic data: Stock prices, scores, web cams – CGI scripts: results based on passed parameters – Cookies: results may be based on passed data – SSL: encrypted data is not cacheable – Advertising / analytics: owner wants to measure # hits Random strings in content to ensure unique counting Want to limit staleness of cached objects 32

Validating Cached Objects Timestamps – Server hints when an object “expires” (Expires: xxx) – Server provides last modified date, client can check if that’s still valid – Why the server’s timestamp? Problems – Server replicas won’t agree on time – Objects may go back to previous value, and using time will have you redownload the object There are other ways (look up ETags) 33

Example Cache Check Request GET / HTTP/1.1 Accept-Language: en-us If-Modified-Since: Mon, 29 Jan :54:18 GMT Host: Connection: Keep-Alive 34

Example Cache Check Response HTTP/ Not Modified Date: Tue, 27 Mar :50:51 GMT Connection: Keep-Alive 35

Web Proxy Caches User configures browser: Web accesses via cache Browser sends all HTTP requests to cache – Object in cache: cache returns object – Else: cache requests object from origin, then returns to client 36 client Proxy server client HTTP request HTTP response HTTP request HTTP response origin server origin server

Summary HTTP: Simple text-based file exchange protocol – Support for status/error responses, authentication, client- side state maintenance, cache maintenance How to improve performance – Persistent connections – Pipelining – Proxies – Caching 37