HTTP与web
HTTP(HyperText Transfer Protocol)超文本传输协议是基于TCP连接的应用层协议。它是web中一切数据交换的基础。
比如一个网页的展示其实就是一系列HTTP请求和响应的结果。当我们使用浏览器(browser)时来展示一个页面,它大概会经历一个这样的过程:1、向服务器发送请求获得html,然后得到服务器的响应,浏览器对HTML进行解析;2、如果这个html中存在其他资源(link、href、src. etc)如脚本、CSS样式、多媒体资源等,还会挨个发送请求来获取这些资源;3、资源获取完毕后,浏览器会组合这些资源来对页面进行展示。
HTTP特点
1、简单可读的:HTTP请求头响应头的字段都很详细清晰,http可读性很强
2、可扩展性:HTTP是可扩展的协议,它不仅可以传输超文本文档,还可以传输图像视频等。同时HTTP的功能也愈加丰富。
3、无状态:同一个(或不同)连接上的任何两个请求都是孤立的;
4、基于稳定连接的:HTTP是基于稳定连接的应用层协议。常用的传输层连接有TCP和UDP,由于TCP是稳定可靠的,所以HTTP是基于TCP连接的(而不是UDP)。当客户端与服务器进行通信时,首先需要建立一个TCP连接(或者借助一个已经存在的),然后发送HTTP请求。但目前google正在探索一种基于UDP的可靠连接QUIC,有兴趣的可自行查阅。
HTTP功能
1、HTTP可以设置proxy和客户端的缓存(包括缓存时间和缓存内容); 2、设置同源策略; 3、进行认证:比如说通常会借助cookie来携带一些跟用户身份相关的信息; 4、session:尽管HTTP本身是无状态的,但我们可以借助HTTP cookie来连接同一服务器的不同请求(session的作用主要是弥补HTTP的无状态性,让服务器可以存储客户端在同一个会话期间的一些操作记录);
HTTP2与HTTP1.x的区别
首先HTTP2相比于1.x而言传输更快、更稳定、更简单,具体原因如下:
1、HTTP2以帧为最小单位进行传输。采用二进制编码方式,并引入头部压缩算法,因此传输效率更高,速度更快;
2、HTTP2的连接是可复用的,一个连接可以进行多次请求;
3、HTTP2具有流控制:流控制是表示在通信过程中接收方可以主动阻止发送方向接收方发送大量数据的机制。比如说在看视频的场景下,视频数据量很大,当我看到某一个地方暂停的时候,HTTP2通过流控制它可以阻止服务器发送剩下的视频数据。(而我们可以把节省出来内存去干别的任务);
4、HTTP2具有服务器推送机制,可以向客户端缓存推送当前还没有请求但可能会请求的资源;