前言:
http:hyper text transfer protocol(超文本传输),应用层协议,监听于TCP协议的80号端口。
是html(超文本标记语言)语言所开发的文本文件
超文本文档:
<html>
<head>
<title>TITLE</title>
</head>
<body>
<h1></h1>
</body>
</html>
======================================分割线===============================================
一、协议版本:
http/0.9:原型版本,功能简陋。
http/1.0:加入了cache机制、MIME机制、method
cache机制:缓存机制
MIME机制:Multipurpose Internet Mail Extesion(多用途互联网邮件扩展)
method:GET,POST,HEAD,PUT,DELETE,TRACE,OPTIONS(协议版本方法)
http/1.1:增强了缓存功能;
http/2.0:在1.1上进行了诸多改进。
二:工作模式:
http请求报文:http request
http相应报文:http response
一次http事务:请求<-->相应
web资源:web resource
静态资源(无需服务器端做出额外处理):.jpg, .png, .gif, .html, .txt, .js, .css, .mp3, .avi
动态资源(服务器端需要通过执行程序作出处理,发送给客户端的是程序的运行结果):.php, .jsp
(注:一个页面有多个资源组成,每个资源都需要单独请求)
三:资源的标识机制:URL(Uniform Resource Locator):用于描述服务器某特定资源的位置;
例如:http://www.sina.com.cn[/index.html]
Scheme://Server[:Port][/PATH/TO/SOME_RESOURCE]
四:一次完整的http请求处理过程:
(1)建立或处理连接;接收请求或拒绝请求;
(2)接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求过程;
(3)处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息;
(4)访问资源:获取请求报文中请求的资源;
(5)构建响应报文
(6)发送响应报文
(7)记录日志
(1)接收请求的模型:
并发访问响应模型:
①单进程I/O模型:启动一个进程处理用户请求;这意味着,一次只能处理一个请求,多个请求被串行响应。
②多进程I/O结构:并行启动多个进程,每个进程响应一个请求;
③复用的I/O结构:一个进程响应n个请求;
1)多线程模式:一个进程生成n个线程,一个线程响应n个请求;
2)事件驱动:一个进程直接响应n个请求;
④复用的多进程I/O结构:启动多个(m)个进程,每个进程生成(n)个线程;
响应的请求的数量:m*n
(2)处理请求:分析请求报文的http请求报文首部
http协议:
http请求报文首部
http响应报文首部
请求报文首部的格式:
<method> <URL> <VERSION>
HEADERS: (name: value)
<request body>
(3)访问资源:获取请求报文中请求的资源
web服务器中资源路径映射方式:
web服务器,即存放了web资源的主机,负责向请求者提供对方请求的静态资源,或动态资源运行生成的结果;这些资源通常应该放置于本地文件系统某路径下;此路径称为DocRoot;
(a) docroot
(b) alias
(c) 虚拟主机的docroot
(d) 用户家目录的docroot
五:http请求处理中的连接模式:
(1)保持连接(长连接):keep—live
时间:
数量:
(长连接模式中,可以有两个纬度来限制客户端的连接时长,因为在并发请求很多的时候,服务器不能让客户端的某一请求长时间占据服务端进程从而使别的请求无法送达服务端,我们可以设定连接时间和数量来控制客户端的请求连接,当时间或请求数量两个标准中任意一个指标到达预设定的标准时服务端就自动断开链接,不管客户端请求是否结束,这样一来断开连接的主导方就是服务器端而不是客户端了)
(2)非保持连接(短连接)
(每次请求都建立三次握手四次断开过程)
================================================未完待续===================================
原文:http://tz666.blog.51cto.com/10990100/1734099