从半个砖家说开去--代理服务器

来源:互联网 发布:航天一院 知乎 编辑:程序博客网 时间:2024/05/11 23:12

   这两天突然有人问“你是web的专家么?”,虽然我从事web开发已有些年头,但是说到专家二字,始终难以自我承认,所以,就自我解嘲地称自己为“半个砖家”,呵呵。

   从事后来看,也挺对得起这个称号的。因为别人问的问题,正好就是自己所不知道的HTTP代理服务器。他的目的是想通过代理服务器方式解决两个信息孤岛的互访问题,需要撮合HTTP访问和视频信息。

  这两天就在压力下恶补了关于代理服务器的基础知识,有感于网上凌乱的资料,和自我感觉总结出代理服务器最基础的科普知识,就记以文章以积累。

    代理服务器基本上有两种分类HTTP代理和SOCKS4/5代理。在HTTP代理中又可以区分正向代理和反向代理。如果按照这个概念原则来划分实际上SOCKS4/5代理服务器也可以被称之为“正向代理”。有别于HTTP代理,SOCKS5代理可以代理TCP和UDP等访问,经纬是比较分明的!

   对于正向代理而言,需要用户明确地指定,即对于一般用户而言是可感知的。而且在这个设置的背后,从数据流向上来讲,也是不同的。例如,通过http proxy上网,与不通过http proxy上网,在数据传输路径是大不一样的,非proxy方式可以认为是一种直连,而prxoy方式,所有的HTTP请求均要通过Proxy。正向代理相当于用户要自己穿上一套“代理”的外衣,包裹的是用户,以用户视角来看是,朝自己而来的正向。

  对于反向代理而言,包裹的是真正的WEB服务器,是服务器主动穿上了外衣,通过Proxy可以负荷分担、缓存等提高性能的技术,来提高网络访问速度。反向代理, 对于用户是透明的,无需用户自己设置,一般也感知不到。

   对于HTTP Proxy一般我们都比较了解,在IE选项中通过代理选项进行设置。对于WEB访问中的非HTTP请求,正向的HTTP代理是否会发挥作用呢?按照我现在的认识水平和把握的正向代理的原则来看,非HTTP请求的网络连接,需要在设计和编程处理,要自己主动穿上代理的外衣,要不然就是只能是直连。而这种过程并非像在IE中设置代理服务器这么一设置这么简单,通常是需要一大堆的代码进行支撑的。IE这么简单,是因为IE自己实现了Proxy的访问方式。

  带着这样的问题,研究QQ登录时使用代理登录的情况,进行了证实。可以看到在选择SOCKS5代理时,QQ会首先跟代理服务器之间建立socks的过程,也符合网上对于socks代理的示意图


是需要客户端自身支持和特殊编程的,首先与代理服务器之间建链,而非一种网络自提供的基础功能,自动帮你代理。

 

至于QQ可以通过HTTP Proxy登录,是一种比较特殊的使用吧,好多HTTP Proxy也支持的不够好。