Skip to content

计网课程项目-代理服务器-带有web cache功能

Notifications You must be signed in to change notification settings

BoxFighter/ProxyServer

Repository files navigation

ProxyServer

计网课程项目-代理服务器-带有web cache功能

学弟学妹们使用请点个星星

1 开发环境

开发语言:JAVA
开发工具:myeclipse2014
浏览器:Chrome

2 系统设计

2.1 系统类图


图1 主要类图

2.2 系统架构


图2 系统架构图

2.3 系统流程


图3 系统流程图

2.4 Web Cache设计


1.缓存命中
① 客户端请求某个Web数据,会先送至代理服务器中,代理服务器本身会监听80号端口接收用户请求
② 当代理服务器收到用户请求之后,会将这个请求送达至代理进程中
③ 进程创建一个子线程去处理这个请求,子线程拆除用户请求报文中的应用层首部,TCP首部,IP首部等,从而获取到请求报文中的URL
④ 对URL进行hash计算,然后和代理服务器中hash表中的缓存键进行比对,若一致则缓存命中
⑤ 寻找其中的Last-Modified:字段,发送If-Modified-Since:time请求首部给后端服务器,来询问是否数据未修改。如果服务器返回304 Not Modified,则在对应的值所指向的内存或硬盘空间上找到对应的内容数据返回响应给客户端,否则代理服务器会自行封装成请求报文,把自己当做http的客户端,向上游服务器发起请求,若内容存在,上游服务器会构建成响应报文,返回给代理服务器。当代理服务器收到响应之后,会检查该对象是否可以缓存,如若可以,会对URL进行hash之后生成一个键,存放到对应的hash表中,在相应的内存或磁盘空间上存储对应的内容数据,再返回响应给客户端

2.缓存未命中
① 客户端请求某个Web数据,会先送至代理服务器中,代理服务器本身会监听80号端口接收用户请求
② 当代理服务器收到用户请求之后,会将这个请求送达至代理进程中
③ 进程拆除用户请求报文中的应用层首部,TCP首部,IP首部等,从而获取到请求报文中的URL
④ 对URL进行hash计算,然后和代理服务器中hash表中的缓存键进行比对,不一致则缓存未命中
⑤ 代理服务器会自行封装成请求报文,把自己当做http的客户端,向上游服务器发起请求
⑥ 若内容存在,上游服务器会构建成响应报文,返回给代理服务器。
⑦ 当代理服务器收到响应之后,会检查该对象是否可以缓存,如若可以,会对URL进行hash之后生成一个键,存放到对应的hash表中
⑧ 在相应的内存或磁盘空间上存储对应的内容数据
⑨ 当操作完成之后,会将数据构建成相应报文,然后响应给客户端

3 实现截图

1.开启代理服务器

2.访问网页

3.查看缓存




4 使用说明

  1. 打开Chrome浏览器设置,再点显示高级设置,点击更改代理服务器设置

  2. 点击局域网设置,勾选代理服务器,输入本机IP:127.0.0.1,和代理服务器端口号:8888,点击确定

    3.系统需要预先装有JAVA环境才可运行,双击文件夹内的start.bat,即可运行本程序

    使用时需要指定缓存的存储目录,输入t可以指定默认目录,默认目录是同一文件夹下新建的tmp文件夹

About

计网课程项目-代理服务器-带有web cache功能

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published