Sockets HTTP隧道是否发生在与CONNECT相同的套接字上?

Sockets HTTP隧道是否发生在与CONNECT相同的套接字上?,sockets,https,Sockets,Https,为了学习和调试,我正在尝试实现一个HTTP代理 对普通HTTP事务的支持非常容易实现,现在我希望实现对SSL/TLS隧道的支持 从RFC 7230: “隧道”在两个连接之间起到盲继电器的作用,而无需连接 更改消息。一旦激活,隧道就不被视为一方 到HTTP通信,尽管隧道可能已启动 通过HTTP请求 现在还不清楚我是否应该从发生HTTP CONNECT事务的套接字构建TLS套接字。我假设是这样,因为HTTP是无状态的,但我只是想确定一下。当客户端连接到HTTP代理时,CONNECT用于让代理与目标T

为了学习和调试,我正在尝试实现一个HTTP代理

对普通HTTP事务的支持非常容易实现,现在我希望实现对SSL/TLS隧道的支持

从RFC 7230:

“隧道”在两个连接之间起到盲继电器的作用,而无需连接 更改消息。一旦激活,隧道就不被视为一方 到HTTP通信,尽管隧道可能已启动 通过HTTP请求


现在还不清楚我是否应该从发生HTTP CONNECT事务的套接字构建TLS套接字。我假设是这样,因为HTTP是无状态的,但我只是想确定一下。

当客户端连接到HTTP代理时,
CONNECT
用于让代理与目标TCP服务器建立持久的TCP连接。然后代理盲目地在两个TCP连接之间来回传递数据,直到客户机或服务器断开连接,然后代理断开另一方的连接。这允许客户端向服务器发送数据,反之亦然,例如TLS数据包。这一点很重要,这样TLS服务器就可以在TLS握手过程中验证客户端的身份


因此,要回答您的问题-是的,客户机必须使用用于发出
CONNECT
请求的相同TCP套接字与目标服务器建立TLS会话。一旦
CONNECT
请求成功,客户端就可以将现有的TCP连接视为直接连接到服务器。代理在这一点上是透明的,任何一方都不需要关心它的存在。

有人能解释为什么这个问题被否决了吗?根据我的口味,这里的人被否决了一点,好像RFC都那么清楚。