http: Hyper Text Transfer Protocol


传输文本:HTML

设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法

html: Hyper Text Mark Language


html文本框架:


<html>

<head>

<title>TITLE</title>

</head>

<body>

<h1>H1</h1>

<p></p>

<h2>H1</h2>

<p> <a href="admin.html">ToGoogle</a> </p>

</body>

</html>


css: Cascading Style Sheet


html文档的生成方式:

静态:

动态:编程语言编写的程序可输出html格式的结果

php, jsp, asp .net


   依赖脚本解释器:

php: php解释器

jsp: jvm


http协议报文:

request:

请求不同html文档

response:



C/S

C:User Agent//用户代理, Browser

S: Server


http协议:

http 0.9

http 1.0

MIME: Multipurpose Internet Mail Extesions

http 1.1

http 2.0

spdy


web服务器:

理解用户请求的资源格式不仅仅是纯html格式的文档

静态资源

动态资源:

application/php


web资源:

资源类型:MIME

major/minor

text/html

text/plain

p_w_picpath/jpeg

p_w_picpath/gif

vedio/mpeg4

application/vnd.ms-powerpoint


资源名称:URI(统一资源标识符) (Uniform Resource Idnentifier)

URL(统一资源定位符):

描述一个特定服务器上某资源的特定位置

http://www.magedu.com:80/download/bash-4.3.1-1.rpm

分为三部分:

scheme(方案):http://

服务器:www.magedu.com:80

特定服务器上的资源:/download/bash-4.3.1-1.rpm


CGI:Common Gateway Interface

简化版的http


http事务:一次请求及对应的响应


http方法:

GET:请求获取一个资源,需要服务器发送

HEAD:跟GET近似,但其不需要服务响应请求的资源,而返回响应首部

POST:基于HTML表单向服务器提交数据,服务器通常需要存储此数据;(位置:通常为关系型数据库)

PUT:与GET相反,向服务器发送资源;服务器通常需要存储此资源;(位置:通常为文件系统)

DELETE:删除URL指向的资源

OPTIONS:探测服务器端对请求的URL所支持使用的请求方法

TRACE:跟一次请求中间所经过的代理服务器、防火墙或网关等


http状态码:

1XX:信息性状态码

2XX:成功状态码

200:OK。请求已成功,请求所希望的响应头或数据体将随此响应返回。

201:CREATED。请求已经被实现,而且有一个新的资源已经依据请求的需要建立,且其URI已经随Location头信息返回。

  3XX: 重定向类的状态码

301: Moved Permanently, 永久重定向

302: Found, 临时重定向,会在响应报文中使用“Location: 新位置”;

304: Not Modified

4XX:客户端类错误

403:Forbidden //请求被拒绝

404: Not Found

405: Method Not Allowed //不允许运用该方法请求本资源

5XX:服务器类的错误

500:Internal Server Error, 服务器内部错误

502:Bad Gateway, 代理服务器从上游服务器收到一条伪响应;

503:Service Unavailable, 服务暂时不可用


http协议:协议首部

Name: Value

Content-Type: p_w_picpaths/gif


分三类:

通用首部

请求首部

响应首部


http请求报文:

<method> <request-URL> <version>

<HEADERS>


<entity-body>


http响应报文:

<version> <status> <reason-phrase>

<HEADERS>


<entity-body>

解释:

<method>:请求方法

<request-URL>: 请求的资源,可以是相对路径,如/p_w_picpaths/log.jpg,也可以绝对路径,如http://www.magedu.com/p_w_picpaths.banner.jpg

<version>: http协议版本,格式HTTP/<major>.<minor>,例如HTTP/1.0, HTTP/1.1

<headers>:各种所可以使用的首部


<status>: 状态码

<reason-phrase>: 原因短语,指状态码的易读信息


注意:http协议是无状态,stateless

cookie:

Set-Cookie

Set-Cookie2

Cookie:


回顾:

http事务:

web资源:URL

scheme://server:port/path/to/resource

http方法:GET, POST, HEAD, PUT, DELETE, OPTIONS, TRACE

http状态码:403, 404, 301, 302, 304, 502

http协议报文:

请求:

<method> <request-URL> <version>

<HEADERS>


<entity-body>

响应:

<version> <status> <reason-phrase>

<HEADERS>


<entity-body>


http协议:无状态


http协议版本:

http 0.9: 仅用于传输html文档

http 1.0:引入MIME机制,从而支持多媒体数据;引入keep-alive(持久连接);缓存

http 1.1:更多请求方法,更精细缓存控制;持久连接(persistent);


1.2、http协议首部

通用首部

请求首部

响应首部

实体首部:表明实体类型和属性

扩展首部:非标准首部,可由程序员自行创建;X-Forward-For, X-Via


1.2.1、通用首部

Connection: 定义C/S之间关于请求、响应的有关选项

Connection: keep-alive

Cache-Control: 缓存控制


1.2.1、请求首部

Client-IP:

Host: 请求的主机

Referer: 指明了请求当前资源原始资源的URL

User-Agent: 用户代理


Accept首部:

Accept: 服务端能够发送的媒体的类型

Accept-Charset: 

Accept-Encoding: 

Accept-Language: 


条件式请求:

跟安全相关请求:

Authorization:

Cookie:


1.2.3、响应首部 

Age: 

Server: 向客户说明自己的程序名称和版本


协商首部:

Vary: 首部列表,服务器会根据列表中的内容挑一个最适用的版本发送给客户端


跟安全相关:

WWW-Authentication:

Set-Cookie

1.2.4、实体首部 

Location: 资源的新位置

Allow: 允许对此资源使用的请求方法


内容相关的首部:

Content-Encoding: 

Content-Language:

Content-Length:

Content-Location:

Content-Type:


缓存相关:

ETag

Expires

Last-Modified:



1.3、一次Web资源请求的具体过程(服务器的角度)

1.3.1 服务过程

建立连接

接收请求

处理请求

访问资源

构建响应

发送响应

记录日志


连接:

连接套接字:(client, cport <--> server, sport)

监听套接字:80端口


1.3.2、web服务器的I/O结构 

单进程模型:串行

多进程模型:每个进程响应一个用户请求实现并发的效果

复用的I/O机制:一个进程生成多个线程,每个线程响应一个用户请求

复用的I/O机制:多个线程,每个线程响应多个用户请求;


1.3.3、web server 

httpd

httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。Apache是世界使用排名第一的Web服务器软件


nginx

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。 其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、腾讯等。


lighttpd

gws


App Server: (Web 应用服务器)

IIS

tomcat, jetty, resin

weblogic

websphere

httpd:

ASF: Apache Software Fundation


httpd, 


a patchy server = apache

httpd,


1.3.4、httpd的特性  

高度模块化:core + modules

DSO: Dynamic Shared Object

MPM:Multipath Processing Module//多道处理模块

统称,事实上有多个实现:

prefork: 每个进程响应一个用户请求,预先生成多个空闲进程;

select():1024 //并发能力上限

worker: 启动多个进程,每个进程生成多个线程,每个线程响应一个用户请求;

event: 启动多个线程,每个线程响应N个请求;

event-driven:事件驱动



httpd的功能特性:

丰富用户认证:基本认证和摘要认证

CGI:原生支持perl CGI 

//通用网络接口,是外部应用程序与WEB服务器之间的接口标准,是两者之间传递信息的规程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

虚拟主机:

基于端口、IP、主机名

反向代理:

负载均衡

用户站点:

路径别名:

支持第三方模块


安装方式:

rpm包

源码编译