http协议的简单介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http协议的简单介绍相关的知识,希望对你有一定的参考价值。
http:伯纳斯·李{1994年,伯纳斯李在MIT网络中心成立万维网中心,代表互联网诞生,伯纳斯李被称为万维网之父;}http/0.9:只有get或put功能;http的原型版本;
http/1.0(1998年);
引入邮件中的MIME机制:Mutipurpose Internet Mail Extension,多用途互联网邮件扩展; //http有了下载功能
Cache(缓存):提高数据传输的速率;{CDN:内容分发网络}
Method:GET,PUT,POST,DELETE,HEAD,TRACE,CONNECT,OPTIONS
GET:请求获取指定的资源;
PUT:向指定的位置上传资源的最新版本;
POST:用于表单认证,在资源之后附加相关数据;
DELETE:请求服务器删除被明确标识的资源;
HEAD:与GET方法相同,都是向服务器申请获取资源,但HEAD方法仅向服务器请求响应信息的首部元信息;
TRACE:请求服务器回送所收到的请求信息;用于测试或者故障诊断;
CONNECT:保留,留待将来使用;
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项以及请求资源可以使用的方法;
http/1.1(本世纪初):
强化了缓存功能;
持续连接机制:keeplive,也称持久连接,长连接;
http/2.0(2015年5月)
IETF结合谷歌公司开发的SPDY(speedy)插件(用来加速http传输速度和处理高并发)发布http/2.0
http协议的特点:
1.典型的应用层协议;
2.端口号是80/TCP;
TCP协议的特性:
1.面向连接:
建立连接(三次握手),维持连接稳定,拆除连接(四次挥手)
数据序列化传输;
2.将数据分段打包,并为每段提供CRC校验和,从而保证数据的完整性;
3.确认机制:
4.通过流量控制来最大利用网络资源:(利用滑动窗口来控制流量)
5.拥塞机制:慢启动算法+拥塞避免算法;快重传算法+快恢复算法;
http协议:
Hyper Transfer Protocol,超文本传输协议; //超文本:带有超链接的文本
html:Hyper-Text Marked Language,超文本标记语言;----静态网页
http协议的工作模式:request/response模式(请求/响应 模式);
一次完整的http事务:请求<-->响应;
一次完整的http通信,包括一次请求及对应于此次请求的响应;
通信的目的是获得服务器上的web资源,一次http请求,只能获得一次web资源;
web资源:html文档;图片(jpg/jpeg(压缩,成像不清晰,占用空间小),gif,png(没有经过压缩处理的图片,占用空间大,但是成像质量比较高));MP3/4;php脚本/js脚本/css样式表;...
web资源的分类:
静态资源:服务器会根据客户端的请求直接将资源原封不动的响应传输给客户端的资源;{资源包括:html文档;图片(;MP3/4;PHP脚本/js脚本/css样式表;...}
动态资源:通常是有某种编程语言编写的程序文件,在服务器上经过某种特定方式执行之后生成相应的html页面,服务器将程序运行生成的html页面响应给客户端的资源;
服务器端动态资源:PHP脚本,JSP脚本,.NET程序(Linux上不支持编译),python脚本,ruby脚本,C/C++程序
客户端动态资源(存储在服务器端,原封不动的传递到客户端,在客户端运行一遍生成一个页面);javascript脚本,Servlet,ActiveX
并发响应模型:
单进程IO模型:仅有一个进程用于处理和响应客户端请求,每次只能处理和响应一个客户端,串行响应模型;
多进程IO模型:同时启动多个进程,每个进程只能处理和响应一个客户端请求;
复用的IO模型;每个进程可以同时处理并响应多个客户端的请求;
多线程的IO模型;每个进程可以生成多个线程,每个线程可以响应一个客户端请求;
事件驱动的IO模型:每个进程直接处理并响应多个客户端的请求;其中采用事件通知机制;
复用的多线程的IO模型;启动m个进程,每个进程可以生成n个线程,每个线程可以处理并响应一个客户端的请求;可以响应m*n个客户端;
复用的事件驱动的IO模型:启动m个进程,每个进程都是基于事件驱动的方式直接处理并响应多个客户端的请求;
web服务器的一次完整的http请求的处理过程:
1.建立TCP连接;
2.接受请求:将客户端发送来的报文经过通信子网的解封之后,将其放置于用户空间中相应的应用程序所在的内存空间中;
3.分析处理请求:通过读取报文的http协议首部和body部分,获取客户端请求的资源的具体信息;
4.访问资源:通过特定的IO方式从磁盘等IO设备上加载客户端请求的资源;
5.构建响应报文;将加载的资源使用特定的协议予以封装;
6.发送响应报文:
7.记录日志信息;
{URI:统一资源标识符;
web上的各种资源都可以使用URI进行统一的唯一的标识;定位资源存在的位置;
URI包括三个部分:
1.资源的命名机制;
2.存放资源的主机名称;
3.资源自身的名称;
URL:统一资源定位符;
URL是互联网上用来描述web资源的定位方式的一组具有特定格式的字符串;
URL一般有三个部分:
1.协议:资源的提供方式和访问方式;
可用的协议:https,http,ftp,ssh,mailto,gopher,...
2.主机标识:可使用主机的FQDN,也可以使用IP地址;
3.资源存放的路径:相对于主机的存放路径;使用某种特定的方式实现的映射路径,一般用于标识资源的具体位置;此路径是从根开始并标识的路径,根是web服务的根,而不是文件系统的根;
URL通用标准格式;
[scheme://][Username:[email protected]]Server[:port][/PATH/TO/RESOURCE][?PARAMETERS=VALUE&&...][#FLAG]
资源的路径映射:
chroot机制:
如:将真正根文件系统上的路径伪装成根文件系统,这个伪装的根文件系统叫做web服务的路径
映射web根目录的指令为:DocumentRoot /var/www/html(此路径为真正根文件系统的路径)--->web服务的资源路径(用户在客户端访问的路径)
web服务器的资源路径的映射方式:
1.DocumentRoot
2.Alias
3.VirtualHost DocumentRoot
4.用户的docroot
...
}
http协议请求处理的连接方式:
非持续连接:短连接
在建立好的一个TCP连接上,仅能传送一个http请求报文以及一个与之匹配的响应报文;
适用场合;用于请求单个大资源的响应报文的传送;
持续连接;长连接(keepalive)
可以允许客户端在一个TCP连接上发送不止一次的http请求报文,每一个资源响应报文都可以基于同一个TCP连接响应给客户端;
适用场合:用于多个小资源请求或从反向代理服务器向后端服务器请求的场景;可以避免后端服务器使用过多的进程来处理和响应客户端请求,在很大程度上可以节省服务器的资源开销;
注意;由提供资源的服务器来决定选择哪种连接方式
http协议的实现:
实现静态资源请求的处理和响应:;
httpd(Apache)
nginx(Engine X)
Tengine(淘宝,开源)
lighttpd
实现动态资源请求的处理和响应:应用程序服务器;
JSP:Tomcat,Weblogic(Oracle),Websphere(IBM),Jboss,Glassfish
PHP:php,php-fpm
Python:python
Ruby:ruby
以上是关于http协议的简单介绍的主要内容,如果未能解决你的问题,请参考以下文章