一、代理
在了解正向代理和反向代理之前,我们首先要知道什么是代理,只有知道了什么是代理,才会很容易理解什么是正向代理和反向代理。
下面两张图告诉你什么是代理:
无代理时的请求与响应
有代理时的请求与响应
代理(Proxy)本来的意思并不是“转发”消息,而是先把消息收下来,然后“伪装”成原始客户端向Web服务器发出访问请求【引自《网络是怎么连接的》第五章节】。
代理服务器的英文全称是 Proxy Server,其功能就是代理网络用户去获取网络信息。形象的说:它是网络信息的中转站。在一般情况下,我们使用网络浏览器直接去连接其他 Internet 站点取得网络信息时,必须发出请求信号来得到响应,然后服务器再把信息以字节的方式传送回来,由浏览器解析即可获得数据。代理服务器就是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接发送请求到Web服务器,而是先向代理服务器发出请求,由代理服务器转发(或者重定向)到Web服务器来获取所需信息,获得信息之后再由代理服务器返回到你的浏览器。
为什么刚刚说的是代理,而这里却在说代理服务器,原因如下:其实正向代理并不是一开始就叫这个名字的,最早说的“代理”指的就是我们现在说的正向代理,或者也叫“代理服务器”。这是因为最早只有这么一种代理,后来出现了各种其他方式的代理,为了相互区别才起了“xxx代理”这样的名字。此外,由于代理种类变多了,叫“xx代理服务器”实在太长,一般都会省略“服务器”这3个字【引自《网络是怎么连接的》第五章节】。
二、正向代理
我们通常所说的代理,都是指的正向代理。
正向代理时,由客户端发送对某一个目标服务器的请求,代理服务器在中间将请求转发给该目标服务器,目标服务器将结果返回给代理服务器,代理服务器再将结果返回给客户端。
使用正向代理时,客户端是需要配置代理服务的地址、端口、账号密码(如有)等才可使用的。比如翻墙,任何可以连接到该代理服务器的软件,就可以通过代理访问任何的其他服务器,然后把数据返回给客户端,这里代理服务器只对客户端负责。
我们可以通过上图看到,客户端用户并没有直接与服务器相连。正向代理隐藏了真实的客户端地址。可以很好地保护客户端的安全性。
三、反向代理
服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知代理服务器的IP地址,而不知道在代理服务器后面的服务器集群的存在。
反向代理整个流程:由客户端发起对代理服务器的请求,代理服务器在中间将请求转发给某一个服务器,服务器将结果返回给代理服务器,代理服务器再将结果返回给客户端。
反向代理为什么叫反向代理
从我们用户的角度来看:代理我们发出请求的客户端被称为正向代理。而代理我们访问的服务器,则被称为反向代理。
四、正向代理和反应代理的区别
最核心的不同在于代理的对象不同
正向代理是代理客户端。
反向代理是代理服务器。
而根据这核心的区别,可以知道:代理哪端便可以隐藏哪端(也就是说:正向代理隐藏真实客户端,反向代理隐藏真实服务端)。
五、总结
正向代理为客户端服务。反向代理为服务器端服务。
完结!