SlideShare ist ein Scribd-Unternehmen logo
1 von 36
What's Up With
     HTTP?
             Mark Nottingham
Principal Technical Yahoo! <mnot@yahoo-inc.com>
   IETF HTTPbis WG Chair <mnot@mnot.net>
Agenda
• HTTP in Theory: The Standards
• HTTP in Practice: The Implementations
• New Stuff: Fixing the Suck
(poorly hidden) Agenda
• Inform what HTTP (the protocol) can do
• Inform what HTTP implementations can't
  (yet) do
• Encourage implementers to close the gap
HTTP in Theory:
 The Standards
   (and some history)
HTTP circa 1996
•   HTTP/0.9 fading quickly
•   HTTP/1.0 taking off
•   HTTP/1.1 to contain the damage
    •   virtual hosting
    •   persistent connections
    •   caching
•   HTTP-NG discussions already underway
    •   binary (i.e. length-delimited headers)
    •   generic
    •   ...
HTTP circa 1996
• Typical use
  •   Browser client, static or CGI content
  •   GET, POST
• WebDAV: Glimmer in Whitehead’s eye
• Services: huh?
2002: BCP56
•   “On the use of HTTP as a Substrate”
•   Brought about by new (ab)use; e.g., IPP
•   Reasonable advice for the IETF community,
    but failed to foresee “services” and “Web 2.0”
•   Codified distaste with non-browser uses
    •   A new port for every app
    •   Probably a new URI scheme too
•   Currently being considered for deprecation
HTTP in 2009
• HTTP/2.0 didn’t happen
• WS-* debacle unfortunately did
 •   PEP turned into SOAP
• “RESTful” APIs
• Pressure to extend
 •   Bidirectional communication (AJAX, BOSH...)
 •   New Web protocols (OAuth, CORS...)
• Explosion of implementations
 •   new servers, clients
 •   new frameworks, APIs
• Interop is OK for "traditional" usage, but...
• More implementations = more variance
• Use cases are getting more exotic
• Extensions are proliferating
• Underlying design is poorly documented
HTTPbis: Why
• IETF Working Group to
  •   incorporate errata
  •   clarify ambiguities
  •   document extensibility
  •   improve interoperability
• I.e., writing the recipe down more clearly
  •   Specifications need to outlive their creators
  •   Align theory with reality
  •   NOT to extend HTTP (but wait...)
HTTPbis: Who
•   “Core” Implementers
    •   Apache (editing), Microsoft, Mozilla, Apple, Opera,
        Curl, Squid, WinGate, Serf
•   Extension Authors
    •   MetaLink, OAuth, WebDAV, PATCH
•   Large Web Operators
    •   PayPal, Google, Yahoo!
•   Security Experts
    •   Adam Barth, Amit Klein
•   The “Old Guard”
    • W3C, HTTP authors, URI authors
HTTPbis: What
•   Problem: RFC2616 is 176 pages of text/plain
•   Solution: split it up
    •   p1: messaging
    •   p2: semantics
    •   p3: payload
    •   p4: conditional requests
    •   p5: ranges
    •   p6: caching
    •   p7: authentication
HTTPbis: fixing...
•   Currently ~200 issues, like
    • editorial: ABNF conversion (no implied LWS)
    • procedural: Registries for status, methods
    • security: WS between header name and colon
    • i18n: Header charset and folding
    • html5: Is Content Sniffing allowed?
    • protocol: Really, only two connections?
    • semantic: What is a PUT response w/ETag?
    • caching: Is the method part of the cache key?
HTTPbis: Status
• Editors: Roy Fielding, Julian Reschke,Yves
  Lafon, Mark Nottingham
• Currently on draft -08
• Major rewrites in progress
  •   p1 messaging
  •   p5 caching
• “six months”
• Also informal place for discussion of new
  extensions, liaison with HTML5 work, etc.
HTTP in Practice:
The Implementations
Implementations
•   Clients
    •   IE, Mozilla, Opera, Safari, wget, curl, serf, Perl, Python, Ruby, Java
    •   Abstractions: XmlHttpRequest, Prototype.js, Flash APIs
•   Servers
    •   Apache, IIS, Lighttpd, Tornado, your router, phone and fridge
    •   Abstractions: filesystems, CGI, WSGI, Rack, Servlet
•   Intermediaries
    •   Squid, Traffic Server, Blue Coat, ISA, HAProxy, L7 load
        balancers, firewalls
    •   Not many abstractions (yet)
    •   20%-30% of Web traffic goes through a proxy
•   Caches in clients and intermediaries
    • starting to show up in Python, Ruby...
HTTP Versions
• Most everything these days is HTTP/1.1,
  except...
  •   Squid (full 1.1 coming)
  •   wget
  •   a few libraries
  •   very old browsers, servers, libraries
• That’s OK
Core Methods
•   GET, POST - universally supported
•   PUT, DELETE
    • A few clients can’t generate (e.g., Safari2 XHR)
    • Intermediaries can be configured to block, but
      usually aren’t (except the paranoid and mobile)
•   Biggest limitation is W3C languages
    •   XSLT, HTML forms
•   Result: X-HTTP-Method header (Google) or
    query params (e.g., ?real-method=POST)
“Advanced” Methods
•   OPTIONS
    •   Hard to configure in servers
    •   Isn’t cacheable... oops.
    •   Result: only used for esoteric protocols (*DAV)
•   Extension methods - FOO
    •   A number of clients don’t allow (e.g., XHR)
    •   Intermediaries often block (e.g., Squid, L4 balancers)
    •   Result: This probably isn’t so horrible
URIs
•   Mobile clients limit to as small as 256
•   Browsers
    •   IE: ~2k
    •   The rest: really really big
•   Intermediaries are OK up to about 4k; some go higher
•   Servers can be configured (or replaced)
•   Result: people putting queries in POSTs
    •   application-specific and frameworks
    •   frameworks doing this leads to gratuitous tunnelling
    •   HTTPbis recommendation: 8k
Headers
•   Some length limits (e.g. 20k total in Squid)
•   Almost no-one handles line continuations
    • Result: effectively profiled out
    • Disallowed by latest HTTPbis changes
•   Connection header control: not great
    • Result: extending protocol difficult
•   Trailers aren’t well-supported at all
    • Result: debug, status more difficult
Partial Content
• Content-Range / 206
• Biggest use: PDF
• Some caches don’t store partial content
  •   e.g., Squid
• Flash URL API can access ranges, but
  VideoPlayer, etc. don’t use it
• Result:
  $vidID = $_GET["vidID"];
  $vidPosition = $_GET["vidPosition"];
Redirection
•   Most* current browsers will preserve POST
    when they get a 307 Temporary Redirect
    •   ... but not PUT or DELETE
    •   ... and not a 301 or 302
    •   * except Safari - it doesn’t even do 307
•   HTTPbis redefining 301, 302 to reflect reality
Connection Handling
• Browsers limited to two concurrent
  connections to each server
 •   ouch!
 •   Result: BATCH, hosting on multiple names, etc.
• Being fixed in HTTPbis
 •   no particular limit
 •   IE8 already running with this
Pipelining
•   Clients
    •   Only Opera does by default (lots of heuristics)
    •   The brave can turn it on in Mozilla
    •   A few libraries allow (e.g., Serf)
•   Most intermediaries will be OK with it, but won’t
    forward
•   Many servers handle it just fine; a few don’t
•   Risks: interleaved or out-of-order responses
•   Predominant use today: SVN (thanks to Serf)
•   Result: “waterfall” of requests; CSS spriting
Cookies
• There is no cookie specification.
  •   Netscape isn’t complete
  •   RFC2109 doesn’t reflect current practice
  •   Opera only major implementation of RFC2965
• •Parsing raw dates is painful
      Set-Cookie: a=1; Expires=Thu, 24 July 2008 00:00:00

  •   requires special case handling
• Result: libraries required.
• New IETF Working Group contemplated
New Stuff
(a.k.a. fixing the suck)
Authentication
• Basic is interoperable, but not secure
• Digest is more secure, but not terribly
  interoperable
• Many newer requirements not addressed
 •   Phishing
 •   Delegated auth
• OAuth IETF Working Group
• "two-legged"
 •   Other efforts still coalescing
Security Model
• Origin Header
• Strict Transport Security (STS)
• Content Security Policy (CSP)
• Cross-Origin Resource Sharing (CORS)
• Server auth without SSL?
• W3C may be starting a WG.
PATCH
• “Restful” APIs are starting to abuse PUT
  •   “update that with this...”
• PATCH allows you to apply a diff to a
  resource
• Currently in IETF Last Call
Prefer Header
• Lets a client state what it wants;
  •   Full content in response body
  •   Status message in response body
  •   No response body
• E.g., POST /order-handler
• Currently a (quiet) Internet-Draft
Link Header
• Under-developed part of the Web arch:
  typed links
• Advertise/discover links in HTTP headers
 •   “this invalidates <foo>”
 •   “the previous one is <bar>”
 •   “edit this over at <baz>”
• In RFC2068, taken out of RFC2616
• In IETF Last Call
HyBi: Bidirectional HTTP
• "Short-Term" Solution: Comet
 •   Long polling optimisations
 •   Connection use hints
 •   Intermediary coordination
• "Long term": WebSockets
 •   New, very low-level protocol
 •   Already in browsers
 •   Likely to be an IETF WG very soon
Better Transport
• head-of-line blocking STILL an issue
  •   Pipelining isn’t well-supported, and doesn’t
      completely solve the problem
• HTTP doesn’t guarantee integrity
  •   except with Content-MD5 (which no one does)
• HTTP over TCP sucks
  •   on lossy links
  •   on high latency links
  •   on low bandwidth links
HTTP/2.0?
• Re-framing HTTP semantics onto better
  transport
• HTTP-over-SCTP (uDel, Cisco)
 •   Better over long-distance / lossy nets
• WAKA (Roy Fielding)
 •   Still probably TCP
 •   Allow new message patterns, more efficient
     implementation and network use
Take-Aways
•   Implementations are (obviously) usable, but
    •   They sometimes impose arbitrary limits
    •   They don’t expose some important controls
•   HTTPbis is an opportunity to
    •get implementers together
    •clarify ambiguities
    •improve interop
    •make HTTP a more stable basis for the next 10+ years
•   We need to start thinking about HTTP evolution NOW.

Weitere ähnliche Inhalte

Was ist angesagt?

21 HTTP Protocol #burningkeyboards
21 HTTP Protocol #burningkeyboards21 HTTP Protocol #burningkeyboards
21 HTTP Protocol #burningkeyboardsDenis Ristic
 
HTTP fundamentals for developers
HTTP fundamentals for developersHTTP fundamentals for developers
HTTP fundamentals for developersMario Cardinal
 
Hypertext transfer protocol (http)
Hypertext transfer protocol (http)Hypertext transfer protocol (http)
Hypertext transfer protocol (http)johnny19910916
 
Lec 7(HTTP Protocol)
Lec 7(HTTP Protocol)Lec 7(HTTP Protocol)
Lec 7(HTTP Protocol)maamir farooq
 
Hypertex transfer protocol
Hypertex transfer protocolHypertex transfer protocol
Hypertex transfer protocolwanangwa234
 
Introduction to HTTP
Introduction to HTTPIntroduction to HTTP
Introduction to HTTPYihua Huang
 
HTTP request and response
HTTP request and responseHTTP request and response
HTTP request and responseSahil Agarwal
 
Http request and http response
Http request and http responseHttp request and http response
Http request and http responseNuha Noor
 
HTTP - The Protocol of Our Lives
HTTP - The Protocol of Our LivesHTTP - The Protocol of Our Lives
HTTP - The Protocol of Our LivesBrent Shaffer
 
HyperText Transfer Protocol (HTTP)
HyperText Transfer Protocol (HTTP)HyperText Transfer Protocol (HTTP)
HyperText Transfer Protocol (HTTP)Gurjot Singh
 
HyperText Transfer Protocol
HyperText Transfer ProtocolHyperText Transfer Protocol
HyperText Transfer Protocolponduse
 
Introduction to HTTP protocol
Introduction to HTTP protocolIntroduction to HTTP protocol
Introduction to HTTP protocolAviran Mordo
 
Http request&response by Vignesh 15 MAR 2014
Http request&response by Vignesh 15 MAR 2014Http request&response by Vignesh 15 MAR 2014
Http request&response by Vignesh 15 MAR 2014Navaneethan Naveen
 

Was ist angesagt? (20)

21 HTTP Protocol #burningkeyboards
21 HTTP Protocol #burningkeyboards21 HTTP Protocol #burningkeyboards
21 HTTP Protocol #burningkeyboards
 
HTTP fundamentals for developers
HTTP fundamentals for developersHTTP fundamentals for developers
HTTP fundamentals for developers
 
Hypertext transfer protocol (http)
Hypertext transfer protocol (http)Hypertext transfer protocol (http)
Hypertext transfer protocol (http)
 
Lec 7(HTTP Protocol)
Lec 7(HTTP Protocol)Lec 7(HTTP Protocol)
Lec 7(HTTP Protocol)
 
HTTP
HTTPHTTP
HTTP
 
HTTP
HTTPHTTP
HTTP
 
Hypertex transfer protocol
Hypertex transfer protocolHypertex transfer protocol
Hypertex transfer protocol
 
Introduction to HTTP
Introduction to HTTPIntroduction to HTTP
Introduction to HTTP
 
HTTP request and response
HTTP request and responseHTTP request and response
HTTP request and response
 
Http request and http response
Http request and http responseHttp request and http response
Http request and http response
 
HTTP - The Protocol of Our Lives
HTTP - The Protocol of Our LivesHTTP - The Protocol of Our Lives
HTTP - The Protocol of Our Lives
 
HyperText Transfer Protocol (HTTP)
HyperText Transfer Protocol (HTTP)HyperText Transfer Protocol (HTTP)
HyperText Transfer Protocol (HTTP)
 
HTTP Presentation
HTTP Presentation HTTP Presentation
HTTP Presentation
 
HTTP
HTTPHTTP
HTTP
 
Http methods
Http methodsHttp methods
Http methods
 
Hypertext Transfer Protocol
Hypertext Transfer ProtocolHypertext Transfer Protocol
Hypertext Transfer Protocol
 
HyperText Transfer Protocol
HyperText Transfer ProtocolHyperText Transfer Protocol
HyperText Transfer Protocol
 
Introduction to HTTP protocol
Introduction to HTTP protocolIntroduction to HTTP protocol
Introduction to HTTP protocol
 
Http
HttpHttp
Http
 
Http request&response by Vignesh 15 MAR 2014
Http request&response by Vignesh 15 MAR 2014Http request&response by Vignesh 15 MAR 2014
Http request&response by Vignesh 15 MAR 2014
 

Ähnlich wie What's up with HTTP?

XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)Balazs Bucsay
 
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)Balazs Bucsay
 
Balázs Bucsay - XFLTReaT: Building a Tunnel
Balázs Bucsay - XFLTReaT: Building a TunnelBalázs Bucsay - XFLTReaT: Building a Tunnel
Balázs Bucsay - XFLTReaT: Building a Tunnelhacktivity
 
Class 1 - World Wide Web Introduction
Class 1 - World Wide Web IntroductionClass 1 - World Wide Web Introduction
Class 1 - World Wide Web IntroductionAhmed Swilam
 
Trick or XFLTReaT a.k.a. Tunnel All The Things
Trick or XFLTReaT a.k.a. Tunnel All The ThingsTrick or XFLTReaT a.k.a. Tunnel All The Things
Trick or XFLTReaT a.k.a. Tunnel All The ThingsBalazs Bucsay
 
XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)
XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)
XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)Balazs Bucsay
 
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)Balazs Bucsay
 
XFLTReat: a new dimension in tunnelling
XFLTReat:  a new dimension in tunnellingXFLTReat:  a new dimension in tunnelling
XFLTReat: a new dimension in tunnellingShakacon
 
REST Methodologies
REST MethodologiesREST Methodologies
REST Methodologiesjrodbx
 
I want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUICI want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUICSource Conference
 
Middleware in Golang: InVision's Rye
Middleware in Golang: InVision's RyeMiddleware in Golang: InVision's Rye
Middleware in Golang: InVision's RyeCale Hoopes
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkFabio Tiriticco
 
Http2 Security Perspective
Http2 Security PerspectiveHttp2 Security Perspective
Http2 Security PerspectiveSunil Kumar
 
Resumable File Upload API using GridFS and TUS
Resumable File Upload API using GridFS and TUSResumable File Upload API using GridFS and TUS
Resumable File Upload API using GridFS and TUSkhangtoh
 

Ähnlich wie What's up with HTTP? (20)

XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
XFLTReaT: A New Dimension in Tunnelling (HITB GSEC 2017)
 
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
XFLTReaT: a new dimension in tunnelling (BruCON 0x09 2017)
 
Balázs Bucsay - XFLTReaT: Building a Tunnel
Balázs Bucsay - XFLTReaT: Building a TunnelBalázs Bucsay - XFLTReaT: Building a Tunnel
Balázs Bucsay - XFLTReaT: Building a Tunnel
 
Class 1 - World Wide Web Introduction
Class 1 - World Wide Web IntroductionClass 1 - World Wide Web Introduction
Class 1 - World Wide Web Introduction
 
Trick or XFLTReaT a.k.a. Tunnel All The Things
Trick or XFLTReaT a.k.a. Tunnel All The ThingsTrick or XFLTReaT a.k.a. Tunnel All The Things
Trick or XFLTReaT a.k.a. Tunnel All The Things
 
XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)
XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)
XFLTReaT: A New Dimension In Tunnelling (DeepSec 2017)
 
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
XFLTReaT: A New Dimension in Tunneling (Shakacon 2017)
 
XFLTReat: a new dimension in tunnelling
XFLTReat:  a new dimension in tunnellingXFLTReat:  a new dimension in tunnelling
XFLTReat: a new dimension in tunnelling
 
SPDY Talk
SPDY TalkSPDY Talk
SPDY Talk
 
computer networking
computer networkingcomputer networking
computer networking
 
Http 2
Http 2Http 2
Http 2
 
Http Status Report
Http Status ReportHttp Status Report
Http Status Report
 
REST Methodologies
REST MethodologiesREST Methodologies
REST Methodologies
 
I want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUICI want the next generation web here SPDY QUIC
I want the next generation web here SPDY QUIC
 
Shiny New HTTP Shit
Shiny New HTTP ShitShiny New HTTP Shit
Shiny New HTTP Shit
 
Middleware in Golang: InVision's Rye
Middleware in Golang: InVision's RyeMiddleware in Golang: InVision's Rye
Middleware in Golang: InVision's Rye
 
SPDY and HTTP/2
SPDY and HTTP/2SPDY and HTTP/2
SPDY and HTTP/2
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
 
Http2 Security Perspective
Http2 Security PerspectiveHttp2 Security Perspective
Http2 Security Perspective
 
Resumable File Upload API using GridFS and TUS
Resumable File Upload API using GridFS and TUSResumable File Upload API using GridFS and TUS
Resumable File Upload API using GridFS and TUS
 

Mehr von Mark Nottingham

What HTTP/2.0 Will Do For You
What HTTP/2.0 Will Do For YouWhat HTTP/2.0 Will Do For You
What HTTP/2.0 Will Do For YouMark Nottingham
 
Browser Caching and You: A Love Story
Browser Caching and You: A Love StoryBrowser Caching and You: A Love Story
Browser Caching and You: A Love StoryMark Nottingham
 
Stupid Web Caching Tricks
Stupid Web Caching TricksStupid Web Caching Tricks
Stupid Web Caching TricksMark Nottingham
 
Global Taxation Arbitrage
Global Taxation ArbitrageGlobal Taxation Arbitrage
Global Taxation ArbitrageMark Nottingham
 
Leveraging the Web for Services at Yahoo!
Leveraging the Web for Services at Yahoo!Leveraging the Web for Services at Yahoo!
Leveraging the Web for Services at Yahoo!Mark Nottingham
 

Mehr von Mark Nottingham (7)

What HTTP/2.0 Will Do For You
What HTTP/2.0 Will Do For YouWhat HTTP/2.0 Will Do For You
What HTTP/2.0 Will Do For You
 
Browser Caching and You: A Love Story
Browser Caching and You: A Love StoryBrowser Caching and You: A Love Story
Browser Caching and You: A Love Story
 
Stupid Web Caching Tricks
Stupid Web Caching TricksStupid Web Caching Tricks
Stupid Web Caching Tricks
 
Global Taxation Arbitrage
Global Taxation ArbitrageGlobal Taxation Arbitrage
Global Taxation Arbitrage
 
Introducing REDbot
Introducing REDbotIntroducing REDbot
Introducing REDbot
 
Leveraging the Web for Services at Yahoo!
Leveraging the Web for Services at Yahoo!Leveraging the Web for Services at Yahoo!
Leveraging the Web for Services at Yahoo!
 
Web 2.0 on Speed
Web 2.0 on SpeedWeb 2.0 on Speed
Web 2.0 on Speed
 

Kürzlich hochgeladen

Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 

Kürzlich hochgeladen (20)

Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 

What's up with HTTP?

  • 1. What's Up With HTTP? Mark Nottingham Principal Technical Yahoo! <mnot@yahoo-inc.com> IETF HTTPbis WG Chair <mnot@mnot.net>
  • 2. Agenda • HTTP in Theory: The Standards • HTTP in Practice: The Implementations • New Stuff: Fixing the Suck
  • 3. (poorly hidden) Agenda • Inform what HTTP (the protocol) can do • Inform what HTTP implementations can't (yet) do • Encourage implementers to close the gap
  • 4. HTTP in Theory: The Standards (and some history)
  • 5. HTTP circa 1996 • HTTP/0.9 fading quickly • HTTP/1.0 taking off • HTTP/1.1 to contain the damage • virtual hosting • persistent connections • caching • HTTP-NG discussions already underway • binary (i.e. length-delimited headers) • generic • ...
  • 6. HTTP circa 1996 • Typical use • Browser client, static or CGI content • GET, POST • WebDAV: Glimmer in Whitehead’s eye • Services: huh?
  • 7. 2002: BCP56 • “On the use of HTTP as a Substrate” • Brought about by new (ab)use; e.g., IPP • Reasonable advice for the IETF community, but failed to foresee “services” and “Web 2.0” • Codified distaste with non-browser uses • A new port for every app • Probably a new URI scheme too • Currently being considered for deprecation
  • 8. HTTP in 2009 • HTTP/2.0 didn’t happen • WS-* debacle unfortunately did • PEP turned into SOAP • “RESTful” APIs • Pressure to extend • Bidirectional communication (AJAX, BOSH...) • New Web protocols (OAuth, CORS...) • Explosion of implementations • new servers, clients • new frameworks, APIs
  • 9. • Interop is OK for "traditional" usage, but... • More implementations = more variance • Use cases are getting more exotic • Extensions are proliferating • Underlying design is poorly documented
  • 10. HTTPbis: Why • IETF Working Group to • incorporate errata • clarify ambiguities • document extensibility • improve interoperability • I.e., writing the recipe down more clearly • Specifications need to outlive their creators • Align theory with reality • NOT to extend HTTP (but wait...)
  • 11. HTTPbis: Who • “Core” Implementers • Apache (editing), Microsoft, Mozilla, Apple, Opera, Curl, Squid, WinGate, Serf • Extension Authors • MetaLink, OAuth, WebDAV, PATCH • Large Web Operators • PayPal, Google, Yahoo! • Security Experts • Adam Barth, Amit Klein • The “Old Guard” • W3C, HTTP authors, URI authors
  • 12. HTTPbis: What • Problem: RFC2616 is 176 pages of text/plain • Solution: split it up • p1: messaging • p2: semantics • p3: payload • p4: conditional requests • p5: ranges • p6: caching • p7: authentication
  • 13. HTTPbis: fixing... • Currently ~200 issues, like • editorial: ABNF conversion (no implied LWS) • procedural: Registries for status, methods • security: WS between header name and colon • i18n: Header charset and folding • html5: Is Content Sniffing allowed? • protocol: Really, only two connections? • semantic: What is a PUT response w/ETag? • caching: Is the method part of the cache key?
  • 14. HTTPbis: Status • Editors: Roy Fielding, Julian Reschke,Yves Lafon, Mark Nottingham • Currently on draft -08 • Major rewrites in progress • p1 messaging • p5 caching • “six months” • Also informal place for discussion of new extensions, liaison with HTML5 work, etc.
  • 15. HTTP in Practice: The Implementations
  • 16. Implementations • Clients • IE, Mozilla, Opera, Safari, wget, curl, serf, Perl, Python, Ruby, Java • Abstractions: XmlHttpRequest, Prototype.js, Flash APIs • Servers • Apache, IIS, Lighttpd, Tornado, your router, phone and fridge • Abstractions: filesystems, CGI, WSGI, Rack, Servlet • Intermediaries • Squid, Traffic Server, Blue Coat, ISA, HAProxy, L7 load balancers, firewalls • Not many abstractions (yet) • 20%-30% of Web traffic goes through a proxy • Caches in clients and intermediaries • starting to show up in Python, Ruby...
  • 17. HTTP Versions • Most everything these days is HTTP/1.1, except... • Squid (full 1.1 coming) • wget • a few libraries • very old browsers, servers, libraries • That’s OK
  • 18. Core Methods • GET, POST - universally supported • PUT, DELETE • A few clients can’t generate (e.g., Safari2 XHR) • Intermediaries can be configured to block, but usually aren’t (except the paranoid and mobile) • Biggest limitation is W3C languages • XSLT, HTML forms • Result: X-HTTP-Method header (Google) or query params (e.g., ?real-method=POST)
  • 19. “Advanced” Methods • OPTIONS • Hard to configure in servers • Isn’t cacheable... oops. • Result: only used for esoteric protocols (*DAV) • Extension methods - FOO • A number of clients don’t allow (e.g., XHR) • Intermediaries often block (e.g., Squid, L4 balancers) • Result: This probably isn’t so horrible
  • 20. URIs • Mobile clients limit to as small as 256 • Browsers • IE: ~2k • The rest: really really big • Intermediaries are OK up to about 4k; some go higher • Servers can be configured (or replaced) • Result: people putting queries in POSTs • application-specific and frameworks • frameworks doing this leads to gratuitous tunnelling • HTTPbis recommendation: 8k
  • 21. Headers • Some length limits (e.g. 20k total in Squid) • Almost no-one handles line continuations • Result: effectively profiled out • Disallowed by latest HTTPbis changes • Connection header control: not great • Result: extending protocol difficult • Trailers aren’t well-supported at all • Result: debug, status more difficult
  • 22. Partial Content • Content-Range / 206 • Biggest use: PDF • Some caches don’t store partial content • e.g., Squid • Flash URL API can access ranges, but VideoPlayer, etc. don’t use it • Result: $vidID = $_GET["vidID"]; $vidPosition = $_GET["vidPosition"];
  • 23. Redirection • Most* current browsers will preserve POST when they get a 307 Temporary Redirect • ... but not PUT or DELETE • ... and not a 301 or 302 • * except Safari - it doesn’t even do 307 • HTTPbis redefining 301, 302 to reflect reality
  • 24. Connection Handling • Browsers limited to two concurrent connections to each server • ouch! • Result: BATCH, hosting on multiple names, etc. • Being fixed in HTTPbis • no particular limit • IE8 already running with this
  • 25. Pipelining • Clients • Only Opera does by default (lots of heuristics) • The brave can turn it on in Mozilla • A few libraries allow (e.g., Serf) • Most intermediaries will be OK with it, but won’t forward • Many servers handle it just fine; a few don’t • Risks: interleaved or out-of-order responses • Predominant use today: SVN (thanks to Serf) • Result: “waterfall” of requests; CSS spriting
  • 26. Cookies • There is no cookie specification. • Netscape isn’t complete • RFC2109 doesn’t reflect current practice • Opera only major implementation of RFC2965 • •Parsing raw dates is painful Set-Cookie: a=1; Expires=Thu, 24 July 2008 00:00:00 • requires special case handling • Result: libraries required. • New IETF Working Group contemplated
  • 28. Authentication • Basic is interoperable, but not secure • Digest is more secure, but not terribly interoperable • Many newer requirements not addressed • Phishing • Delegated auth • OAuth IETF Working Group • "two-legged" • Other efforts still coalescing
  • 29. Security Model • Origin Header • Strict Transport Security (STS) • Content Security Policy (CSP) • Cross-Origin Resource Sharing (CORS) • Server auth without SSL? • W3C may be starting a WG.
  • 30. PATCH • “Restful” APIs are starting to abuse PUT • “update that with this...” • PATCH allows you to apply a diff to a resource • Currently in IETF Last Call
  • 31. Prefer Header • Lets a client state what it wants; • Full content in response body • Status message in response body • No response body • E.g., POST /order-handler • Currently a (quiet) Internet-Draft
  • 32. Link Header • Under-developed part of the Web arch: typed links • Advertise/discover links in HTTP headers • “this invalidates <foo>” • “the previous one is <bar>” • “edit this over at <baz>” • In RFC2068, taken out of RFC2616 • In IETF Last Call
  • 33. HyBi: Bidirectional HTTP • "Short-Term" Solution: Comet • Long polling optimisations • Connection use hints • Intermediary coordination • "Long term": WebSockets • New, very low-level protocol • Already in browsers • Likely to be an IETF WG very soon
  • 34. Better Transport • head-of-line blocking STILL an issue • Pipelining isn’t well-supported, and doesn’t completely solve the problem • HTTP doesn’t guarantee integrity • except with Content-MD5 (which no one does) • HTTP over TCP sucks • on lossy links • on high latency links • on low bandwidth links
  • 35. HTTP/2.0? • Re-framing HTTP semantics onto better transport • HTTP-over-SCTP (uDel, Cisco) • Better over long-distance / lossy nets • WAKA (Roy Fielding) • Still probably TCP • Allow new message patterns, more efficient implementation and network use
  • 36. Take-Aways • Implementations are (obviously) usable, but • They sometimes impose arbitrary limits • They don’t expose some important controls • HTTPbis is an opportunity to •get implementers together •clarify ambiguities •improve interop •make HTTP a more stable basis for the next 10+ years • We need to start thinking about HTTP evolution NOW.