Web服务及http协议_学习笔记
HTTP:HyperText Transfer Protocol(超文本传输协议)
超文本是携有超链接的文本,即超链接
Web:
Web服务器的主要操作:
1、建立连接———接收或拒绝客户端的连接请求
2、接收请求———通过网络读取HTTP请求报文
3、处理请求———解析请求报文并作出相应的动作
4、访问资源———访问请求报文中的相关资源
5、构建响应———使用正确的首部生成HTTP响应报文
6、发送响应———向客户端发送生成的响应报文
7、记录日志———当已完成的HTTP事物记录进日志文件
http/0.9 仅支持纯文本(超链接),ASCII
HTML: HyperText Mark Language(超文本标记语言)
URI:Uniform Resource Indentifer(统一资源定位符),用来标记全局内唯一的资源访问路径
统一:格式上的统一
URL:Uniform Resource Locator(统一资源定位符),用于标示互联网上资源的标识符
Protocol://Host:port/path/to/file
HTTP方法:
Get(0.9):从远程服务器上获取文件到本地展现
Put:从远程服务器上获取文件
Post:通过表单提交数据到服务器上
Delete:从远程服务器上删除文件
Head:
Trace:
Options:
Connection
MIME:Multipurpose Internet Mail Extension(多功能互联网邮件扩展)
SMTP:Simple Mail Transmission Protocol(简单邮件传输协议)
MIME:将非文本数据在传输前重新编码问文本格式,接收方可以使用相反的方法还原为原
来的格式,还可以调用相应的程序打开此文件
Base64:文本编码格式
动态网页:服务器存储的网页非html格式,而是编程语言开发的脚本
HTTP的报文类型:请求报文、响应报文
起始行
报文首部
报文主体
请求报文语法:
<method><request-URL><version>
<headers>
<entity-body>报文主体
响应报文语法:
<version><status><reason-phrase>
<headers>
<entity-body>
例:
请求报文:
GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
响应报文:
HTTP/1.1 200 OK
X-Powered-By: PHP/5.2.17
Vary: Accept-Encoding,Cookie,User-agent
Cache-Control: max-age=3,must-revalidate
Content-Encoding:gzip
Content-Lenhth:6931
状态码:
1xx:纯粹的信息
2xx:成功类的状态信息
200:正常响应
3xx:重定向的信息
301:永久重定向(告知客户以后就去指定的位置获取资源)
302:临时重定向(因自身负载过重,告知客户端可以到另外的一个地方获取资源)
304:告诉客户当前资源没有发生改变,可以直接使用本地的缓存
4xx:客户端错误
404:请求的资源不存在
5xx:服务器端错误
长连接:一直保持请求的连接
限制:
空闲超时:如果连接处于空闲,那么会有超时时间限制
最大连接请求数:客户如果一直有请求,那么会限制客户端的请求数。
Web服务器处理模型:
单进程/单线程服务器模型:
多进程/多线程服务器模型:
主进程生成子进程,由子进程处理客户端请求
缺点:在请求过多的情况下会非常耗费资源
单进程响应多请求:
同时处理多个请求
应用程序服务器 | Client | Server |
IIS | IE | httpd |
tomcat(apache,JSP,Open Source) | Firefox | IIS |
Websphere(IBM,JSP,商业产品) | Chrome | nginx |
Weblogic(Oracle,JSP,商业) | Opera | lighttpd |
JBOSS(Redhat) | Safari | thttp |
事件驱动机制
状态转换通知
多进程响应多请求:主进程+多进程(同时处理多个请求):
主进程主要用来调度请求给副进程,副进程主要用来处理请求,并且可以同时处理多个请求
httpd MPM响应模型:
perfork
work
event