当前位置:首页 > 资讯 > 正文

代理服务器(Proxy)原理

代理服务器(Proxy)原理

IP地址可以认为是用来确定和哪台主机进行通信,而端口号则是用来确定和主机上的哪个进程进行通信

举个例子,一台主机想要访问某个网址,该主机不会直接向对应的服务器请求该网址,而是通过一个中间服务器,主机告诉中间服务器我想要哪个网址的内容,中间服务器代替主机去请求该网址,中间服务器得到响应后将该响应发送给主机。这里的中间服务器就是代理服务器(Proxy Server)

典型地,翻墙软件的基本工作原理就基于此

由于设置了代理服务器为 ,因此每次浏览器请求Web页面的时候,都会先和代理服务器进行通信,告诉代理服务器主机要请求的URL。
具体的来说,浏览器会先尝试和代理服务器建立TCP连接,连接建立成功后,浏览器会将HTTP请求发送给代理服务器,代理服务器收到请求后便向对应的Web服务器发送请求来获取页面。
由于设置了端口号为,因此浏览器会尝试和该代理服务器上运行在端口10086的进程建立TCP连接,而之所以会出现 ,一个可能的原因就是代理服务器上没有运行在端口10086上的进程,因此浏览器无法和代理服务器建立TCP连接,从而出现的错误。

ShadowsocksR这种软件的工作原理也是类似这样,首先它会建立一个socket套接字,然后绑定主机的IP地址以及一个端口号,绑定成功后,它更改主机的代理服务器设置,比如说设置代理服务器IP地址为,即主机本身,设置端口号为它绑定的端口号。
这样一来,浏览器请求Web页面的时候,先和ShadowsocksR进程建立TCP连接,建立成功后,将HTTP请求发送给ShadowsocksR进程,然后ShadowsocksR进程会和其记录的真正的代理服务器来通信,让真正的代理服务器去请求对应的Web页面

下面为一个代理服务器的Python代码,该服务器在接收到浏览器的HTTP请求后,仅仅只是将该HTTP请求的内容打印出来