一、HTTP协议简介
1、协议
指计算机网络中两个计算机之间进行通信所必须遵守的规定或规则。
2、HTTP协议
是一种超文本传输协议。它允许将超文本标记语言(HTML)文档从Web服务端传送到客户端浏览器。
3、URI
a. URI的全称是uniform resource identifier,是统一资源标识符,用来唯一标识一个资源。就是说,Web上有很多种资源,比如说HTML文档、图像、视频等,它们都是用URI来定位的。
b. 实例:file://a:1234/b/c/d.txt
c. 由三部分组成:访问资源的命名机制、存放资源的主机名、资源自身的名称及路径。
4、URL
a. URL的全称是uniform resource locator,是统一资源定位器,它是一种具体的URI。URL不仅可以用来标识一个资源,而且还指明如何locate这个资源。
b. 实例:www.baidu.com
c. 由三部分组成:协议(http or https)、存有该资源的主机IP地址、主机资源的具体地址
二、HTTP协议的特点
1、简单快速:客户端只需要指明请求方法(get post...)和路径
2、无连接:每次连接只处理一个请求。服务端处理完客户端的请求就断开连接。
3、无状态:对以前处理的事务没有记忆能力。
三、Request/Response协议结构
1、Request头部
表明本次请求的客户端、本次请求所使用的客户端、本次请求希望返回的数据类型、本次请求是否采用数据压缩等设置。
a. 第一行:访问方法为Get方法,遵循的协议是HTTP/1.1
b. Host参数(必须):请求资源的主机和端口号(Host通常是从Url中提取出来的,当未指定端口号时,http默认为80端口,https默认为403端口)
c. User-Agent参数:客户端使用的操作系统和浏览器的名称。
d. Accept参数:客户端可以接受的媒体类型,其中,"*/*"表示能接受所有媒体类型
e. Referer参数:浏览器是从哪个Url链接过来的
f. Accept-Encoding参数:浏览器支持的编码方式
g. Accept-Lauguage参数:浏览器支持的语言类型
h. If-None-Match参数:该参数与Response请求头的ETag联合使用,告诉服务端可以在Response请求头添加ETag,客户端再次请求这个资源时,就会把ETag值添加这个参数中,如果资源没有改变,就会返回304状态码,告知客户端可以直接使用缓存,这就大大提高了浏览器性能。
i. If-Modified-Since参数:该参数告知浏览器缓存文件的最后一次修改时间,如果等于服务端资源的最后一次修改时间,就返回304状态码。
2、Response头部
表明服务器标识、状态码、内容编码、返回给客户端的cookie等。
a. 第一行:表明协议和状态码
b. Date参数:生成这个Response的具体时间
c. Last-Modified参数:这个资源最后一次修改时间
d. ETag参数:和If-None-Match配合使用。
e. Expire参数:告诉浏览器最多可以使用多长时间缓存
f. Cache-Control参数:
g. Proxy-Connection参数:当http请求完成,客户端和服务端传输http数据的tcp连接没有断开,如果客户端再次访问服务端上的这个资源,就可以继续使用这个已经建立好的tcp连接。
四、工作流程
1、首先客户端与服务端建立连接。
2、建立连接后,客户端发送一个请求给服务端。
3、服务器接到请求后,给予相应的相应信息。
4、客户端接收到服务端返回的信息,断开连接。
五、http1.1和http1.0的区别
1、http1.0存在的延迟
a. 浏览器阻塞:浏览器对于同一个域名,同时只能有4个连接
b. DNS查询:浏览器需要知道服务器端IP才能建立连接
c. 建立连接:三次握手
2、http1.0和http1.1区别
a. 缓存处理:
http1.0 通过request头部的IfModifyThings
http1.1 通过request头部的If-None-Match
b. 网络连接:
http1.1通过range参数可以获取资源的某一部分
c. Host头处理
d. 长连接:
keep-alive可以复用tcp长连接
(1)HTTP 1.0 在传输数据时,每次都需要建立连接,无疑增加了大量的延迟时间。
(2)HTTP 1.1 在传输数据时,所传输的内容都是明文,客户端和服务端都无法验证对方的身份。
(3)HTTP 1.1 在使用时,header里携带的内容过大,在一定程度上增加了传输的成本。
(4)HTTP 1.1 支持了keep-alive,来弥补多次创建连接产生的延迟,但使用多了给服务器带来了大量压力
七、SPDY
(1)SPDY是Http的一种兼容协议。
我们知道http有各种各样的缺点,谷歌最先想到了要去改变这种现状,他们就研究了一套基于http的SPDY协议。
(2)多路复用请求
(3)对请求划分优先级
(4)压缩http头
八、Http 2.0
(1)基于SPDY,IETF制定的新一代Http协议
(2)更安全的SSL
九、cookie和session的区别
1、cookie
cookie技术是客户端的解决方案,cookie就是有服务端发给客户端的特殊信息,而这些信息由文本的方式放在客户端,然后客户端每次向服务端发送请求的时候都会带上这些特殊信息。
2、session
session技术是另一种记录客户状态的机制,并保存在服务器中。客户端访问服务器的时候,服务端将客户端信息以某种形式存放在服务器上。
3、cookie和session的区别
存放位置不同
存取方式不同
安全性不同
有效期不同
对服务器造成的压力不同
十、最后
以上为目前我对HTTP相关知识的总结,以后会陆续更新。如有任何疑问,可留言提问,博主每天都会查看。