我知道代理的理论、代理是什么以及代理的用途。
有时,公司内部会使用 HTTP(s) 代理来过滤传出网络,例如,阻止除 HTTP/HTTPs 之外的任何内容。我认识一家这样的公司里的一个人,他甚至无法在任何端口上使用 SSH。另一方面,所有端口似乎都是开放的,只要他将其用于 HTTP 或 HTTPs(或者只是 TLS,我不知道)。
理论上,如果我看一下 OSI 模型,会话层之后的所有内容都是加密的。因此,当用户浏览 HTTPS 网站时,代理可以看到的唯一相关内容是 IP、端口,在某些情况下可能是域名,对吗?
这可能非常愚蠢,但我找不到这个问题的答案:
如果 TLS 标头加密后有任何情况,HTTPs 代理如何将数据包检测为 HTTPs(而不仅仅是 TLS)?
我试图嗅探我的本地网络,寻找线索,但我没有看到会话或传输层中提及应用程序协议。
答案1
HTTP 连接中的第一个数据包(HTTP 请求)或 HTTPS 连接中的第一个数据包(TLS ClientHello)与 SSH 中的第一个数据包明显不同。HTTPS/TLS 加密在这里没有帮助,因为您可以通过加密之前的初始握手检测到此流量。
但这并非万无一失。例如,Skype 尝试了各种方法来穿越防火墙,其中一种方法是使其流量看起来足够类似于 TLS,以便许多防火墙允许其通过,即使 Skype 并不使用真正的 TLS。