Jump to content

SPDY: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Grain (talk | contribs)
Grain (talk | contribs)
Line 68: Line 68:


==Legal status==
==Legal status==
Protocol legal status and licensing appears to be unknown.
Protocol legal status and licensing appear to be unknown.


==See also==
==See also==

Revision as of 12:17, 4 October 2012

SPDY (pronounced speedy)[1] is an open networking protocol developed primarily at Google for transporting web content.[1] As of July 2012, it is an open de facto standard protocol, the group developing SPDY has stated publicly that it is working toward standardization (available as an Internet Draft),[2] and has open source reference implementations available in both Google Chrome/Chromium[3] and Mozilla Firefox.[4] SPDY is similar to HTTP, with particular goals to reduce web page load latency and improve web security. SPDY achieves reduced latency through compression, multiplexing, and prioritization.[1] The name "SPDY" is a trademark of Google.[5]

Design

The goal of SPDY is to reduce web page load time.[6] This is achieved by prioritizing and multiplexing the transfer of web page subresources so that only one connection per client is required.[1][7] TLS encryption is nearly ubiquitous in SPDY implementations, and transmissions are gzip-or DEFLATE-compressed by design (in contrast to HTTP, where the headers are not compressed). Moreover, servers may hint or even push content instead of awaiting individual requests for each resource of a web page.[8]

Relation to HTTP

SPDY does not replace HTTP; it modifies the way HTTP requests and responses are sent over the wire.[1] This means that all existing server-side applications can be used without modification if a SPDY-compatible translation layer is put in place. When sent over SPDY, HTTP requests are processed, tokenized, simplified and compressed. For example, each SPDY endpoint keeps track of which headers have been sent in the past requests and can avoid resending the headers that have not changed; those that must be sent are sent compressed.

The IETF working group for HTTPbis is planning to start working on HTTP 2.0,[9] and will put out a call for proposals. SPDY has been suggested as a starting point, along with several others.[10]

Caching

The server push mechanism pushes content regardless of existing cache which can result in waste of bandwidth. The workaround is to use the server hint mechanism.[11]

Protocol support

For use within HTTPS, SPDY needs the TLS extension Next Protocol Negotiation (NPN),[12] thus browser and server support depends on the HTTPS library.

OpenSSL 1.0.1 or greater introduces NPN.[13] Support for NSS was also added.[14]

Protocol versions

SPDY is a versioned protocol. In its control frames there are 15 dedicated bits to indicate the version of the session protocol. Version 1 of SPDY protocol is not used anymore.[15] As of April 2012, Version 2 is current, with version 3 being tested in Chrome version 19 and higher, with the aim of replacing Version 2 in Chrome 22.[16] Firefox supports SPDY v3 in Firefox 15.[17] SPDY v3 will bring support for flow control, update the compression dictionary, and remove wasted space from certain frames, along with other minor bug fixes.[18]

Browser support and usage

The browsers Google Chrome/Chromium and Firefox (version 11+) support SPDY.[19][20] SPDY sessions in Chrome can be inspected via the URI: chrome://net-internals/#events&q=type:SPDY_SESSION%20is:active. Firefox 15 added support for version 3 of this protocol.[21]

While added in version 11 of Mozilla Firefox and SeaMonkey version 2.8, SPDY was not enabled by default until Firefox version 13 and SeaMonkey 2.10. SPDY protocol functionality can be (de)activated by toggling the network.http.spdy.enabled variable in about:config.[4]

FIXME: "[Firefox.SPDY] allows an attacker to hijack an encrypted SSL session." [1]

There is a command-line switch for Google Chrome (--enable-websocket-over-spdy) which enables an early, experimental implementation of WebSocket over SPDY.[22]

Amazon's Silk browser for the Kindle Fire uses the SPDY protocol to communicate with their EC2 service for Web page rendering.[23]

The Opera browser released an experimental build supporting both SPDY2 and SPDY3 on July 6, 2012[24] and soon after added SPDY to its beta Opera Next build.[25]

Server support and usage

As of March 2012, there are not many SPDY-enabled websites. Some Google services (e.g. Google search, Gmail, and other SSL-enabled services) use SPDY when available.[26] Google's ads are also served from SPDY-enabled servers.[27]

Twitter has enabled SPDY on its servers in March 2012, making it the second largest site known to deploy SPDY.[28]

Cloudflare is also providing a beta of SPDY on their servers from June 2012, though users who would like to use/test it must be paying customers as SPDY is built on top of TLS, only paying customers can use SSL/TLS Certificates.[29]

In March 2012, the open source Jetty Web Server announced support for SPDY in version 7.6.2,[30] while other open source projects were working on implementing support for SPDY, like node.js,[31][32] Apache (mod_spdy),[33] curl,[34] and nginx.[35]

In April 2012 Google started providing SPDY packages for Apache servers which led some smaller websites to provide SPDY support.[36]

In May 2012 F5 Networks announced support for SPDY in its BIG-IP application delivery controllers.[37]

In June 2012 NGINX, Inc. announced support for SPDY in the open source web server Nginx.[38]

In July 2012 Facebook announced implementation plans for SPDY.[39]

In August 2012 Wordpress.com announced support for SPDY across all their hosted blogs.[40]

Performance

An independent study shows that, in testing, the page load time with SPDY is not significantly different on most websites from HTTP or HTTPS,[41] because old optimization techniques such as splitting the content between many hosts prevent pipelining from taking place.[citation needed]

Protocol legal status and licensing appear to be unknown.

See also

References

  1. ^ a b c d e "SPDY: An experimental protocol for a faster web". Chromium Developer Documentation. Retrieved 2009-11-13.
  2. ^ "SPDY Protocol on IETF". Retrieved 2012-02-08.
  3. ^ "SPDY on Google servers?". Retrieved 2012-02-28.
  4. ^ a b "Mozilla Bug 528288 - Implement SPDY protocol".
  5. ^ "Google Permissions: Guidelines for Third Party Use of Google Brand Features". Google. Retrieved September 30, 2011.
  6. ^ "A 2x Faster Web". Official Google Chromium Blog. 2009-11-11. Retrieved 2009-11-13.
  7. ^ Iljitsch van Beijnum (2009-11-12). "SPDY: Google wants to speed up the web by ditching HTTP". Ars Technica. Retrieved 2009-11-13.
  8. ^ Mirko Lindner (13 November 2009). "Google stellt HTTP-Alternative SPDY vor". Retrieved 2011-10-21. Template:De icon
  9. ^ Nottingham, Mark. "What's next for HTTP". Retrieved 2012-03-31.
  10. ^ "HTTPbis Working Group Start To Consider HTTP/2.0". InfoQ. 2012-04-28. Retrieved 2012-08-09.
  11. ^ "Server Push and Server Hints - The Chromium Projects". Chromium.org. Retrieved 2012-05-10.
  12. ^ NPN protocol and explanation about it's need to tunnel SPDY over HTTPS.
  13. ^ Openssl 1.0.1 changelog.
  14. ^ TLS Next Protocol Negotiation. Section: Implementations.
  15. ^ SPDY Protocol - Draft 2: "Currently, the only valid string is "spdy/2" (spdy/1 isn't implemented anywhere anymore)".
  16. ^ Support for SPDY/3 Enabled for 10 Percent of Chrome Users.
  17. ^ "Firefox 15 Release Notes". Retrieved 28 August 2012.
  18. ^ "SPDY Protocol - Draft 3". Retrieved 25 August 2012.
  19. ^ Chromium SPDY client implementation.
  20. ^ Chromium: SPDY proxy examples.
  21. ^ "Firefox 15 — Release Notes". Retrieved 3 September 2012.
  22. ^ List of Chromium Command Line Switches.
  23. ^ Ryan Paul (28 September 2011). "Amazon's Silk Web browser adds new twist to old idea". Retrieved 2011-10-21.
  24. ^ Opera SPDY Build.
  25. ^ Even more new Core features in 12.50.
  26. ^ spdy-dev mailing list: SPDY on Google servers?.
  27. ^ http://www.eweek.com/c/a/Cloud-Computing/Google-Speeds-Up-WebPage-Downloads-with-SPDY-Protocol-240303/.
  28. ^ Twitter Adopts SPDY.
  29. ^ Introducing SPDY - CloudFlare Blog.
  30. ^ Jetty Feature SPDY.
  31. ^ "indutny/node-spdy · GitHub". Github.com. Retrieved 2012-05-10.
  32. ^ Fedor Indutny (2012-01-24). "What the $%@! is SPDY - blog.nodejitsu.com - scaling node.js applications one callback at a time". blog.nodejitsu.com. Retrieved 2012-05-10.
  33. ^ "mod-spdy - Apache SPDY module - Google Project Hosting". Code.google.com. Retrieved 2012-05-10.
  34. ^ "libspdy". daniel.haxx.se. 2011-10-18. Retrieved 2012-05-10.
  35. ^ https://twitter.com/#!/nginxorg/status/192301063934705665.
  36. ^ "mod_spdy - mod_spdy — Google Developers". Developers.google.com. Retrieved 2012-05-10.
  37. ^ http://www.f5.com/news-press-events/press/2012/20120508b.html.
  38. ^ "Announcing SPDY draft 2 implementation in nginx". Nginx, Inc. 2012-06-15. Retrieved 2012-06-16.
  39. ^ Beaver, Doug. "HTTP2 Expression of Interest". W3C. Retrieved 15 July 2012.
  40. ^ "Just enabled #SPDY for all http://WordPress.com -hosted sites". 2012-08-28. Retrieved 2012-08-28. {{cite web}}: External link in |title= (help)
  41. ^ "Not as SPDY as You Thought".[unreliable source?]