SlideShare una empresa de Scribd logo
1 de 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.

Más contenido relacionado

La actualidad más candente

Hypertext transfer protocol (http)
Hypertext transfer protocol (http)Hypertext transfer protocol (http)
Hypertext transfer protocol (http)
johnny19910916
 
Hypertex transfer protocol
Hypertex transfer protocolHypertex transfer protocol
Hypertex transfer protocol
wanangwa234
 
HyperText Transfer Protocol
HyperText Transfer ProtocolHyperText Transfer Protocol
HyperText Transfer Protocol
ponduse
 
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
Navaneethan Naveen
 

La actualidad más candente (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
 

Similar a 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 Tunnel
hacktivity
 
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
Balazs 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
 

Similar a 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
 

Más de Mark Nottingham

Más de 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
 

Último

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
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
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Último (20)

MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
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
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
"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 ...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
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
 
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
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
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
 
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 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 ...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

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.