HTTP知识梳理

170 阅读3分钟

「这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战」。

前言

http相关的知识点比较零碎,每次都是面试的之前复习,这里把自己经常忽略的一些知识点汇总一下,便于以后翻阅。

HTTP版本差异

http1.x

  • http1.0 最早在1996使用,那个时候只是使用一些较为简单的网页上和网络请求上;
  • http1.11999年广泛应用于现在的各大浏览器网络请求。 区别:

1、缓存处理

  • http1.0 的头部通过if-modified-since,expires来作为缓存判断的标准
  • http1.1 则引入了更多的缓存控制策略 如entity tag等等,可供选择的缓存头

2、带宽优化和网络请求使用

  • http1.0 存在浪费带宽的情况,比如客户端只是需要某个对象的部分字段,服务器会将整个对象返回,并且不支持断点续传功能
  • http1.1 在头部引入了range头域,它允许请求资源的部分,返回码是206

3、错误通知管理

http1.1 新增了 24个错误状态响应码
409请求的资源和当前资源的状态发生冲突 410表示服务器上的某个资源将永久删除

4、host 头处理

http1.0 认为每台服务器都绑定一个唯一的IP地址,因此请求头并没有传递主机名,但是现在一台物理服务器上面可以存在多个虚拟主机,并且他们共享一个IP地址,所以 http1.1 的请求信息和返回信息都支持host 头域,并且如果请求头中没有传入host头域 就会报错400 (bad request)

5、长连接

http1.1 支持长连接和流水线连接 ,在一个TCP 连接上可以传送多个http请求 ,减少建立连接和关闭连接的消耗和延迟 http1.1 默认开启 connection: keep-alive,一定程度减少每次http请求都要创建连接的缺陷

http2.x

1、http2.x 使用二进制传送、http1.x 使用文本传送

二进制的传送单位是组成了,同时还有ID标识

2、http2.x 支持多路复用

因为有ID标识,同一个http请求可以实现多个http请求传输,可以通过ID来定位到具体是那个http请求

3、http2.x 头部压缩

http2.x 通过gzipcomproess 压缩头部然后再进行传送,同时客户端和服务器同时维护一张头部信息表,所有的字段都记录在这张表中,这样后面每次传输只需要传输表中的索引ID,通过索引ID查询表头的值

4、http2.x 支持服务器推送

http2.x在未经客户端许可的情况下,,可以主动向客户端推送内容

http优化

从两个方面考虑

1、带宽 (现在网络建设发达,一般不需要考虑带宽问题)

2、延迟

1)浏览器阻塞

根据不同浏览器内核,同时连接数不同,超过浏览器最大连接限制,后续请求会被阻塞

2)DNS 查询

通过DNS减少浏览器和目标服务器建立连接的时间

3)建立连接

http是基于TCP协议的,浏览器最快也要三次握手才能捎带http报文,达到真正的建立连接,这些连接无法复用,每次请求都要三次握手产生较高的延迟(http2.x支持多路复用)

http 和 https 的一些区别

1、https需要申请 CA 证书,一般都是需要花钱的

2、http 是运行TCP之上的, 所有的传送内容都是明文

https 是基于SSL/TLS之上的,SSL/TLS是运行在TCP之上的,所有的传输内容都是加密的

3、httphttps 的连接方式不同,使用的端口也是不同的

http 端口 80
https 端口 443

4、https可以有效地防止运营商劫持,解决了放劫持的一个大问题