SPDY

from Wikipedia, the free encyclopedia
SPDY
Family: similar to HTTP in the
internet protocol family ,
but experimental
Operation area: Sending data packets
both locally and
worldwide via various
networks
SPDY in the TCP / IP protocol stack :
application SPDY
transport SSL / TLS
TCP
Internet IP ( IPv4 , IPv6 )
Network access Ethernet Token
bus
Token
ring
FDDI ...
Standards: n. n.

SPDY [ ˈspiːdi ] (from English speedy , 'flott', 'nimble' or 'fast') is an experimental TCP -based network protocol that was developed by Google . SPDY supplements the HTTP protocol for this purpose . The HTTP / 2 standard adopted in May 2015 is largely based on SPDY.

functionality

Every SPDY transmission is encrypted using TLS . According to Google, SPDY achieves a page load around twice as fast by multiplexing the transmissions. This means that any number of documents can be transmitted in parallel over a single TCP connection. Here SPDY offers the possibility of prioritizing the individual requests in order to avoid a deadlock or to get important documents faster.

In addition, with SPDY, the server can initiate transmissions itself and send content directly to the client without a request (server push). Associated with this can u. a. the loading times of further page views can be reduced and a better utilization of the network can be achieved, since senseless queries on suspicion are eliminated.

implementation

Client side

Google Chrome was the first web browser to support SPDY. Mozilla Firefox supports SPDY from version 11; from version 13 it is activated by default. Opera supports SPDY since version 12.10. SPDY is supported by around 3% of all websites. From version 11 and Windows 8.1, Microsoft Internet Explorer also supports SPDY.

If SPDY is used on Firefox web browsers, the response header contains the entry “X-Firefox-Spdy” with a value greater than or equal to 1 .

TLS False Start has been deactivated in Google Chrome from version 20 (2012); Websites that support Next Protocol Negotiation ( NPN ) are an exception .

According to an announcement by Google on February 10, 2015, NPN and SPDY will no longer be supported by the Chrome browser from 2016, as these will be replaced by the HTTP / 2 and ALPN standards , in which SPDY is included.

Server side

For the Apache HTTP Server , SPDY support can be retrofitted using the mod spdy module . This was developed by Google and was given to the Apache Foundation in 2014. There is no official support for the current version 2.4.x (as of December 18, 2014). nginx supports SPDY 3.1 from version 1.6, older versions (before 1.5.10) also support the outdated SPDY / 2.

Protocol support

For use within HTTPS , SPDY requires the TLS extension Next Protocol Negotiation , or NPN for short . For this reason, the support of SPDY in browsers and web servers depends on the SSL library used and its support on NPN.

OpenSSL version 1.0.1 and higher supports NPN. There are also adaptations for NSS and TLSLite that enable NPN support.

It is planned to abandon NPN support in favor of Application-Layer Protocol Negotiation (ALPN), as this is also used by HTTP / 2.

The Security Support Provider Interface (SSPI), Microsoft's implementation of TLS, does not support NPN. As a result, SPDY is not available in current .NET implementations or is only available via third-party interfaces.

Protocol versions

SPDY is a versioned protocol. It has 15 control bits (within the control frame) that define the version of the session protocol.

  • Version 1: this version is no longer used.
  • Version 2: discontinuation planned. Nginx supports SPDY / 2 in versions prior to 1.5.10. As of Firefox 28 and newer versions of Google Chrome, support has already been discontinued. The OpenLiteSpeed web server supports SPDY / 2 (in addition to SPDY / 3) from version 1.1.
  • Version 3: SPDY / 3 extends the protocol to include flow control and an updated compression (dictionary). In addition, the size of specific transmission frames has been optimized and errors have been corrected. Firefox supports SPDY / 3 from version 15, Internet Explorer from version 11.
  • Version 3.1: SPDY v3.1 introduces the flow control for the session layer and removes the CREDENTIALS transmission frame (and related errors). Firefox supports version 3.1 of the protocol from version 27 and the OpenLiteSpeed ​​server from version 1.2.7. With version 1.5.10, Nginx also supports the protocol version SPDY / 3.1.
  • Version 4.0: SPDY v4 alpha3 merges the protocol more closely with the HTTP / 2 draft; it has a new flow control for data streams (streaming) and the error codes have been adjusted to those of HTTP / 2.

criticism

According to Microsoft, the semantics of server push contradict those of HTTP.

Due to the mandatory encryption, many (transparent) proxies will no longer work. This also makes it very difficult to filter the transmitted content.

Web links

Individual evidence

  1. http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft2#TOC-Data-flow
  2. http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft2#TOC-SYN_STREAM 3 bit priorities
  3. a b http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft2#TOC-Server-Push-Transactions
  4. Firefox 11 implements the SPDY protocol - Article dated March 14, 2012.
  5. network.http.spdy.enabled true - Link to Bugzilla accessed on April 22, 2012.
  6. ^ Opera 12.10 is out - Opera Developer News.
  7. Usage of SPDY for websites - W3Techs.
  8. https://bugzilla.mozilla.org/show_bug.cgi?id=736882#c1
  9. ^ Adam Langley: False Start's Failure (April 11, 2012) . Retrieved September 25, 2013.
  10. SPDY is to be quickly replaced by HTTP / 2 in Chrome . Retrieved February 10, 2015.
  11. http://code.google.com/p/mod-spdy/
  12. Owen Garrett: NGINX 1.6 and 1.7 released , NGINX, Inc., April 24, 2014.
  13. NPN protocol and explanation about its need to tunnel SPDY over HTTPS .
  14. Openssl 1.0.1 changelog .
  15. ^ TLS Next Protocol Negotiation. Section: Implementations ( Memento of the original from July 30, 2012 in the Internet Archive ) Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. . @1@ 2Template: Webachiv / IABot / technotes.googlecode.com
  16. ^ Adam Langley: Imperial Violet . Retrieved February 11, 2015.
  17. SPDY Protocol - Draft 2 : “Currently, the only valid string is 'spdy / 2' (spdy / 1 isn't implemented anywhere anymore)”.
  18. Module ngx_http_spdy_module . Nginx.org. Retrieved June 3, 2014.
  19. Issue 303957 - chromium - Make Chrome support only SPDY / 3 and above - An open-source project to help move the web forward. - Google Project Hosting . Code.google.com. October 3, 2013. Retrieved February 19, 2014.
  20. OpenLiteSpeed ​​1.1 (With SPDY!) Accessed on August 12, 2013.
  21. SPDY Protocol - Draft 3.1 . Retrieved November 17, 2013.
  22. OpenLiteSpeed ​​1st Web Server to Support SPDY / 3.1! accessed January 10, 2014.
  23. NGINX Announces Support for SPDY / 3.1 accessed on February 4, 2014.
  24. Upcoming SPDY / 4 changes to bring it more in sync with the HTTP / 2 draft . Retrieved February 27, 2014.
  25. Microsoft brings its own proposal for HTTP 2.0 heise.de