本文主要论述了Web服务器的特点及设计思想。介绍了所采用的关键技术——Socket、TCP/IP协议、IOCP模型、HTTP协议和FASTCGI协议。阐述了HTTP协议和通用网关接口FastCGI的数据处理方式及工作流程,以及IOCP支持高并发的工作原理,很好的解决了Web服务器处理大量连接的问题。最后,在Windows系统下实现了该Web服务器。
[关键词] Web服务器; Socket;完成端口;HTTP ;FastCGI
2.1 系统要求
工欲善其事,必先利其器。本节介绍此次开发的系统环境:Windows7系统。支持Socket以及完成端口即可完成本次系统的设计与开发。
2.2 开发工具
本系统使用Virtual Studio2010集成开发环境。包含c语言标准库函数,以及socket等库文件。
1.1 研究背景
如今,上网已成为很多人每天都要做的事情,通过Internet,我们既能获取信息又能发布信息,而迅速发展的Web技术更是给Internet应用提供了一个很好的发展方向。当今的许多应用都是基于web技术的,如电子商务、视频会议、远程医疗诊断等。在嵌入式系统的应用中,由于HTML语言的标准统一性,只要在设备里建立一个微型web服务器,人们就可以使用现有的Web浏览器与该设备进行双向交互、接收或发送信息。因此,针对微型web服务器的研究和应用,具有重大的意义,它为我们管理、控制和监测各种各样的设备提供了一个很好的途径--基于Internet,也就是说,只要设备接入了Internet,我们就可以在世界上的任何地方十分方便地控制、操纵那些配备有微型Web服务器的设备。
1.2 预期目标
在本次设计中,Web服务器需要实现的功能包含以下几项:第一,使用Socket,实现C/S模型,让我们的Web服务器与客户(浏览器)建立连接并能够通信;第二,支持HTTP/1.0,完成对静态网页访问的支持;第三,在此基础上,采用Windows平台下的IOCP模型设计实现高并发;第四,支持简单的PHP动态网页,即PHP以CGI模式工作在后台,处理动态页面。
目 录
1 绪论 1
1.1 研究背景 1
1.2 预期目标 1
2 系统开发环境 1
2.1 系统要求 1
2.2 开发工具 1
3 Web服务器开发基础 1
3.1 TCP/IP协议分析 1
3.1.1 TCP/IP概述 2
3.1.2 IP协议 2
3.1.3 TCP协议 2
3.2 Windows Sockets 2简介 3
3.2.1 Windows Sockets 2概述 3
3.2.2 Windows Sockets 2的定义 3
3.2.3 Windows Sockets 2结构体 3
3.2.4 Windows Sockets 2函数库 3
3.2.5 Socket编程的基本过程 5
3.3 WinSock I/O模型分析 5
3.3.1 几种具体的WinSocket I/O模型 5
3.3.2 WSAEventSelect 模型 5
3.3.3 完成端口模型 6
3.4 HTTP协议的分析 6
3.4.1 HTTP协议概述 6
3.4.2 HTTP协议的工作原理 7
3.4.3 HTTP协议中发送请求消息的分析 7
3.4.4 HTTP协议中接收并分析响应消息 8
3.4.5 HTTP协议中实体的处理 8
3.4.6 HTTP/1.0的主要特征 9
3.4.7 HTTP/1.1简介 10
3.5 FASTCGI原理分析 10
3.5.1 FASTCGI概述 10
3.5.2 运行原理 11
4 系统结构分析与设计 12
4.1 Web服务器模型 12
4.2 Web服务器的模块设计 12
4.3 Web服务器设计方案 13
4.3.1 Web服务器工作流程 13
4.3.2 Web服务器设计关键点 15
5 Web服务器的实现 16
5.1 内存管理模块 16
5.2 IOCP模块 17
5.3 HTTP处理模块 22
5.4 FASTCGI处理模块 23
6 系统运行测试 26
6.1 测试静态网页 26
6.2 测试对PHP的支持 26
6.3 压力测试 27
7 总结与展望 28
参考文献 29
致谢 30