您的位置:首页 > 理论基础 > 计算机网络

http协议介绍及httpd特性详解

2015-05-29 15:21 661 查看
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
image/jpeg
image/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: images/gif

分三类:
通用首部
请求首部
响应首部

http请求报文:
<method> <request-URL> <version>
<HEADERS>

<entity-body>

http响应报文:
<version> <status> <reason-phrase>
<HEADERS>

<entity-body>
解释:
<method>:请求方法
<request-URL>: 请求的资源,可以是相对路径,如/images/log.jpg,也可以绝对路径,如http://www.magedu.com/images.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包
源码编译

本文出自 “燕南天” 博客,请务必保留此出处http://heroleilei0627.blog.51cto.com/4835750/1656355
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: