我想知道 HTTP 隧道是如何工作的。我试过用 Google 搜索,但没有找到我想要的东西。
据我所知,HTTP 代理类似于反向代理。您请求一个网站,HTTP 代理获取并理解此请求并将其发送到原始服务器。答案从原始服务器发送到 HTTP 代理,再返回到您的 PC。除了仅通过隧道传输 TCP/IP 的 SOCKS 代理之外,HTTP 代理还会读取 HTTP 请求,对吗?
如果这是正确的,那么我的问题是:
如何通过 HTTP 代理传输其他协议?例如,即时通讯工具提供此类代理设置,并且它们使用自己的协议。
答案1
除了通常的GET
/ POST
/ HEAD
/之外PUT
,许多 HTTP 代理服务器还理解额外的CONNECT
请求,建立与远程主机的原始 TCP 连接。这是正确支持 HTTPS 所必需的,但通常也可用于其他协议。
$ nc proxy.example.com 8080
-> CONNECT mail.example.com:587 HTTP/1.0
->
<- HTTP/1.0 200 Connection Established
<- Proxy-agent: Apache/2.2.19 (Debian)
<-
<- 220 mail.example.com ESMTP Badger badger badger badger badger postfix postfix!
-> ehlo grawity-pc
<- 250-mail.example.com
<- 250-PIPELINING
<- 250-SIZE 10240000
<- 250-STARTTLS
<- 250-ENHANCEDSTATUSCODES
<- 250-8BITMIME
<- 250 DSN
-> quit
<- 221 2.0.0 Bye