IIS and HTTP/2 server support

Reading the article "What's new in the .NET framework"...

https://msdn.microsoft.com/en-us/library/ms171868(v=vs.110).aspx

...it states...

Most of the major browsers support HTTP/2, so it's likely that your users will benefit from HTTP/2 support if your server supports it. Give it a try with the RC update.

.. and links to this wiki...

http://en.wikipedia.org/wiki/HTTP/2

Under servers it quotes

IIS supports HTTP/2 in Windows 10 beta

Whilst I clearly understand that Windows 10 is required for browser support I cannot find a clear answer as to what versions of Windows Server/IIS are required - the Wiki answer "IIS supports HTTP/2 in Windows 10 beta" makes no sense as they are not releasing Windows 10 server until next year.

I have searched for an answer and come up with nothing. If we have Server 2008 R2 and Server 2012 R2 will they return HTTP/2 to Windows 10 clients?

Thank you


Solution 1:

IIS versions are bound to OS versions, while IIS 10 on Windows Server 2016 does not come out until 2016, IIS 10 for Windows 10 was released on July 29th 2015 and does support HTTP/2.

In addition to support for HTTP/2 there are a few other new features in IIS 10, but Microsoft may add more before releasing Server 2016

Throughout the lifetime of IIS, Microsoft has never made any new core IIS features available to older versions of that product, so it is very unlikely that they will do that this time.

Considering the large number of IIS 7.x and 8.x servers and the benefits that http/2 brings to the table, it would be very nice, if they would change this policy this time, considering the new Microsoft and all, but I still doubt that.

Solution 2:

The following table provides a comparison of different client & server implementations:

+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| Name                                                         | Language       | Role(s)                      | Negotiation(s)             | Protocol id(s)                           |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| http4s-blaze                                                 | Scala          | server                       | ALPN                       | h2, h2-14                                |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| cl-http2-protocol                                            | Common Lisp    | client, server               | NPN, direct                | h2-14                                    |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| Deuterium                                                    | C              | client, server               | ALPN, direct               | h2, h2-14, h2c, h2c-14                   |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| F5                                                           | C              | server, proxy                | ALPN, NPN                  | h2-14 (11.6.0 HF2) h2 (upcoming release) |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| H2O                                                          | C              | Server, proxy                | ALPN, NPN, Upgrade, direct | h2, h2-14, h2-16                         |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| http-2                                                       | Ruby           | server, client               | ALPN, NPN, Upgrade, direct | h2, h2c, h2-17                           |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| http2                                                        | Go             | client, server               | NPN (+ ALPN w/ Go 1.4)     |                                          |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| Jetty                                                        | Java           | client, intermediary, server | ALPN, Upgrade, Direct      | h2, h2-17, h2-14, h2c, h2c-17            |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| LiteSpeed Enterprise                                         | C++            | Server                       | ALPN, NPN, Upgrade         | h2, h2-17, h2-14, h2c                    |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| Lucid                                                        | Erlang         | Server                       | NPN, direct                | h2, h2-16, h2-14                         |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| Microsoft                                                    | C/C++          | Client, Server               | ALPN                       | h2                                       |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| mod_h2                                                       | C              | Server                       | ALPN, NPN, Upgrade, direct | h2, h2c (plus -14,-16)                   |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| Netty                                                        | Java           | client, server               | ALPN, NPN, Upgrade, direct | h2, h2c                                  |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| nghttp2                                                      | C              | client, server, intermediary | ALPN, NPN, Upgrade, direct | h2, h2-16, h2-14, h2c                    |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| node-http2                                                   | NodeJS         | server, client               | ALPN, NPN, direct          | h2                                       |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| OkHttp                                                       | Android, Java  | mock server, client          | ALPN, NPN                  | h2                                       |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| OpenLiteSpeed                                                | C++            | Server                       | ALPN, NPN, Upgrade         | h2, h2-17 , h2-14, h2c                   |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| Protocol::HTTP2                                              | Perl           | server, client               | ALPN, NPN, Upgrade, direct | h2, h2c                                  |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| Brocade SteelApp Traffic Manager (formerly Riverbed/Zeus TM) | C++            | Server                       | ALPN, NPN, Upgrade, direct | h2, h2c                                  |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| Sasazka                                                      | NodeJS         | server                       | NPN                        |                                          |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| second-transfer                                              | Haskell        | server                       | ALPN                       | h2-14, h2                                |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| Trusterd                                                     | C/mruby        | client, server               | ALPN, NPN, direct          |                                          |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| Twitter                                                      | C++            | server, client               | ALPN, NPN                  | h2                                       |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| Undertow                                                     | Java           | Server, Intermediary         | ALPN, Upgrade              |                                          |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+
| Warp                                                         | Haskell        | Server                       | ALPN, direct               |                                          |
+--------------------------------------------------------------+----------------+------------------------------+----------------------------+------------------------------------------+

Links to products since I don't know how to keep table format with links inside.

  • http4s-blaze
  • cl-http2-protocol
  • Deuterium
  • F5
  • h2o
  • http-2
  • http2
  • Jetty
  • LiteSpeed Enterprise
  • Lucid
  • Microsoft
  • mod_h2
  • Netty
  • nghttp2
  • node-http2
  • OkHttp
  • OpenLiteSpeed
  • Protocol::HTTP2
  • Brocade SteelApp Traffic Manager (formerly Riverbed/Zeus TM)
  • Sasazka
  • second-transfer
  • Trusterd
  • Twitter
  • Undertow
  • Warp