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

windowsdocker 怎么配置http代理 http代理是什么

2天前CN2资讯

HTTP 代理服务器在Windows下的实现
摘要:本文介绍了代理服务器的优点,HTTP 代理服务器在Windows 下的实现,最后
简单讨论实现代理服务器的意义。
关键字:
代理服务器(proxy)、HTTP、Windows、线程
普通的因特网访问是一个典型的客户机/服务器(Client/Server)结构:用户本地计算机
上的客户端程序如浏览器发生请求,远端WWW 服务器程序响应请求并提供相应的数据。
而代理(Proxy)处于客户机和服务器之间,对于服务器来说,Proxy是客户机,提出请求;
对于客户机来说,Proxy是服务器,它接受请求并提供数据。
代理服务器模型
代理服务器具有以下几个的优点:
(一)安全屏障
Proxy 是建立在应用层的软件,它的最主要功能是作为firewall 的重要组成部分,为它保
护的主机起到了安全屏障的作用。Proxy起到流量控制,包过滤,访问控制,和操作系统用
户集成等作用,所以Proxy可以成为简单网络管理软件的核心部分,同时它也是中小型企业
INTERNER访问解决方案的重要组成部分。
(二)提高网络性能
当Internet的用户以指数函数增长时,网络的拥挤是网络管理的一个重要问题。Proxy Server
就好像一个大储藏库, 它有很大的Cache空间。如果通过该Proxy有人去过了某个站点,传
输了某些内容,那么Proxy 会将相关的资料 (包含文字、图型、多媒体……)备份一份在Proxy
Server 中。当用户再要通过该Proxy访问相同地址时,可直接从Cache中获得数据。一个有
效的Proxy服务器将可能将90%的用量控制在Proxy 服务器之下。所以不仅用户的访问速度
将会提高,网络的拥挤状况也将会大大改观。
(三)多机共享一个IP地址
当一个局域网只有一个IP时,就可以在服务器上安装Proxy,整个局域网的用户就可通过一
个IP访问Internet了,这样将会给局域网用户节省大量申请IP的费用。
WWW 代理服务器包括主要代理gopher,http,ftp,Telnet等几种服务,各种代理服务
的基本工作原理是相同的。HTTP 代理服务器是WWW 代理服务器的一个最重要的组成部
分,同时HTTP 的代理服务器的实现比较简单,因此在这里以它为样本介绍Windows 下的
代理服务器的实现方法。本文只介绍的代理服务器数据包转发的实现方法,由于Cache的处
理比较复杂,所以本文不对其进行讨论。
1、Brower 通过proxy访问Web Server 头文件的数据格式
由于不可能在此解释HTTP协议,所以只给出最简单的数据格式的例子:
动作:Brower 获得http://202.196.48.9/index.htmBrower 发送到proxy的数据:

Brower Proxy Server Get http://202.196.48.9/index.htm HTTP/1.0 Accept: */* Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 4.01;Windows 95) Host: 202.196.48.9 Proxy-Connection: Keep-Alive Server 返回proxy的数据头 HTTP/1.0 200 OK Server: Microsoft-IIS/2.0 Date: Thu, 02 Sep 1999 09:45:42 GMT Content-Type: text/html Accept-Ranges: bytes Last-Modified: Wed, 25 Aug 1999 00:10:35 GMT Content-Length: 26402


2、HTTP代理服务器的建立过程:
1)Proxy启动监听Brower 的连接申请
2)Proxy接受Brower 的申请,Brower 向Proxy发数据
3)Proxy解析Brower 发的数据,确定服务类型(HTTP),服务器地址和服务端口号
4)Proxy连接服务器
5)Proxy启动B_P_S(brower to proxy to server)线程,该线程负责Brower 把数据传到
Proxy,再由Proxy传到Server
6)B_P_S启动S_P_B(Server to Proxy to Brower)线程,该线程负责Server 把数据传到
Proxy,再由Proxy传到Client
7)传输完毕结束B_P_S线程和S_P_B线程
8)循环启动线程,直到所有传输完成
Brower Proxy Server
1.监听
2.连接上,发数据
3.解析
数据
4.连接服务器5.启动线程
初始化
B_P_S线程
S_P_B 线程
数据
数据
Proxy_Server Socket
Brower_Proxy Socket
Brower_Proxy Socket
Brower_Proxy Socket
Proxy_Server Socket
Proxy_Server Socket
接收
发送 接收
发送
HTTP代理服务器的建立过程
3、程序框架结构
HTTP协议是各部分单独连接传送的,Web页面中的每个文本,图片都是作为独立单元
传送的,为了提高Proxy的效率防止主程序阻塞,特意启动三级线程。
各线程之间的关系
主线程在Proxy端口监听Brower 的申请,然后启动B_P_S线程;B_P_S线程负责接受
每个Brower 的申请(每个B_P_S都是独立的),在完成Brower 到Server 单向数据传送的同
时启动S_P_B 线程,然后由S_P_S 线程完成Server 到Brower 的单向数据传送。由于篇幅
所限,本文将简要介绍B发给P的数据分析函数、B_P_S线程函数和S_P_B线程函数
(I) B发给P的数据分析
这部分的主要功能是分析B发给P的数据,确定服务类型和服务器相关信息。
客户机向服务器申请接受HTTP 数据,它发出的HTTP 命令格式第一行一般是:命令

---URL---协议,例如上文提到的: Get(命令) http://202.196.48.9/index.htm(URL) HTTP/1.0(协议) Proxy程序需要通过查找“URL”中的“http://”串确定是否是HTTP服务,从URL部分中 解析到Web服务器的地址,作为Proxy连接的目的地址。同时将“http://服务器地址”部分 从URL部分剔除,这样可以避免某些Web服务器重定向URL。 int GetAddressAndPort( char * str, char *address, int * port) { //读出“Get”、“http://202.196.48.9/index.htm”和“HTTP1.0” 分别存入s_Cmd,s_Server, s_Pro //在s_Pro中查找“http://”如果没有找到,则表示非HTTP服务,返回-1 //*port=80 HTTP缺省端口 //从s_Server 中解析地址“202.196.48.9”存入*str //把*str 中的服务器地址去掉,即“Get http://202.196.48.9/index.htm HTTP1.0”è“Get /index.htm HTTP1.0”,返回1 } (II) B_P_S线程 这部分的功能是:Brower 把数据传到Proxy,再由Proxy把数据传到Server。 B_P_S 线程由主线程启动,在整个Proxy 程序中负责协调该线程启动并同步S_P_B 线 程。该线程在Accept Brower 以后,复制自己,因为Accept 函数是阻塞的,在没有收到Brower 的连接申请时会阻塞,所以同时最多只有一个空闲(处于Accept阻塞状态)的线程。 UINT B_P_S(LPVOID pParm) 主线程 1 创建监听socket 2 监听Brower 的申请 3 启动B_P_S线程 B_P_S线程 Accpet Brower 复制自己 启动 S_P_B线程 S_P_B线程 { //Accept Brower 的连接申请 // AfxBeginThread(B_P_S) 重新启动一个B_P_S线程 //收到一块Brower 发送的数据 // GetAddressAndPort分析数据并去掉数据中的服务器地址 //启动S_P_B线程 //等待60 秒或S_P_B线程连接上服务器 // Brower 把数据传到Proxy,再由Proxy传到Server,循环直到数据传输完毕 //等待S_P_B线程结束。因为B_P_S是线程S_P_B的父线程,所以在S_P_B结束以前B_P_S 不能提前结束 } (III) S_P_B 这部分的主要功能是:Server 把数据传到Proxy,再由Proxy传到Client S_P_B 线程由B_P_S 线程启动,是B_P_S 的子线程。不把S_P_B 线程合入B_P_S 线 程的原因是,S_P_B线程有一个阻塞的连接远端服务器的connect动作,当网络传输条件较 差时,该动作会占用很多时间,甚至使程序无法控制,于是在B_P_S 中加入时间控制以保 证程序正常运行。S_P_B相对简单一些,但是由于它与远端服务器连接,所以一定要注意错 误与例外的处理,本文仅介绍程序流程,错误与例外的处理请参考相关资料。 UINT S_P_B(LPVOID pParm) { //解析服务器的域名 //新建socket并连接到服务器 // Server 把数据传到Proxy,再由Proxy传到Brower,循环直到数据传输完毕 // 返回 }


从以上的程序可以看出,Proxy是Brower 访问Server 的中介,它可以监控Brower 发出的所
有的HTTP数据包,对这些数据包进行阻塞,转发和流量记录。同时,它也可以监控Server
发出的所有的HTTP数据包,对这些数据包进行阻塞,转发和流量记录。
对 Browser 而言,在HTTP服务上是连通的,但是在IP层却不通;然而对Server 而言,它
看到的只是一个IP节点。在Internet环境看,这是一个单向的数据传输模式。
所有这些特点,使Proxy成为网络接入管理的核心部分,对Proxy简单扩展,就可以完成许
多功能。如果对数据包进行过滤,就构成了一个Fierwall;如果对流量进行记录,就构成了
一个计费系统。
4、实现代理服务器的意义
HTTP 代理服务器是中小型企业Web 访问解决方案的重要组成部分,对它的功能进行
简单的扩展,就可以构成访问计费系统和管理系统,因此拥有代理服务器的内核对企业管理
和程序员都是很有意义的。
周翚 侯滨

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/24694.html

    分享给朋友:

    “windowsdocker 怎么配置http代理 http代理是什么” 的相关文章

    腾讯云建站停止服务的影响与应对策略

    腾讯云建站(CloudPages)作为腾讯云的一项重大创新,一直以来都旨在简化网站建设过程。这个一站式自研模板建站SaaS产品,背后的团队努力希望通过无代码和零基础的设计,帮助更多的中小企业顺利实现数字化转型。我的朋友们也曾尝试过这个平台,发现它在解决数字化营销关键痛点方面表现出色。 CloudPa...

    AWS注册教程:轻松创建你的AWS账户

    在当今数字化时代,云计算的广泛应用早已成为一种趋势。在这种背景下,AWS(亚马逊网络服务)以其强大的技术和丰富的服务,逐渐成为许多人选择的云平台。那么,AWS到底是什么呢?简单来说,它是一个全面的云服务平台,提供包括计算能力、存储选项、数据库、机器学习等各种服务。我一直认为,AWS之所以能够在众多云...

    亿速云:构建安全、高效的云计算解决方案

    在当今数字化快速发展的时代,云计算服务的重要性愈发显著。我了解到,亿速云正是一家在这一领域崭露头角的企业,专注于提供高品质的云计算服务。自成立以来,亿速云围绕创新技术和卓越服务,努力帮助各行各业的用户实现数字化转型和升级。作为新一代云计算服务商,亿速云把握时代脉搏,致力于为全球用户提供稳定、安全、高...

    美国VPS市场分析:选择高性价比服务的指南

    在全球众多VPS市场中,美国VPS市场以其庞大的规模和快速的增长而著称。我总能在网上看到一些关于美国VPS的讨论,许多创业者和开发者都对它们赞不绝口。这一市场的吸引力,首先得益于云计算的迅猛发展。越来越多的企业和个人用户意识到,借助VPS可以更灵活地管理自己的网络资源,满足不断增长的需求。 美国VP...

    美国原生IP的优势和购买指南

    什么是美国原生IP 说到美国原生IP,首先要知道它是什么。原生IP(也称为本地IP)指的是通过互联网服务提供商(ISP)直接分配给用户的IP地址。这种IP地址通常代表了某个特定的地理位置。当我说“美国原生IP”时,实际上我是在提到那些位于美国本土的IP地址。这使得它们在访问某些当地内容或进行地域特定...

    如何选择和配置SEO VPS以提升网站搜索引擎排名

    在现代互联网世界,很多人可能对VPS(虚拟专用服务器)有所耳闻,但究竟它是什么呢?简单来说,VPS是一种服务器托管服务,它把一台物理服务器划分成多个虚拟服务器。每个VPS都拥有自己的操作系统和资源,用户享受更高的控制权和灵活性,相较于共享主机,我们可以独立管理,同时不需要担心其他用户的影响。这个特性...