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 处理请求 元数据:请求报文首部 <method><URL><VERSION> 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报文 <method><request-URL><version> <headers>

	<entity-body>
response报文
	<version><status><reason-phrase>
	<headers>

	<entity-body>

d) method:请求方法,标明客户端希望服务器对资源执行的动作: GET HEAD POST e) version: HTTP/<major>.<minor> 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:最后一次修改的时间
扩展首部