浏览器中的网络(http)

135 阅读3分钟

HTTP

什么是HTTP

HTTP(超文本传输协议)是一种允许浏览器向服务器获取资源的协议,是Web的基础,通常由浏览器发起请求,用来获取不同类型的文件,例如HTML文件、CSS文件、JavaScript文件、图片、视频等。

HTTP/0.9

采用了基于请求响应的模式,从客户端发出请求,服务器返回数据。

HTTP/0.9 的实现有以下三个特点。

  • 只有一个请求行,并没有HTTP 请求头和请求体
  • 服务器也没有返回头信息,只需要返回数据
  • 返回的文件内容是以 ASCII 字符流

HTTP/1.0

HTTP/1.0 引入了请求头和响应头,它们都是以为 Key-Value 形式保存的。支持多种类型的文件下载是 HTTP/1.0 的一个核心诉求,而且文件格式不仅仅局限于 ASCII 编码,还有很多其他类型编码的文件

  • 在 HTTP 发送请求时,会带上请求头信息,服务器返回数据时,会先返回响应头信息

HTTP/1.0新增的几个典型的特性

  • 返回状态码
  • 提供了Cache 机制,用来缓存已经下载过的数据
  • 请求头中还加入了用户代理的字段,user-agent

HTTP/1.1

HTTP/1.1 中增加了持久连接的方法,它的特点是在一个 TCP 连接上可以传输多个 HTTP 请求,只要浏览器或者服务器没有明确断开连接,那么该 TCP 连接会一直保持。 HTTP/1.1,缝缝补补的改进

  • 持久连接
  • HTTP/1.1 还引入了客户端 Cookie 机制和安全机制
  • 浏览器为每个域名最多同时维护 6 个 TCP 持久连接;
  • CDN(内容分发网络)

CDN

  • CDN的加速资源是跟域名绑定的。
  • 通过域名访问资源,首先是通过DNS分查找离用户最近的CDN节点(边缘服务器)的IP
  • 通过IP访问实际资源时,如果CDN上并没有缓存资源,则会到源站请求资源,并缓存到CDN节点上,这样,用户下一次访问时,该CDN节点就会有对应资源的缓存了。

HTTP/2.0

影响 HTTP/1.1 效率的三个主要因素:TCP 的慢启动、多条 TCP 连接竞争带宽和队头阻塞。

引入了多路复用机制

  • 通过在协议栈中添加二进制分帧层来实现的
  • 有了二进制分帧层还能够实现请求的优先级、服务器推送、头部压缩等特性,从而大大提升了文件传输效率。

多路复用:同一个连接并发处理多个请求

服务器推送:页面请求资源a.css,接到服务器资源的同时会返回a.js,存到缓存中,下次用时不需要访问服务器。

头部压缩:使用HPACK算法进行压缩

其他

http和https区别?

  • https是http协议的安全版本,http协议的数据是明文的,https使用SSL/TLS协议进行了加密处理。
  • 使用的连接方式不同,http使用tcp,https使用ssl
  • 默认端口不一样:http是80,https是443

HTTP的加载过程?

浏览器中的HTTP请求从发起到结束一共经历了如下八个阶段:构建请求、查找缓存、准备IP和端口、等待TCP队列、建立TCP连接、发起HTTP请求、服务器处理请求、服务器返回请求和断开连接。

  • 客户端连接web服务器,向服务器的http端口建立tcp连接
  • 建立tcp连接后,发送http请求,该请求作为tcp三次握手的第三个报文数据发送给服务器。
  • 服务器对浏览器请求做出响应,并把对应的html文本发送给浏览器。
  • 释放tcp连接(四次挥手)
  • 浏览器将html文本处理并显示内容