哈尔滨工业大学
<<计算机网络>>
实验报告
(2016年度季学期)
姓名:
吕西亚
学号:
1130310621
学院:
计算机科学与技术学院
教师:
刘晓烽

实验一 HTTP代理服务器的设计与实现
一、实验目的
熟悉并掌握 Socket 网络编程的过程与技术;
深入理解 HTTP 协议,掌握 HTTP 代理服务器的基本工作原理;
掌握 HTTP 代理服务器设计与编程实现的基本技能。
二、实验内容
(1)  设计并实现一个基本 HTTP 代理服务器。要求在指定端口接收来自客户的 HTTP 请求并且根据其中的 URL 地址访问该地址所指向的 HTTP 服务器(原服务器),接收 HTTP 服务器的响应报文,并将响应报文转发给对应的客户进行浏览。 socket通信报文格式
(2)  设计并实现一个支持 Cache 功能的 HTTP 代理服务器。要求能缓存原服务器响应的对象,并能够通过修改请求报文(添加 if-modified-since头行),向原服务器确认缓存对象是否是最新版本。
(3)  扩展 HTTP 代理服务器,支持如下功能:
a)  网站过滤:允许/不允许访问某些网站;
b)  用户过滤:支持/不支持某些用户访问外部网站;
c)  网站引导:将用户对某个网站的访问引导至一个模拟网站(钓鱼网站
三、实验过程及结果
1、实验原理
    (1) Socket 编程的客户端和服务器端主要步骤
TCP/IP网络应用中通信的两个进程之间相互作用的主要模式是客户/服务器(C/S或B/S)模式即客户向服务器发出请求,服务器接受到请求后,提供相应的服务。
两者的工作步骤可以通过下面流程图直观地看到   
服务器端:
其过程是首先服务器方要先启动,并根据请求提供相应服务:
1)打开一通信通道并告知本地主机,它愿意在某一公认地址上的某端口接收客户请求;对应的操作是申请一个socket,这时的socket称为“欢迎套接字”,然后绑定(bind本地地址信息和欢迎套接字,然后开放监听(listen
2)等待客户请求到达该端口;
3)接收到客户端的服务请求时,处理该请求并发送应答信号。在TCP实现过程中进行了三次握手操作,但是实际编写过程中通过accept函数即可实现上述操作,并建立连接注意这个时候才真正建立起了客户机传输数据的套接字接收到并发服务请求,要激活一新进程来处理这个客户请求。新进程处理此客户请求,并不需要对其它请求作出应答。服务完成后,关闭此新进程与客户的通信链路,并终止。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。