前言

本文档基于对apache的学习整理而成的笔记,我不想把它叫做一本书,而是一本学习笔记。本文档详细的记录了apache各种应用,以及一些个人的理解,如果偏差,请和我联系,以在下一个版本中进行更正。其中大部分文档均来自网络,感谢网络上各位朋友的分享,才有此文档的出现。其中本人对参考的部分网络文档进行适当的修改,以达到更好的参考效果。也希望各位积极的分享文档,为开源事业做出自己力所能及的贡献。写此文档差不多花了2个星期,只想说一句,写文档真的很累。

                                             itnihao  2012729日于成都

第一章 入门篇,web服务器的概述

web服务器工作原理及http协议通信  

  参考此文http://kingphp.blog.163.com/blog/static/20042324420122122123968/ 

    一个 Web 服务器也被称为 HTTP 服务器,它通过 HTTP 协议与客户端通信。这个客户端通常指的是 Web 浏览器。

Web服务器的工作原理简单的可以归纳为:

客户机连接服务器,客户端向服务器发送请求,服务器向客户机发送应答,客户机与服务器断开

一个简单的事务处理事件就是这样实现的,看起来不简单,做起来其实也是挺简单的,呵呵……需要注意的是客户机与服务器直接的通信是非连接的,也就是当服务器发送了应答后就与客户机断开连接,等待下一次请求。

  HTTP 是一种让 Web 服务器与浏览器(客户端)通过 Internet 发送与接收数据的协议。它是一个请求、响应协议客户端发出一个请求,服务器响应这个请求。HTTP 运用可靠的TCP 连接,通常用的 TCP 80 端口

在 HTTP 中,客户端总是通过建立一个连接与发送一个 HTTP 请求来发起一个事务。服务器不能主动去与客户端联系,也不能给客户端发出一个回叫连接。客户端与服务器端都可以提前中断一个连接

例如,当用一个浏览器下载一个文件时,你可以通过点击停止键来中断文件的下载,关闭与服务器的 HTTP 连接。
    http协议使Web服务器和浏览器可以通过Web交换数据。它是一种请求/响应协议,即服务器等待并响应客户方请求。H T T P不维护与客户方的连接,它使用可靠的T C P连接,通常采用TCP 80端口。客户/服务器传输过程可分为四个基一步骤:
 1) 浏览器与服务器建立连接;
 2) 浏览器向服务器请求文档;
 3) 服务器响应浏览器请求;  
 4) 断开连接。              
H T T P是一种无状态协议,它不维护连接的状态信息。
1. 客户请求
客户请求包含以下信息:
请求方法
请求头  
请求数据
1)请求方法是用于特定U R LWe b页面的程序HTTP请求方法:
方法       描述
GET      请求指定的文档                          
HEAD    仅请求文档头                            
POST     请求服务器接收指定文档作为可执行的信息  
PUT      用从客户端传送的数据取代指定文档中的内容
DELETE  请求服务器删除指定页面                  
OPTIONS 允许客户端查看服务器的性能              
TRACE   用于测试允许客户端查看消息回收过程    
2)头信息是可选项,它用于向服务器提供客户端的其他信息
    如果客户采用某种方法获取数据(P O S T ),数据就放在头( h e a d e r )之后;否则客户机等待从服务器传来的响应。
2. 服务器响应
服务器响应包括以下关键部分:
状态码  
响应头  
响应数据
HTTP定义了多组返回给浏览器的状态码。
响应头向客户方提供服务器和/或请求文档的信息HTTP响应头:
方法              描述
Server          Web服务器信息                                 
Date            当前日期/时间                                  
Last Modified      请求文档最近修改时间                            
Expires           请求文档过期时间                                
Content-length     数据长度(字节)                                   
Content-type       数据M I M E类型                                
WWW-authenticate 用于通知客户方需要的认证信息(如用户名、口令等)   
如果有客户方请求的数据,数据放在响应头之后,否则服务器断开连接。

3.通信实例:
1. 请求
在本例中,浏览器请求文档的U R Lh ttp://http://www.cctv.com/ 。所有的请求均以空行结束。

HTTP 请求:[HTTP Request:]: GET / HTTP/1.1

Host:                     www.cctv.com

Connection:                keep-alive

User-Agent:               Mozilla/5.0 (Windows NT 5.2) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5

Accept:                    text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Encoding:            gzip,deflate,sdch

Accept-Language:            zh-CN,zh;q=0.8

Accept-Charset:              GBK,utf-8;q=0.7,*;q=0.3

DATA
   浏览器使用Get方法请求文档/。浏览器声明它只能接收纯文本和html数据,它使用Mozilla/5.0引擎。
2. 响应
服务响应包括状态码、一些头信息(以空行结束)及请求数据,假设数据存在,则响应信息如下:
HTTP/1.1 200 OK

Expires: Fri, 27 Jul 2012 07:18:35 GMT

Date: Fri, 27 Jul 2012 07:16:35 GMT

Server: Apache

Accept-Ranges: bytes

Cache-Control: max-age=120

X-UA-Compatible: IE=EmulateIE7

Content-Length: 111

Content-Type: text/html

X-Via: 1.1 sdjn89:8107 (Cdn Cache Server V2.0), 1.1 cqck182:30000 (Cdn Cache Ser

ver V2.0)

Connection: keep-alive
        (blank line)
<HTML>              (此行开始为数据部分,与前面头部要空一行)
<HEAD>
<title>Example Server-Browser Communication</title>
</HEAD>
<BODY>
......
</BODY>
</HTML>

假设文档未找到,响应信息如下
HTTP/1.1 404 NOT FOUND
Date Sunday, 15-Jul-05 12:19:33 GMT
Server: Apache/1.3.6

注意:每行换行时用:/r/n,头部与数据段之间要多空已行,即用两次/r/n

特别的,请求的一个网页包含着图片或视频等内容时,服务器第一次先发送文本消息,断开连接,客户端再次发送请求,服务器再次发送图片信息,有多少张图片(即除文本标签以为的消息)服务器就要和客户机断开/连接多少次。