简单web服务器的设计与实现

本文档详述了设计和实现一个简单HTTP服务器的过程,涵盖了网络套接字编程、HTTP协议和服务器工作原理。服务器能处理GET请求,响应HTML、图片和文本文件,并通过UNIX环境下的socket编程实现。
摘要由CSDN通过智能技术生成

一、综合训练目的与要求

运用数据通信及网络课程所学的知识,设计一个简单的http服务器,在实现的过程中学习网络套接字编程、HTTP 协议、Web 服务器等知识;提供静态网页浏览服务功能;Web 服务器可配置参数有主目录、首页文件名、HTTP 端口号等项,锻炼UNIX环境下网络编程的能力,熟悉socket编程原理和http协议,从而巩固所学网络知识。

二、综合训练任务

1)要能实现get方法;

2)能响应请求的html页面;

3)还能够响应请求的gif,jpg的等图片文件;

4)能响应请求的目录的信息,并以列表显示;

5) 能读取文本文件txt。

 

三、总体设计

3.1 工作原理

 

     网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用叫Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用,数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。 

Linux网络编程中常用的系统调用函数包括:初始化(socket)、连接(connect)、绑定(bind)、监听(1isten)、接收(accept)、关闭(close)、发送(send)。 

Socket接口通过以下函数为应用编程提供服务: 1)socket():创建一个套接字; 

2) bind():用于将套接字与本地或远程某个地址和端口建立关联; 3) listen():用于在服务器一端监听是否有连接请求; 4) connect():客户通过调用该函数主动与服务器建立连接; 5) accept():用于接收来自客户的连接请求,服务器先创建一个新的套接字,用新套接字与客户进行通信,原套接字仍保持侦听状态,以便接收其他连接请求;6)send()和recv():SOCK_STREAM类型套接字数据的发送和接收; 7) close():关闭套接字。

 HTTP协议是基于请求/响应模式的。一个客户机与服务器建立连接后,发送一个请求给服务器。服务器接到请求后,给予相应的响应信息。在Internet上,HTTP通信通常发生在TCP/IP连接之上,建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息:包括请求修饰符、客户机信息和可能的内容服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容,客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客http工作流程图户机与服务器断开连接。 

基于HTTP协议的客户/服务器模式的信息交换分四个步骤:建立连接、发送请求信息、发送响应信息和关闭连接

 

3.2设计过程

 

Web服务器的工作方式都是以套接字机制为基础的。对于一个B/S通信模型,在服务器端,首先创建一个套接字,并将此套接字与服务器公认的IP地址绑定在一起,接着将套接字转换成侦听套接字来侦听用户的请求,在接收到客户机的请求后就建立连接,然后服务器和客户机之间就可以进行通信了。多个请求时服务器使用不同的进程来

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值