为啥 HTTP/HTTPS 代理和 Socks 代理可以在一个端口上工作?
Posted
技术标签:
【中文标题】为啥 HTTP/HTTPS 代理和 Socks 代理可以在一个端口上工作?【英文标题】:Why can HTTP/HTTPS proxy and Socks proxy work on one single port?为什么 HTTP/HTTPS 代理和 Socks 代理可以在一个端口上工作? 【发布时间】:2021-10-16 22:20:19 【问题描述】:许多代理软件通过一个端口提供多种协议。
1。 是否保留任何字节(在 TCP/UDP 包之上或之中)来标记客户端正在使用哪个协议?
据我所知,HTTP协议只是由TCP的数据段承载,没有其他任何标记。
那么代理软件如何在收到请求时告诉协议? (通过猜测接收到的第一个或两个字节?这听起来不是一个好主意)
2。 HTTP代理和HTTPS代理有什么区别?
这是我的猜测
“HTTP代理”只表示可以为HTTP协议提供代理的服务,而“HTTPS代理”可以为HTTPS协议提供服务? (唯一的区别就是他们是否可以处理 HTTP CONNECT 方法)所以 HTTPS 代理只是一个功能增强的 HTTP 代理
或者
HTTPS 代理在客户端和代理服务器之间提供额外的安全层? (为了保护 HTTP CONNECT 方法头?)所以 HTTP 代理和 HTTPS 之间的通信过程是完全不同的 代理,HTTP代理和HTTPS代理都可以服务HTTP/HTTPS协议?
【问题讨论】:
【参考方案1】:是否有保留任何字节(在 TCP/UDP 包之上或之中)来标记客户端正在使用哪个协议?
它不是单个字节,但 HTTP 请求与 SOCKS 请求有明显的区别,看看各自的标准(RFC 7230、RFC 1928)就会发现。并非所有协议都可以轻松区分,但对于 SOCKS 和 HTTP 来说确实如此。
HTTP代理和HTTPS代理有什么区别?
HTTPS 代理是用于https://
请求的 HTTP 代理。这是通过使用CONNECT method 创建一个通过代理到最终服务器的隧道,然后在此隧道内执行端到端 HTTPS (TLS+HTTP) 来完成的。
... 还是 HTTPS 代理在客户端和代理服务器之间提供额外的安全层?
这也存在,但通常称为“HTTP 代理 over TLS”、“HTTP 代理 over HTTPS”、“加密代理连接”或类似名称,而不是“HTTPS 代理”。
【讨论】:
以上是关于为啥 HTTP/HTTPS 代理和 Socks 代理可以在一个端口上工作?的主要内容,如果未能解决你的问题,请参考以下文章
当有 SOCKS 代理时,为啥我的脚本遵循 /etc/hosts 而浏览器不遵循?
为啥 Windows 上的 IE/Chrome 不支持端口 27977 上的 SOCKS5 代理? [关闭]