基于Linux的2种HTTP服务器实现与对比分析
2017-09-30江存
江存
基于Linux的2种HTTP服务器实现与对比分析
江存
(四川大学计算学院,成都 610000)
探讨Linux环境下的多线程并发编程的问题,介绍采用C语言实现基于动态线程池模式的简单服务器与基于epoll+多线程模式的简单服务器,采用Webbench进行压力测试,并对结果做出分析与思考。
线程池;epoll;并发编程;HTTP
0 引言
HTTP协议是互联网中重要的协议,Web浏览器、服务器和相关的应用程序都是HTTP互通的,对其进行研究十分有必要。本文着重研究分析了HTTP服务器的设计与实现方式,一个设计架构良好的服务器需要高效稳定可扩展性,尽可能满足多的任务请求。本文着重设计实现了态线程池模式和epoll加多线程模式,并对其进行分析。
1 原理分析
1.1 HTTP协议简介
http服务器是基于TCP协议的应用层协议,名为超文本传输协议。Web客户端与服务器端进行数据传输就是依靠HTTP协议实现的。它是全球因特网使用的公共语言。
通常,一个客户端与服务器建立连接之后,会发送一个请求个服务器,请求报文的格式一般为:请求起始行、请求首部字段和主体部分。服务器在将报文解析出来,在发送一个响应报文,和请求报文类似,也分为三个部分:响应起始行、响应首部、响应主体。
请求报文格式如下:
<method> <reque-uri> <version>
<headers>
<entity-body>
响应报文格式为:
<version> <status> <reason-pharse>
<headers>
<entity-body>
●方法(method)
客户希望服务器对资源进行的动作。如get,post等方法。
●请求 URL(request-URL)
所请求的资源地址。
●版本(version)
所使用的HTTP协议版本。
●状态码(status)
这三位数字描述了请求过程中所发生的情况。
●原因短语(reason-phrase)
数字状态码的可读版本,包含行终止序列的所有文本。……
