应用层协议协商

应用层协议协商（Application-Layer Protocol Negotiation，简称ALPN）是一个传输层安全协议(TLS) 的扩展, ALPN 使得应用层可以协商在安全连接层之上使用什么协议, 避免了额外的往返通讯, 并且独立于应用层协议。 ALPN 用于 HTTP/2 连接, 和HTTP/1.x 相比, ALPN 的使用增强了网页的压缩率减少了网络延时。 ALPN 和 HTTP/2 协议是伴随着 Google 开发 SPDY 协议出现的。

Google Chrome从版本20（2012年）开始，使用早期的Next Protocol Negotiation（NPN）扩展的网站被禁用TLS False Start。

NPN已被重制的版本替代——即ALPN。2014年7月11日，ALPN被发布为RFC 7301。

支持 
下列库支持ALPN：
 GnuTLS从2013年5月发布的3.2.0版本开始。
 MatrixSSL从2014年12月发布的3.7.1版本开始。
 Network Security Services从2014年4月发布的3.15.5开始。
 OpenSSL从2015年1月发布的1.0.2开始。
 LibreSSL从2015年1月发布的2.1.3开始。
 mbed TLS (previously PolarSSL)从2014年4月发布的1.3.6开始。
 SChannel从8.1 / 2012 R2开始。
 s2n从它2015年6月发布之初支持。
 wolfSSL (formerly CyaSSL)从2015年10月发布的3.7.0开始。

参考资料

外部链接 
 draft-agl-tls-nextprotoneg-04 (NPN draft) 
 RFC 7301 "Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension"
 谈谈 HTTP/2 的协议协商机制  

互联网结构
通信工程
傳輸層安全協議