3

我有一个使用 Berkeley 套接字用 C++ 编写的 Web HTTP/1.1 服务器实现。我正在考虑实现对 HTTP/2.0(或 SPDY)的支持,它允许请求和响应多路复用:

HTTP/2.0 中的二进制帧层支持完整的请求和响应多路复用,允许客户端和服务器将 HTTP 消息分解为独立的帧,交错它们,然后在另一端重新组合它们。

我的问题如下;如何启用 HTTP/2.0(或 SPDY)类型的请求和响应多路复用与使用 Berkeley Socket API 编写的现有 HTTP/1.1 程序?也许前面提到的 HTTP/2.0(或 SPDY)支持的帧复用已经被 TCP/IP 堆栈中的现有机制处理了,或者?

澄清:

我对使用单个连接并行传递多个请求和响应的多路复用部分特别感兴趣,我从规范中不明白这是如何在应用程序级协议中实现的?有任何想法吗?

4

1 回答 1

4

不,TCP 堆栈不处理任何这些,因为 SPDY 不是 TCP/IP 堆栈的一部分,它在 TCP 之上,传统上被认为是应用程序协议。它的控制和数据框架记录在草案规范中。您通过实现协议来实现多路复用。TCP 堆栈对 HTTP 或 SPDY 一无所知。

简而言之,SPDY 由单个 TCP 连接中的帧组成,其中包括相当简单的标头以及会话 ID 和帧长度等。您必须实现它才能进行多路复用。您应该能够使用标准的启用 SSL/TLS 的套接字代码来实现这一切。

据我所知,这是规范 -

http://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft2

于 2014-07-13T09:42:46.057 回答