简单的HTTP协议
一.简介
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
二.主要特点
HTTP主要有五大特点:
A.用于客户端和服务器端之间通信
请求资源的一端为客户端,提供资源的一端为服务段。HTTP协议能明确区分哪段是客户端,哪段是服务段。
B.无连接
HTTP协议初始版本,每进行一次HTTP通信就要断开一次TCP连接,这样设计是因为当时通信传输容量都很小,这样设计对资源的占用和响应都是友好的。
但是,随着HTTP的普及,传输的内容复杂起来,每次请求都会造成多次TCP连接和断开,增加了通信的开销。HTTP/1.1之后,采用默认长连接的方式实现HTTP协议,只要任意一端没有明确提出断开连接,则保持TCP连接状态。这样访问一个网页就可以减少打量TCP连接的重复建立和断开,减少额外开销,提高响应速度。
不仅仅如此,因为长连接的诞生,管线化也成为可能,所谓管线化,即不用等待响应即可直接发送下一个请求。
C.无状态
HTTP是一种不保存状态的协议,即无状态。HTTP协议不对请求和响应的状态进行保存,这是为了更快的处理大事务,确保协议的可伸缩性。虽然无状态能够加快访问,但是当处理需要保持状态的业务就变得棘手了,所以,引入了Cookie、Session、Token技术
D.灵活
HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type(Content-Type是HTTP包中用来表示内容类型的标识)加以标记。
E.简单快速
1.客户向服务器请求服务时,只需传送请求方法和路径,协议简单。
2.面向无连接,不保存状态,传输快速。
3.编码提示传输效率:
3.1压缩传输的内容编码,即把实体压缩变小后再发送,主要有4种编码格式
gzip(GNU zip)
compress(UNIX 系统的标准压缩)
deflate(zlib)
identity(不进行编码)
3.2分割发送的分块传输编码
传输大容量数据时,把数据分割成多块,能够让浏览器逐步显示页面。
4.缓存
两种实现方式
1.让代理服务器进行缓存;
2.让客户端浏览器进行缓存。
三.HTTP报文
分为请求报文和响应报文
HTTP报文格式为报文首部+空行(CR+LF)+报文主体
报文首部包括三部分:
1.请求行或状态行
- 请求行(包含用于请求的方法,URI,HTTP版本)
- 响应行(包含响应结果的状态码,原因短语和HTTP版本)
2.首部字段(包含请求和响应的各种条件和属性)
- 请求(响应)首部字段
- 通用首部字段
- 实体首部字段
3.其他(可能包含HTTP的RFC里未定义的首部,比如cookie)
参考资料
《图解HTTP》–上野宣