× Close Announced Support and True Support

Until recently, web servers only worried about two flavors of HTTP: HTTP and HTTPS. Upon receiving a new connection, servers differentiated between the two using the TCP port number (80 for HTTP and 443 for HTTPS).

Now, browsers may contact web servers using two additional protocols: SPDY and HTTP/2. Rather than assigning them new port numbers, they are both served on port 443 (along with HTTPS 1.1). This means servers need a new way of determining which application protocol to speak on a new connection. The solution is a TLS extension called Next Protocol Negotiation (NPN) and its successor, Application-Layer Protocol Negotiation (ALPN). NPN/ALPN allows application endpoints to negotiate which protocol to use over TLS.

Servers use NPN/ALPN to indicate to clients which application protocols they support; we call this announced support. In many cases, however, if a client makes a request to a server announcing HTTP/2 support, the server downgrades the connection to HTTP 1.1. If, on the other hand, the server responds using HTTP/2, we call this partial support or true support.