http代理服务器课程设计报告Word下载.doc

上传人:b****2 文档编号:14561942 上传时间:2022-10-23 格式:DOC 页数:18 大小:155.50KB
下载 相关 举报
http代理服务器课程设计报告Word下载.doc_第1页
第1页 / 共18页
http代理服务器课程设计报告Word下载.doc_第2页
第2页 / 共18页
http代理服务器课程设计报告Word下载.doc_第3页
第3页 / 共18页
http代理服务器课程设计报告Word下载.doc_第4页
第4页 / 共18页
http代理服务器课程设计报告Word下载.doc_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

http代理服务器课程设计报告Word下载.doc

《http代理服务器课程设计报告Word下载.doc》由会员分享,可在线阅读,更多相关《http代理服务器课程设计报告Word下载.doc(18页珍藏版)》请在冰豆网上搜索。

http代理服务器课程设计报告Word下载.doc

HTTP协议即超文本传输协议,是Internet上进行信息传输时使用最为广泛的一种非常简单的通信协议。

部分局域网对协议进行了限制,只允许用户通过HTTP协议访问外部网站。

4.http代理服务器

代理服务器英文全称是ProxyServer,其功能就是代理网络用户去取得网络信息。

形象的说:

它是网络信息的中转站。

在一般情况下,我们使用网络浏览器直接去连接其他Internet站点取得网络信息时,须送出Request信号来得到回答,然后对方再把信息以bit方式传送回来。

  代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。

而且,大部分代理服务器都具有缓冲的功能,就好象一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。

更重要的是:

ProxyServer(代理服务器)是Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的对话层。

二、需求分析

理解winsock技术网络编程技术,分析HTTP代理应用程序设计原理和程序流程,选择合适的开发环境,参考已有的HTTP程序功能,设计实现HTTP代理功能的应用程序。

1.winsock的理解与分析

这次课设要使用网络编程技术,这就要求掌握winsock的相关知识,因为winsock是Windows下网络编程的规范,是被广泛应用的、开放的、支持多种协议的网络编程接口,要使用winsock编程技术应该了解一些TCP/IP的基础知识,因为WinSock其实就是TCP/IP协议的一种封装,我们可以通过调用WinSock的接口函数来调用TCP/IP的各种功能,例如如果想用TCP/IP协议来发送数据,你就可以使用WinSock的接口函数Send()来调用TCP/IP的发送数据功能,至于具体怎么发送数据,WinSock已经帮你封装好了这种功能,当然这里的TCP/IP协议准确的说来应该是TCP/UDP/IP协议。

Winsocket函数:

Windows 

的Socket函数有许多, 

我没有做详细介绍, 

这里的函数都是简要说明其用途, 

这里的主要目的是为了后面的三个应用服务。

函数说明:

 

WSAStartup函数 

初始化Winsock 

[声明] 

int 

WSAStarup(WORD 

wVersionRequested,LPWSADATA 

lpWSAData);

[参数] 

wVersionRequested 

要求使用Winsock的最低版本号 

lpWSAData 

Winsock的详细资料 

[返回值] 

当函数成功调用时返回0 

失败时返回非0的值 

socket函数 

用于生成socket(soket 

Descriptor) 

SOCKET 

socket(int 

af,int 

type,int 

protocol);

af 

地址家族(通常使用:

AF_INET) 

type 

socket的种类 

SOCK_STREAM 

:

用于TCP协议 

SOCK_DGRAM 

用于UDP协议 

protocol 

所使用的协议 

当函数成功调用时返回一个新的SOCKET(Socket 

失败时返回INVALID_SOCKET. 

inet_addr函数 

地址转换, 

把"

A.B.C.D"

的IP地址转换为32位长整数 

unsigned 

long 

inet_addr 

( 

const 

char 

FAR 

*cp 

);

cp 

指向IP地址字符串的指针 

当函数成功调用时返回用32位整数表示的IP地址 

失败时返回INADDR_NONE. 

gethostbyname函数 

从主机名获取主机信息. 

struct 

hostent 

gethostbyname 

*name 

name 

指向主机名字符串的指针 

当函数成功调用时返回主机信息 

失败时返回NULL(空值) 

recv函数 

利用Socket进行接受数据. 

recv 

 

*buf 

len 

flags 

指向用Socket函数生成的Socket 

Descriptor 

buf 

接受数据的缓冲区(数组)的指针 

缓冲区的大小 

flag 

调用方式(MSG_PEEK 

或 

MSG_OOB) 

成功时返回收到的字节数. 

如果连接被中断则返回0 

失败时返回 

SOCKET_ERROR 

sendto函数 

发送数据. 

sendto 

sockaddr 

*to 

token 

调用方式(MSG_DONTROUTE 

to 

指向发送方SOCKET地址的指针 

发送方SOCKET地址的大小 

成功时返回已经发送的字节数. 

失败时返回SOCKET_ERROR 

2.有关http代理协议的体系结构

本课设所做的是代理是一种应用层上面的代理,所代理的协议是HTTP,也就是经常见到的Web代理,网络代理就是一个连接客户端(设定需要代理的计算机)和服务器端(需要访问资源的服务器)的桥,以下是网络代理服务的一个典型模型图:

代理服务的运行的流程:

(1).能够接收并解析客户端的请求。

  

(2).创建到服务器的新连接,并根据转发客户端的请求信息。

(3).接收服务器反馈的信息。

(4).能够发出或解释服务器的响应并将该响应传回给客户端。

三、详细设计

1.程序流程图和设计方案

程序的流程图如下:

实例连接web服务器上

侦听端口,接收客户端浏览器发送来的Web请求信息

解析出Web服务器的地址,创建socket实例

通过创建的Socket传送客户端的Web请求数据包到Web服务器的80端口

接收Web服务器返回页面数据

把接收来的数据传送到客户端

完成,实现了web代理

设计方案:

主要包括三个部分内容:

1).创建一个Web代理类。

2).Web代理服务的类的实例化。

3).通过这个Web代理类的实例实现Web代理服务。

具体方案可以参见下文。

2.选择开发环境,编译源程序

选择visualstudio.net2003开发环境

源程序编译及步骤:

1).创建一个web代理类,命名WebProxy,编辑Proxy.cs文件:

usingSystem;

usingSystem.Net;

usingSystem.Net.Sockets;

usingSystem.Text;

usingSystem.IO;

//以上代码是导入Proxy.cs中要使用到的命名空间

2).用下列构造函数替代默认的构造函数。

下面的代码是在Proxy类中创建一个构造函数。

Proxy类只有一个构造函数,并且这个构造函数只有一个参数,这个参数是Socket对象,它主要用来和客户端进行数据交换,是一个客户Socket。

publicProxy(Socketsocket)

{ this.clientSocket=socket;

}  

3).创建Proxy类中的Run方法,Run方法是Proxy类中唯一的方法。

其功能是从客户端接收HTTP请求,并传送到Web服务器,然后从Web服务器接收反馈来的数据,并传送到客户端。

为了实现这二个不同方面的数据传送,Run方法中是通过二个Socket实例来实现的。

由于HTTP是TCP/IP参考模型中的应用层协议,它建立于TCP协议之上,所以创建的Socket实例使用的协议类型应该为TCP协议。

下面代码是创建可以传送HTTP请求命令到Web服务器和接收来自Web服务器反馈来信息的Socket实例:

SocketIPsocket=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

4).另外一个Socket是在代理服务程序侦听端口号,接收挂起的连接请求时候得到的,以此Socket为参数,利用Proxy类中的构造函数,来创建一个Proxy实例的。

此Socket实现从客户端接收HTTP请求信息,并传送数据到客户端。

创建Proxy类的Run方法:

publicvoidRun()

{stringclientmessage="

"

;

//存放来自客户端的HTTP请求字符串

stringURL="

//存放解析出地址请求信息

intbytes=ReadMessage(read,refclientSocket,refclientmessage);

 if(bytes==0)

 {  return;

} 

intindex1=clientmessage.IndexOf('

'

);

 intindex2=clientmessage.Inde

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1