HTTP协议|青训营笔记

118 阅读3分钟

一、HTTP工作过程

 HTTP (全称为 “超文本传输协议”) 是一种应用非常广泛的应用层协议。

 1.基于某个特定的传输层协议(TCP)之上

 2.描述业务 

3.非OS系统 

 当我们在浏览器中输入一个 “网址”, 此时浏览器就会给对应的服务器发送一个 HTTP 请求. 对方服务器收到这个请求之后, 经过计算处理, 就会返回一个 HTTP 响应。

二、一次http请求的过程 

我们在浏览器输入一个网址,浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址; 根据该 IP 地址和默认端口 80,将IP地址经过ARP协议转换为具体的物理地址,然后和服务器建立TCP连接。

这里会有三次挥手 浏览器(客户端)发出HTTP 请求,请求该URL对应的网页 服务器对浏览器请求作出响应,并把对应网页html和相关数据发送给浏览器; 浏览器对收到的html进行解析,展示出来。;四次挥手,释放连接。

特点 

请求-响应 模式 : 服务器不断地在监听客户端的请求,当客户端发出的请求到达服务器端时,服务器端响应该请求并返回对应的数据。 

无连接: 服务器处理完客户的请求,并收到客户的应答后,就断开连接。这么干的目的,就是为了赶紧把连接资源释放出来。 但是这样有一个问题,如果是单纯的文本信息还好,没有什么问题,如果在传输图片的同时还要获取文本信息资源、html文件等资源,那就需要建立多次连接,无疑增加了通信开销。所以后来出现了keep-alive 以标识该条连接需要保持。 

无状态: 服务器不知道客户端是什么状态。也就是HTTP协议不对请求和响应之间的通信状态进行保存,即它不会记录之前发过什么、接受过什么。但是有时候确确实实有这个需求,所以在后来有了Cookie技术,用来保存一些用户信息,例如购物车清单等。

Http协议不同版本区别 

Http1.1 支持长连接

在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。 

HTTP 1.x优化 

引入了一个新的二进制分帧数据层,强制使用SSL/TLS加密传输。 

HTTP2.0 

HTTP2.0支持明文传输 支持多路复用:相对于HTTP1.1的长连接(依次串行发起多个HTTP请求),HTTP2.0的IO多路复用能够实现多个请求在一个连接上并行执行。HTTP1.1受限于浏览器并行请求限制,会慢很多。 进行头部压缩:如果每个请求都带着一定大小的消息头,都是带宽浪费,而HTTP2.0可以差量更新HTTP头部,实现方式是通讯双方各自cache一份header fields表。 支持服务端主动推送,主要是基于Stream流来完成的,并且服务端推送资源之前会基于 PUSH_PROMISE 帧告诉客户端即将推送相关资源文件。