【网络】http 协议基础疑问集

1,815 阅读6分钟

历史回顾:

【网络】HTTP + 通信加密 + 认证机制 + 保护报文完整型 = HTTPS

简述下TCP的三次握手?

我:我们可以谈恋爱吗? 她:可以的。 我: 那我们谈恋爱吧。

HTTP 疑问集合

1. 使用http协议的哪个版本的是由服务器决定的吗?

CLICK ME

具体是双方协商,最终由服务器决定

2. 如何查看一个网站使用了http哪个版本?

CLICK ME

network 中 表格中的 Protocol,现代网站可能使用多个http版本。

3. http/1.1 还有哪些缺陷?

CLICK ME
  • 1.队尾阻塞
  • 2.对小文件传输效率低
  • 3.明文传输不安全
  • 4.每次header中都有传输头
  • 5.服务器不能主动推送数据到客户端

队尾阻塞问题只要传输层是TCP协议,就不会得到根本上的解决,http/2 利用流的机制很大程度上缓解了这个问题,http/3 传输层换了 UDP 才彻底解决了这个问题。

4. http/1.1 的主要缺陷?

CLICK ME
  • 慢启动
  • 多个TCP连接竞争带宽
  • 队尾阻塞

5. 什么是多路复用,HTTP/2 是如何实现多路复用的?

CLICK ME

建立一个TCP连接多个文件传输,并且不限制文件个数。实现了资源的并行传输。

HTTP/2 在协议层添加了一个二进制分帧层用来实现多路复用。二进制分帧层把文件分成帧,对帧进行编号传输,到服务器端再组装,由服务器来决定要先返回什么。

6. 基于二进制分帧层实现了哪些功能?

CLICK ME
  • 多路复用
  • 可以设置请求的优先级
  • 服务器推送
  • 头部压缩

7. 队头阻塞 - http请求阻塞?

CLICK ME

一个tcp连接可以用来处理多个http请求,当前的请求阻塞了,后面的请求也要等待,这是http请求阻塞。

8. 队头阻塞 - TCP数据包阻塞?

CLICK ME

一个请求了index.html,这个文件比较大,分了几次传回来 1,2,3,4,5,如果是 2,3,4,5数据包传回来了,而 1 没传回来,那么TCP也不会把这个数据交到上层,还得等 1 回来,然后才能进行拼接,上传到上层,这是TCP数据包阻塞。

9. HTTP/2 下的所有资源请求都会经过 “二进制分帧层”吗?

CLICK ME

是的,因为二进制分帧层是添加到http/2协议里了。

10. http/2为什么没必要用雪碧图和资源文件合并了?

CLICK ME

http/2 的慢启动对传输效率的影响微乎其微,影响传输效率的主要是文件的大小。多张图片大小加在一起,都没有合并一张雪碧图大,那雪碧图反而让传输更慢了。资源文件合并也是同样的道理。

11. 慢启动次数问题?

CLICK ME

http/2一个域名,理想情况下使用一个TCP长连接,慢启动只需要启动一次;http1.1一个域名建立多个TCP连接,建立几个TCP就会有几次慢启动。

12. 什么是TLS,跟TCP有什么区别?

CLICK ME

TLS协议,用来创建加密通道需要的协商和认证。应用层(HTTP、FTP)协议传送的数据通过TSL协议时会被加密,从而保证通信的私密性。

TCP是传输层协议,TLS是传输层安全协议。HTTPS才需要TLS协议,HTTP协议不需要,也就是说TLS协议不是必须的。

13. RTT?

CLICK ME

round trip time, 仅包括请求访问来回的时间,被称作网络延迟。

RTT = 传播时延(往返)+ 排队时延(路由器和交换机的) + 数据处理时延(应用程序的)

14. Cache 来缓存本地文件?

CLICK ME

http 请求中的缓存 cache 机制,资源缓存。Cookie 通常用来保持登录状态,信息缓存。

15. 编码格式与文件传输的字节流之间有什么关系?

CLICK ME

字符流、字节流、二进制在 HTTP 协议传输的时候,请求头、响应头都是以ASCII文本方式传输的,但是传输内容(响应体)可能是多种形式的,接受方处理数据的时候根据 Content-Type 制定的类型进行处理,响应头若 Transfer-Encoding 这个字段,用来指定传输的数据的编码转换的压缩方式。没有这个字段,就没编码压缩。

16. http/2中传输的优先级?

CLICK ME

有默认优先级,通过PRIORITY帧可以改变流的优先级。 具体默认优先级的规则,以及如何通过帧来改变流的优先级?会的大佬,在评论区留言讨论啊。

17. tcp为什么是可靠的?

CLICK ME

TCP经历了三次握手、四次分手,网络通信更安全。

18. 简述TCP 的三次握手?

CLICK ME 我:我们可以谈恋爱吗? 他: 可以的。 我: 那我们谈恋爱吧。

19. HTTP/2 首部压缩的实现原理

CLICK ME

HTTP 2.0使用了首部压缩技术,压缩算法使用HPACK。可让报头更紧凑,更快速传输。HPACK 协议,其中原理是哈夫曼编码及索引表(数据结构内容)。

20. HTTPS是一个新的协议吗?

CLICK ME

HTTPS并不是一个新的协议,通常 HTTP 直接和 TCP通信,HTTPS先和安全层通信,然后安全层再和 TCP 层通信。也就是说 HTTPS 所有的安全核心都在安全层。它不会影响上下两层。

21. HTTPS的安全层是如何工作?

CLICK ME

对发起 HTTP 请求的数据进行加密操作和对接收到HTTP的内容进行解密操作。

22. HTTPS非对称加密的优势?

CLICK ME

确保了浏览器发送给服务器的数据是安全的

23. HTTPS非对称加密存在的问题?

CLICK ME
  • 效率低
  • 无法保证服务器发送给浏览器的数据安全

以上思考沉淀主要来自于极客时间《浏览器工作原理和实战》之浏览器的网络。

最后

大家如何把站点升级到 http/2,都遇到了哪些坑?看到有很多的网站是多协议并存的,哪些资源请求走 http/1.1,哪些走 http/2 ?大家有把网站升级到 http/3 的吗,都遇到了哪些坑,欢迎在留言区告诉我。