Jump to content

SPDY

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 192.150.10.200 (talk) at 18:25, 18 May 2012 (MNot's blog post is much better, well-written, more up-to-date summary of status). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

SPDY (pronounced speedy)[1] is an experimental networking protocol developed primarily at Google for transporting web content.[1] Although not currently a standard protocol, the group developing SPDY has stated publicly that it is working toward standardization (available now as an Internet Draft[2]), and has reference implementations available in both Google Chrome [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 is not an acronym, but is a shortened version of the word "speedy".[5] SPDY is a trademark of Google.[6]

Design

The goal of SPDY is to reduce web page load time.[7] This is achieved by prioritizing and multiplexing the transfer of web page subresources so that only one connection per client is required.[1][8] 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.[9]

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 the existing server-side applications can be used without modification if a SPDY-compatible translation layer is put in place. When sent over SPDY, the HTTP requests are processed, tokenized, simplified and compressed. For example, each SPDY end-point 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[10], with SPDY as one of the candidates for a starting point.

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] Version 2 is current, version 3 is only tested in the Canary versions.

Browser support and usage

The browsers Google Chrome and Chromium utilize SPDY.[16][17] SPDY sessions can be inspected at the special URL: chrome://net-internals/#events&q=type:SPDY_SESSION%20is:active.

As of version 11, Mozilla Firefox and SeaMonkey 2.8 support SPDY, though it is not enabled by default. It can be turned on through the network.http.spdy.enabled preference in about:config.[4] SPDY is set to be enabled by default with the release of Firefox 13.[18]

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

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

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.[21] Google's ads are also served from SPDY-enabled servers.[citation needed]

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

In March 2012, the open source Jetty Web Server announced support for SPDY in version 7.6.2,[23] while other open source projects are working on implementing support for SPDY, like node.js,[24][25] Apache (mod_spdy),[26] curl,[27] and nginx.[28]

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

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". Retrieved 2012-02-08.
  3. ^ "SPDY on Google servers?". Retrieved 2012-02-28.
  4. ^ a b "Mozilla Bug 528288 - Implement SPDY protocol".
  5. ^ Schachinger, Kristine (August 11, 2011). "5 Black Hat Attack Vulnerabilities & Defensive Strategies". Retrieved September 29, 2011.
  6. ^ "Google Permissions: Guidelines for Third Party Use of Google Brand Features". Google. Retrieved September 30,2011. {{cite web}}: Check date values in: |accessdate= (help)
  7. ^ "A 2x Faster Web". Official Google Chromium Blog. 2009-11-11. Retrieved 2009-11-13.
  8. ^ Iljitsch van Beijnum (2009-11-12). "SPDY: Google wants to speed up the web by ditching HTTP". Ars Technica. Retrieved 2009-11-13.
  9. ^ Mirko Lindner (13 November 2009). "Google stellt HTTP-Alternative SPDY vor". Retrieved 2011-10-21.Template:De icon
  10. ^ "What's next for HTTP". Retrieved 2012-03-31. {{cite web}}: |first1= missing |last1= (help); Unknown parameter |lastl= ignored (help)
  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. ^ Chromium SPDY client implementation.
  17. ^ Chromium: SPDY proxy examples
  18. ^ Mozilla Bug 724563
  19. ^ Ryan Paul (28 September 2011). "Amazon's Silk Web browser adds new twist to old idea". Retrieved 2011-10-21.
  20. ^ List of Chromium Command Line Switches
  21. ^ spdy-dev mailing list: SPDY on Google servers?
  22. ^ Twitter Adopts SPDY
  23. ^ Jetty Feature SPDY
  24. ^ "indutny/node-spdy · GitHub". Github.com. Retrieved 2012-05-10.
  25. ^ 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.
  26. ^ "mod-spdy - Apache SPDY module - Google Project Hosting". Code.google.com. Retrieved 2012-05-10.
  27. ^ "libspdy". daniel.haxx.se. 2011-10-18. Retrieved 2012-05-10.
  28. ^ https://twitter.com/#!/nginxorg/status/192301063934705665
  29. ^ "mod_spdy - mod_spdy — Google Developers". Developers.google.com. Retrieved 2012-05-10.