NPN 与 ALPN

兩者的區別

NPN 是服務器發送協議列表,由客戶端進行選擇。而ALPN 則是客戶端發送列表,由服務端選擇
在NPN 中,最終的選擇結果是在ChangeCipherSpec 之後發送給服務端的,也就是說是被加密了的。而在ALPN 中,所有的協商都是明文的

在NPN 中,為了防止服務器支持的協議洩露,客戶端可以選擇一個不在服務器端給出的列表中的協議。而ALPN 中,服務器端只能選擇在客戶端發送的列表中的某個協議。
基本的區別就是以上幾點,雖然看起來兩者差別不大,不過似乎現在NPN 協議已經被棄用,以後Chrome 和Google 的服務器都將支持ALPN,而慢慢將NPN 給淘汰掉。

过,由于 SPDY 并没有一个确定的端口号,因此现有的 SPDY 协议都是跑在 HTTPS 的 443 端口上

來源: NPN 与 ALPN