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

Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 

Kürzlich hochgeladen (20)

Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 

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.