Http协议
1>基础知识
HTTP,Hyper Text Transfer Protocol
,超文本传输协议,是一个基于请求与响应模式的、无状态的网络协议,是浏览器和服务器最常用的通讯协议。HTTP协议是浏览器与服务器间的数据传递格式的一种约定,浏览器与服务器只要都遵循这个约定,就可以进行数据通讯了。
1.1、请求与响应
由浏览器向服务器发送数据,称为请求Request。由服务器向浏览器发送数据,则称为响应Response。
那么,什么才是浏览器向服务器发送的请求呢?在浏览器地址栏中通过地址访问属于手动请求,还存在浏览器自动发送的请求。
1.2、HttpWatch
win10下
Firefox35<=> httpwatch 9.4.17
2>Http版本
客户端若要向服务端发出请求,必须首先在它们之间创建一个TCP(Transfer Control Protocal,传输控制协议)连接。而客户端与服务端的通讯结束后,TCP连接将被关闭。而这个连接就是基于HTTP协议的。
请注意一点:从“计算机网络通信”细节上来说,TCP连接的建立需要经过“三次握手”,TCP连接的关闭需要进过“四次通信”。后面的学习知识从简单的原理上进行分析,不进行网络通信细节上的讲些。
在通讯中真正使用的HTTP协议,共有两种:HTTP1.0版与HTTP1.1版。这两个版本目前仍在使用中。
2.1、HTTP1.0版本
HTTP1.0协议规定,客户端若要向服务端发出请求,必须首先在它们之间创建一个TCP(Transfer Control Protocal,传输控制协议)连接。而当客户端接收到服务端所发出的响应后,服务端将关闭TCP连接。只有等待上一次请求所对应的响应被客户端接收到后,客户端才可发出第二次请求。HTTP1.0协议中的连接属于非持久连接,且服务器不跟踪和记录任何一次请求与响应。
~~~~~~ 客户端和服务端每次建立和关闭连接都是一个相对比较费时的过程,会严重影响客户端和服务端的性能。
单从前面的“浏览器自动发出的请求”例子中就可看到,一个简单的页面就发出了四次请求,使用HTTP1.0协议,就需要创建于关闭四次连接,严重影响了服务器的响应速度,降低了用户体验。(一次请求和一次响应,创建TCP连接需要3次握手,关闭TCP连接需要4次通信,效率低。)
~~~~~~ HTTP1.0不支持HOST请求头属性。也就说它不支持虚拟主机所以如果在HTTP1.0协议下如果收到请求的服务器即使有虚拟主机,也只会访问默认主机,http1.0 一个ip对应一个域名,http1.1一个ip对应多个域名
2.2、HTTP1.1版本
~~~~~ HTTP1.1版本是目前浏览器默认采用的HTTP协议版本,是一种持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。一个包含有许多css、js、图片等资源的页面,其所发出的多个请求和响应可以在一个连接中传输。但每个单独的页面文件的请求和