一个实用的HTTP代理程序设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个实用的HTTP代理程序设计与实现
摘要:本文介绍了HTTP代理服务器基本工作原理、代理服务器的总体设计框架和其中采用的用以提高性能的关健技术、进程池技术和缓存机制以及核心模块的具体实现流程,最后提出了一种实用的HTTP代理服务器的设计方案。
关键词:代理服务器; 进程池; 缓存机制
Abstract:The design and implementation of HTTP proxy server with high performance are described. First, the basic mechanism of HTTP proxy server is introduced and then, the whole framework of proxy server and the key techniques process pool and cache technique are presented which are adopted to improve performance. Finally, the implementations of core modules are given.
Key words: proxy server; process pool; cache mechanism
目录
第一章前言 (2)
第二章HTTP原理与代理模型的设计 (3)
2.1 HTTP协议 (3)
2.2 HTTP代理模型 (3)
2.3 模型的实现 (4)
2.4 优化的代理技术 (7)
2.4.1 身份认证 (7)
2.4.2 Cache技术 (8)
第三章总体设计 (10)
3.1框架结构 (10)
3.2关键技术 (10)
3.2.1进程池管理 (10)
3.2.2缓存管理 (12)
第四章核心模块的实现 (14)
4.1主守护进程的实现 (14)
4.2代理服务模块的实现 (14)
4.3缓存管理进程的实现 (16)
结语 (17)
参考文献: (17)
第一章前言
随着Internet与Intranet的飞速发展,作为连接Internet与Intranet的的桥梁,代理服务器在实际应用中发挥着极其重要的作用。
代理服务器(Proxy)是网络信息的中转站。一般情况下,使用网络浏览器直接去链接其它Internet站点并取得网络信息时,须送出请求信写来得到应答,然后对方再把信息传送回来。代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,请求信写会先送到代理服务器,由代
理服务器来取回浏览器所需要的信息并传送给你的浏览器。而且,大部分代理服务器都具有缓冲的功能,就好像一个大的Cache,它不断将新取得数据包存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上己经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。
代理服务器不仅可以实现提高浏览速度和效率的功能,它还可以实现网络的安全过滤、流量控制(减少Internet使用费用)、用户管理等功能,因此它既是一种网络防火墙技术,同时也可以解决许多单位连接Internet引起IP地址不足的问题。将代理服务器的这些功能应用在多媒体教室中,可以方便地实现教师机对学生机的管理,下面就介绍一下该代理模型的设计与实现。
第二章HTTP原理与代理模型的设计2.1 HTTP协议
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。当客户端请求一个Web页面时,它首先与服务器建立连接,连接成功后,它要将所请求的页面,所用的协议及版木,语言及版木,所能接受的MIME类型,编码类型以及连接状况等一些本地信息参数等交给服务器,Web服务器收到请求后,发回所交送页面的的信息的响应头信息,然后再发送页面内容信息,最后,双方断开连接。
HTTP的早期版木为HTTP/0.9},1982年,Tim Berners-Lee提出了HTTP/1.0,1997年形成HTTP/ 1.1,也就是现在普遍使用的协议。HTTP/ 1.1在持续连接操作机制中实现流水方式,即客户端需要对同一服务器发出多个请求时,其请求的多数的Web页面都是由多部分组成(比如多张图片,声音),可用流水线方式加快速度。流水机制就是指在客户机请求到Web页面时,搜索其中的图像链接和声音链接,然后再请求这些页面,即连续发出多个请求并等到这些请求发送完毕,再等待响应。这样就大大节省了单独请求对响应的等待时间,使人们得到更快速的浏览。而且HTTP-NG (Next Generation of HTTP)的建议己经提出。
2.2 HTTP代理模型
根据HTTP协议规定,当客户端使用代理模式时,发送的请求命令格式如下: method http: //hostname/path/···/filename 例如:GET http: //.cm/。当客户端同网络代理服务系统建立连接后,代理服务器将收到请求命令,这时代理服务器应该截取主机名部分进行域名解析,并同该主机建立连接,将去掉主机名部分的请求命令转发给它,等待它做出响应,然后将得到的响应转发给客户端,最后断开连接。其模型如图2-1所示。
图2-1 带有Cache数据库的HTTP协议代理模型
注:①客户连接代理服务器,并发出客户请求:
②在本地Cache中无此资源时,连接到Internet;
③从Internet上获得所请求的资源:
④将客户所请求的资源发送给客户:
②*代理服务系统检索Cache 数据库:
③*如果客户请求的资源在数据库中,这直接将请求的资源发给代理服务器:
2.3 模型的实现
由于HTTP代理是典型的C/S模式,所以至少需要两个Socket(套接字)来实现客户与Web服务器的连接。结合在多媒体教室巾的应用,具体过程如下:
(1)代理服务器监听客户端的连接请求;
(2)客户端连接到代理服务器,发送请求信息;
(3)代理服务器解析客户端的发送过来的数据,确定服务
类型(HTTP),服务器地址和端口号,确定是否是合法的IP
和URL,确定是否在木地Cache库巾,是,则重定向,不是,则执行(4);
(4)代理服务器连接远程Web服务器;
(5)循环启动线程Server,该线程负责客户端,代理服务器
和远程Web服务器之间数据的交互,交互完毕结束线程;
(6)关闭server— field Socket(服务器端套接字),断开代理