每个 HTTP/2 连接会发送一条隐藏的秘密信息！
如果你监听过 HTTP/2 连接的建立过程，你也许会注意到在每个连接建立时都会发送一条这样的报文。如下：  即以下文本： PRI * HTTP2.0 SM  如果将 HTTP2.0 以及换行从其中去掉，那么我们就得到了PRISM！这是什么？是斯诺登所揭露的 NSA 的棱镜计划！只要是 HTTP/2.0 连接，都会在一开头就发送这样的报文。 是你的 HTTP/2.0 连接被 NSA 监控了么？不是！这条消息代表了你的服务器真正支持了 HTTP/2.0，它是一个用于识别的魔法字符串。 它在 RFC7540Section 3.5中描述如下：  在 HTTP/2 中，每个端点都需要发送一个连接引语作为所用协议
PRISM NSA HTTP/2.0
27.223.99.130
哈哈
绿色圣光 [Firefox 42.0|Windows 7]
2015-12-01T18:29:12.000
114.255.40.44
黑得漂亮！
Sephiroth [Firefox 42.0|Ubuntu]
2015-12-01T21:46:51.000
如果你监听过 HTTP/2 连接的建立过程，你也许会注意到在每个连接建立时都会发送一条这样的报文。如下：  即以下文本： PRI * HTTP2.0 SM  如果将 HTTP2.0 以及换行从其中去掉，那么我们就得到了PRISM！这是什么？是斯诺登所揭露的 NSA 的棱镜计划！只要是 HTTP/2.0 连接，都会在一开头就发送这样的报文。 是你的 HTTP/2.0 连接被 NSA 监控了么？不是！这条消息代表了你的服务器真正支持了 HTTP/2.0，它是一个用于识别的魔法字符串。 它在 RFC7540Section 3.5中描述如下：  在 HTTP/2 中，每个端点都需要发送一个连接引语作为所用协议
![PRISM](/data/attachment/album/201512/01/174610yw4ng4q75cwfwk5c.png)


如果你监听过 HTTP/2 连接的建立过程，你也许会注意到在每个连接建立时都会发送一条这样的报文。如下：


![](/data/attachment/album/201512/01/171643b56fb677699sskne.png)


即以下文本：



```
PRI * HTTP2.0

SM

```

如果将 HTTP2.0 以及换行从其中去掉，那么我们就得到了“**PRISM**”！——这是什么？是斯诺登所揭露的 NSA 的“棱镜计划”！只要是 HTTP/2.0 连接，都会在一开头就发送这样的报文。


是你的 HTTP/2.0 连接被 NSA 监控了么？不是！这条消息代表了你的服务器真正支持了 HTTP/2.0，它是一个用于识别的魔法字符串。


它在 [RFC7540](https://tools.ietf.org/html/rfc7540) [Section 3.5](https://tools.ietf.org/html/rfc7540#section-3.5) 中描述如下：



> 
> 在 HTTP/2 中，每个端点都需要发送一个连接引语作为所用协议的最终确认，并用于建立 HTTP/2 连接的初始设置。客户端和服务器发送不同的连接引语。
> 
> 
> 客户端的连接引语以24个字节开始，以16进制表示如下：
> 
> 
>  **0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a**
> 
> 
> 即以下列字符串开始： “**PRI \*** **HTTP/2.0\r\n\r\nSM\r\n\r\n”**。
> 
> 
> 


  
事实上，这个魔法字符串原本是“FOOBA”：在 2013/5/29 发布的 [draft-ietf-httpbis-http2-03](https://tools.ietf.org/html/draft-ietf-httpbis-http2-03#section-3.2) 中它还是这个样子：“**FOO \* HTTP/2.0\r\n\r\nBA\r\n\r\n**”。


而在同年6月份斯诺登事件沸沸扬扬之后，7/8发布的 [draft-ietf-httpbis-http2-04](https://tools.ietf.org/html/draft-ietf-httpbis-http2-04) 中就变成了“**PRI \* HTTP/2.0\r\n\r\nSM\r\n\r\n**”。


 


所以，你知道了吧？这个古怪的字符串是互联网工程任务组（IETF）对 NSA 的嘲讽。

