Http基础信息
1、 完整的http请求过程
1.1 建立或处理连接:接收请求或拒绝请求
1.2 接收请求
接收来自于网络的请求报文对某资源的一次请求的过程;
并发访问响应模型(Web I/O);
单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个:多个请求被串行响应;
多线程I/O结构:并行启动多个进程,每个进程响应一个请求;
复用I/O结构:一个进程响应N个请求;
多线程模型:一个进程生成N个线程,每个线程响应一个用户请求;
事件模型:event-driver
复用的多进程I/O结构:启动多个(m)进程,每个进程响应n个请求;
1.3 处理请求
元数据:请求报文首部
host:www.magedu.com 请求的主机名称
Connection;
1.4 访问资源
web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态进行后生成的资源;这些资源放置于本地文件系统某路径下,此路径通常称为DocRoot
/var/www/html/
images/1.jpg
http://www.magedu.com/images/1.jpg
web服务器资源路径映射方式:
docroot
alias
虚拟主机docroot
用户家目录docroot
1.5 构建响应报文
MIME类型:
显式分类
魔法分类
协调分类
URL重定向;
web服务器构建的响应并非客户请求的资源,而是资源另外一个访问路径;
1.6 发送响应报文
1.7 记录日志
2 http服务程序:
2.1 httpd(apache)
2.2 nginx
2.3 lighttpd
应用程序服务器:
IIS
tocat,jetty,jboss,resin
webshpere,weblogic,oc4j
www.netcraft.com
httpd的安装配置的使用
httpd:apache
ASF:apache software foundation
httpd的特性:
高度模块化:core+modules
DSO:Dynamic Shared Object
MPM:Multipath Processing Modules
prefork:多进程模型,每个进程响应一个请求:
一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达:最大不会超过200个;
prefork:多进程模型,一个进程响应一个请求;
worker:多线程模型(多进程生成,一个进程生成多个线程),一个线程响应一个请求;
event:事件驱动模型,一个线程响应多个请求
更新
20-3-Http基础信息
1、 Http协议
a) http/0.9,http/1.0,http/1.1,http/2.0
b) http协议:stateless
服务器无法持续追足踪访问者来源
cookie,session
c) http事务:
i. 请求:request;
ii. 响应:response
报文语法格式:
request报文
response报文
d) method:请求方法,标明客户端希望服务器对资源执行的动作:
GET HEAD POST
e) version:
HTTP/
f) status:
三位数字:如200,301,404,502;标记请求处理过程中发生的情况
g) reason-phrase:
状态码所标记的状态的简要描述;
h) headers:
每个请求或响应报文柯包含任意个首部:每个首部都有首部信息,后面跟一个冒号,而后跟上一个可选空格,接着是一个值;
i) entity-body:请求时附加的数据响应附加的数据;
2、 method(方法)
a) GET:只从服务器获取一个资源
b) HEAD:只从服务器获取文档的响应首部
c) 向服务器发送处理的数据
d) PUT:将请求的主体部分存储在服务器上
e) DELETE:请求删除服务器上指定的文档
f) TRACE:跟踪请求到达服务器中间经过的代理服务器
g) OPTIONS:请求服务器返回对指定资源支持使用的请求方法
协议查看或分析的工具:
tcpdump,tshark,wireshark
3、 status(状态码)
a) 1xx:100-101,信息提示:
b) 2xx:200-206,成功
c) 3xx:300-305,重定向
d) 4xx:400-415,错误类信息,客户错误
e) 5xx:500-505,错误类信息,服务器错误
常用的状态代码:
200:成功,请求的所有数据通过响应报文的entity-body部分发送:OK
301:请求的URL指向的资源已经被删除:但在响应报文中通过首部Location指明了资源现在所处的新位置:Moved Permanently
302:与301相似,但在响应报文中通过Location指明资源现在处的新位置;Found
304:客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过此响应状态码通知客户端:Not Modified
401:需要输入账号和密码认证方能访问资源:Unauthorized
403:请求被禁止:Forbidden
404:服务器无法找到客户端请求的资源:Not Found
500:服务器内部错误:Internal Server Error
502:代理服务器从后端服务器收到了一条伪响应:Bad Gateway
4、 Headers
格式:
Name:Value
首部的分类:
通用首部
Date:报文的创建时间
Connection:连接状态,如keep-alive,close
Via:显示报文经过的中间节点
Cache-Control:控制缓存
Pragma:
请求首部
Accept:通过服务器自已可接受的媒体类型
Accept-Charset:
Accept-Encoding:接受编码格式:如gzip
Accept-Language:接受的语言
Client-IP:
Host:请求的服务器名称和端口号
Referer:包含当前正在请求的资源的上一级资源
User-Agent:客户端代理
条件式请求首部:
Expect:
If-Modified-Since:自从指定的时间之后,请求的资源是否发生过修过
If-Unmodified-Sence;
If-None-Match:本地缓存中存储的文档的ETag标签是否与服务器文档的Etag不匹配
If-Match:
安全请求首部:
Authorization:向服务器发送认证信息,如账号和密码
Cookie:客户端向服务器发送cookie
Cookie2:
代理请求首部:
Proxy-Authorization:向代理服务器认证
响应首部
信息性:
Age:响应持续时长
Server:服务器程序软件名称和版本
协商首部:某资源有多种表示方法时使用
Accept-Ranges:服务器可接受的请求范围类型
Vary:服务器查看的其它首部列表
安全响应首部:
Set-Cookie:向客户端设置cookie
Set-Cookie2:
WWW-Authenticate:来自服务器的对客户端的质询认证表单
实体首部
Allow:列出对此实体可使用的请求方法
Location:告诉客户端真正的实体位于何处
Content-Encoding:
Content-Language
Content-Lenght:主本的长度
Content-Location:实体真正所处位置
Content-Type;主体的对象类型
缓存相关:
ETag:实体的扩展标签
Expires;实体的过期时间
Last-Modified:最后一次修改的时间
扩展首部