Application-Layer Protocol Negotiation
Application-Layer Protocol Negotiation (ALPN) is a Transport Layer Security (TLS) extension that allows the application layer to negotiate which protocol should be performed over a secure connection in a manner that avoids additional round trips and which is independent of the application-layer protocols. It is used to establish HTTP/2 connections without additional round trips (client and server can communicate over to ports previously assigned to HTTPS with HTTP/1.1 and upgrade to use HTTP/2 or continue with HTTP/1.1 without closing the initial connection). Support. ALPN is supported by these libraries: History. Next Protocol Negotiation. In  January 2010, Google introduced IETF standard draft describing Next Protocol Negotiation TLS extension. This extension was used to negotiate experimental SPDY connections between Google Chrome and some of Google's servers. As SPDY evolved, NPN was replaced with ALPN. Application-Layer Protocol Negotiation. On July 11, 2014, ALPN was published as . ALPN replaces Next Protocol Negotiation (NPN) extension. TLS False Start was disabled in Google Chrome from version 20 (2012) onward except for websites with the earlier NPN extension. Example. ALPN is a TLS extension which is sent on the initial TLS handshake 'Client Hello', and it lists the protocols  that the client (for example the web browser) supports: The resulting 'Server Hello' from the web server will also contain the ALPN extension, and it confirms which protocol will be used for the HTTP request: