Skip to content
AdminKit

ALPN (Application-Layer Protocol Negotiation)

ALPN (Application-Layer Protocol Negotiation) is a TLS extension, defined in RFC 7301, that lets a client and server agree which application protocol to run over a connection as part of the TLS handshake, before any application data is sent. A client's ClientHello lists the protocols it supports, ordered by preference -- h2 and http/1.1 are the pair that matters most in practice -- and the server picks one from that list, so neither side needs a separate round trip to find out which to use. This is what lets a single HTTPS port, 443, serve both HTTP/2 and plain HTTP/1.1 without guessing: a browser advertising h2 support gets routed to it directly, while an older client falls back to http/1.1 within that same handshake. Negotiation happens inside the same TLS handshake a certificate-and-cipher check like AdminKit's SSL/TLS check already performs, even though its result doesn't surface the negotiated protocol itself.

By AdminKit team, Netbase JSC · Updated