应用层协议协商

应用层协议协商（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。Langley, Adam. 

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

 支持 
下列库支持ALPN：
 GnuTLS从2013年5月发布的3.2.0版本开始。"gnutls 3.2.0" . 
 MatrixSSL从2014年12月发布的3.7.1版本开始。"MatrixSSL - News" . 2014-12-04. 
 Network Security Services从2014年4月发布的3.15.5开始。"NSS 3.15.5 release notes" . 
 OpenSSL从2015年1月发布的1.0.2开始。"OpenSSL 1.0.2 release notes" . 
 LibreSSL从2015年1月发布的2.1.3开始。"LibreSSL 2.1.3 released" . 2015-01-22. 
 mbed TLS (previously PolarSSL)从2014年4月发布的1.3.6开始。"Download overview - PolarSSL" . 2014-04-11. 
 SChannel从8.1 / 2012 R2开始。
 s2n从它2015年6月发布之初支持。
 wolfSSL (formerly CyaSSL)从2015年10月发布的3.7.0开始。"wolfSSL Release Change Log" . 2015-10-26. 

 参考资料 

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

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