一、实验目的
熟悉并掌握 Socket 网络编程的过程与技术
深入理解 HTTP 协议,掌握 HTTP 服务器的基本工作原理
掌握 HTTP 服务器设计与编程实现的基本技能
二、实验内容
设计并实现一个基本 HTTP 服务器。要求在指定端口接收来自客户的 HTTP 请求并且根据其中的 URL 地址访问该地址所指向的 HTTP 服务器(原服务器),接收 HTTP 服务器的响应报文,并将响应报文转发给对应的客户进行浏览。
设计并实现一个支持 Cache 功能的 HTTP 服务器。要求能缓存原服务器响应的对象,并能够通过修改请求报文(添加 if-modified-since头行),向原服务器确认缓存对象是否是最新版本。
扩展 HTTP 服务器,支持如下功能:
网站过滤:允许/不允许访问某些网站
用户过滤:支持/不支持某些用户访问外部网站
网站引导:将用户对某个网站的访问引导至一个模拟网站(钓鱼网站)
三、实验过程及结果
3.1 实验原理
3.1.1 Socket 编程的客户端和服务器端主要步骤
在TCP/IP网络应用中,通信的两个进程之间相互作用的主要模式是客户/服务器(C/S或B/S)模式,即客户向服务器发出请求,服务器接受到请求后,提供相应的服务。
服务器端
其过程是首先服务器方要先启动,并根据请求提供相应服务:
打开一通信通道并告知本地主机,它愿意在某一公认