HTTP/1.0, 1.1 and Beyond, An Evolutionary Perspective on HTTP Henrik Frystyk Nielsen Purpose of this Talk • Why did HTTP end up the way.

Download Report

Transcript HTTP/1.0, 1.1 and Beyond, An Evolutionary Perspective on HTTP Henrik Frystyk Nielsen Purpose of this Talk • Why did HTTP end up the way.

HTTP/1.0, 1.1 and Beyond,
An Evolutionary Perspective on
HTTP
Henrik Frystyk Nielsen
Purpose of this Talk
• Why did HTTP end up the way it did?
– What caused new features to be introduced?
– Nobody could have predicted the path it took!
– Kiss (Keep it simple, stupid!) principle is essential
• What is HTTP, really?
– The Basic HTTP Building Blocks
• Bare Bone HTTP
– In every big protocol there is a small waiting to get out
• Common Comments and Questions about HTTP
– On performance, state, complexity, extensibility
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
2
Once Upon a Time...
• HTTP started out as a simple hypertext protocol
• Send GET request - get back a document
– Hypertext was what you asked for and what you got
• There was no information about the documents
you retrieved - was embedded in the document
• This were the early days of HTTP/0.9
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
3
Then came the <IMG …> hack
• No more only text based documents
• Needed type information to distinguish images
from text
• MIME provided a mechanism for describing
protocol messages
– Was adopted for describing HTTP messages
– A major cross road on the evolutionary path
• HTTP/1.0 was on its way
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
4
Then came Proxies and Gateways
• First to get access to other systems like Gopher
and WAIS
– Bootstrap mechanism for accessing information
• Then to traverse firewalls
– Turned out to be better than mechanisms like SOCKS
• And soon caching became popular based on last
modified dates and heuristics
• Proxies crucial piece of Web architecture
– Allows for new levels of indirection
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
5
In the Mean Time...
• People wanted faster renditions of their pages
containing text, images and audio
• Solution: Use multiple, parallel TCP connections
–
–
–
–
This actually makes a lot of sense
TCP sockets are easy to program
You get a lot of resources from the OS and the Net
It seems to be a lot faster!
• One problem - impact on Net a disaster
– Web applications were wasting huge amounts of
resources. Servers did not do any real work
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
6
The More the Merrier
• People wanted all their information in their
browser
• Use of POST to represent “strange ideas”
• POST is not AUTOMATABLE!
– Difference from Automated!
– It is not a question of handling strange ideas!
– It is a question of letting your computer handle strange
ideas!
• HTTP become a byte transport
• Lack of interoperability
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
7
The Web was Commercialized
• Vanity host names become popular
– Everybody wants their own domain name
(www.henrik.com)
• Due to a misoptimization, this could only be done
using multiple IP addresses
– Result is that many machines have multiple IP
addresses
– Examples of 100 or more IP addresses pr machine
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
8
…and Fueled by Advertisement
• Main accounting mechanism was hit counts in the
form of TCP connections
• No trust in heuristic caching - bust it!
– We loose revenue every time a cache serves a cached
document
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
9
Result: The Internet was on its
Knees
• Several reports of busy links collapsing - no data
got through
• IP addresses were consumed at very high rate
• But… I don’t think that HTTP would have the
position it has today as the most used protocol if
started with HTTP/1.1
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
10
HTTP/1.1 - The Big Fire Fighter
• Main purpose was to fix three problems
– Provide a semantically well-defined caching model
– Support vanity hostnames
– Limiting waste of TCP connections
• Criteria for solutions was that the end user would
see a clear win
– People need personal incentives to change
– Implementors need clear market benefit to implement
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
11
Hmm, Looks Promising!
• Success criteria was met
• In our performance work, we could show that
– HTTP/1.1 cuts down Round Trip Times by a lot
– Cut down TCP overhead by a factor of three
– Cut down time to transfer data by a factor of 2
• We can blast out PPP, LANs and WANs
– Have not made explicit testing on wireless
– Would urge people to help doing this
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
12
But How can We Extend it?
• HTTP is not a centrally controlled protocol
– Has maybe never been
– It’s extended by everybody for any possible purpose
• Clearly suffering from “HTTP is the hammer everything is a nail” syndrome
• No structured way of extending HTTP
• Lack of type information
– Using POST as a tunnel mechanism
– Reducing HTTP to a byte transport
• We need a more powerful framework!
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
13
HTTP - the Next Generation
• HTTP-NG is generic application level protocol
– A simple, extensible framework
• Explicit Layering and modularization
– Break up the big “lump” style HTTP message
• Extensibility at the core
– Lessons from our HTTP/PEP/Mandatory work
• Can the Web be implemented using Distributed
Object technology?
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
14
So What is HTTP anyway?
• Let’s have a quick look at the model
• It looks like MIME but isn’t quite
– HTTP is a layered Protocol
– Has Scope, Proxying and Caching
– Has inherent fuzziness built in
• Content negotiation and redirections
• It looks like RPC but isn’t quite
–
–
–
–
Proxies are explicit in the interfaces
Has the notion of end-to-end and hop-by-hop scope
Interfaces are both vertical and horizontal
Headers separated from methods
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
15
Methods, Headers, and Status Codes
• No explicit relationship between methods, header fields
and status codes in an HTTP message. Relationship must
be defined implicitly
• Methods to be performed on the resource
– A priori agreement of semantics. Can’t be extended dynamically
• Headers carry information about the parties involved, the
transaction, the message body or the resource
– Unknown header fields must be ignored without affecting the
outcome of the transaction
• Status Codes are the results returned by the server
– Status codes are somewhat easier to extend, as unknown status
codes must be treated as the x00 code of that class.
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
16
Common Questions about HTTP
• People often discard HTTP using inaccurate
assumptions
• Not a question of “HTTP all over” but a path for
evolvability
• Working our way towards a generic application
level protocol framework
– An important goal of HTTP-NG!
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
17
Why is HTTP/1.1 so big?
• I have often heard: We only need a small subset,
not the whole thing
• What does it really take to be an HTTP
application? Not a lot!
• Most features defined by header fields have a
request part and a response part.
• The SHOULD and MUST requirements in which
header field to support often comes in pairs: if you
support a certain feature then you have to support
all header fields associated with that feature.
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
18
HTTP is for HTTP URLs, right?
• HTTP can handle arbitrary URIs - not only
“http://…”
• This is a consequence of Proxies and Gateways in
the HTTP model
• I don’t believe in Gateways
– I want one information space with a consistent set of
services
• URI space is getting more complex
– New URI schemes on a daily basis
– A serious problem for interoperability
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
19
I can’t use HTTP - I need state!
• HTTP is inherently a stateless protocol
– Request-response pairs are independent but not
necessarily idempotent.
– POST, as well as sequences of PUT and DELETE,
changes state
• State can be built on top of HTTP
– Often sufficient to add a simple header field or a
parameter on an existing one
• Cookies is state at a higher level
– Involves the end-user and hence concerns about privacy
etc.
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
20
HTTP is for TCP Only!
• There is (almost) nothing that binds HTTP to TCP
– HTTP is known to run on top of non-TCP networks
• Often said that UDP is faster than TCP
– Pipelining changes this dramatically: requests and
responses take fragments of TCP packets
• UDP Support should be done by layering
– Many examples of MIME based protocols supporting
UDP at the application level
– Doesn’t make sense!
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
21
HTTP can’t handle Streamed Data
• There is a difference between Controlling and
Transmitting
• HTTP is not a real time protocol
• But can be used to control audio/video streams
– Essentially as a remote control protocol
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
22
HTTP is too Slow!
• Well, performance is relative
• HTTP is not a fast protocol - but there are not very
many fast protocols around
– POP is really bad with respect to round trips (RTT).
– CORBA is really bad with respect to bytes and RTTs
• On wireless, RTT is the factor that kills you
– HTTP/1.1 is fairly good at avoiding RTT delays
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
23
More Information on the Web
•
•
•
•
•
•
HTTP-NG Project
HTTP-NG Activity
HTTP-NG Working Groups (W3C Members only)
HTTP/1.x Overview
W3C Member Site
W3C
Saturday, November
07, 2015
HTTP - an Evolutionary Perspective
24