Skip to main content

http网络协议

Y-aong...About 5 minhttp网络协议http

http网络协议

一、http是什么

HTTP 是超文本传输协议,也就是HyperText Transfer Protocol。

我们先来理解「文本」,在互联网早期的时候只是简单的字符文字,但现在「文本」的涵义已经可以扩展为图片、视频、压缩包等,在 HTTP 眼里这些都算作「文本」。

二、http常见的状态码

 五大类 HTTP 状态码
五大类 HTTP 状态码

301 永久重定向。说明请求的资源已经不存在了,需改用新的 URL 再次访问。

302表示临时重定向。表示临时重定向,说明请求的资源还在,但暂时需要用另一个 URL 来访问。

403 Fobidden。表示禁止访问资源。并不是客户端的请求错误

501 Not Implemented 表示客户端请求的功能还不支持,类似“即将开业,敬请期待”的意思。

502 Bad Gateway通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误。

三、http缓存技术

强制缓存

指的是只要浏览器判断缓存没有过期,则直接使用浏览器的本地缓存,决定是否使用缓存的主动性在于浏览器这边。

如下图中,返回的是 200 状态码,但在 size 项中标识的是 from disk cache,就是使用了强制缓存。

img
img

协商缓存

当我们在浏览器使用开发者工具的时候,你可能会看到过某些请求的响应码是 304,这个是告诉浏览器可以使用本地缓存的资源,通常这种通过服务端告知客户端是否可以使用缓存的方式被称为协商缓存。

四、http和https区别

HTTP 由于是明文传输,所以安全上存在以下三个风险:

  • 窃听风险,比如通信链路上可以获取通信内容,用户号容易没。
  • 篡改风险,比如强制植入垃圾广告,视觉污染,用户眼容易瞎。
  • 冒充风险,比如冒充淘宝网站,用户钱容易没。

HTTPS 在 HTTP 与 TCP 层之间加入了 SSL/TLS 协议,可以很好的解决了上述的风险:

  • 信息加密:交互信息无法被窃取,但你的号会因为「自身忘记」账号而没。

  • 校验机制:无法篡改通信内容,篡改了就不能正常显示,但百度「竞价排名」依然可以搜索垃圾广告。

  • 身份证书:证明淘宝是真的淘宝网,但你的钱还是会因为「剁手」而没。

如何解决

  • 混合加密的方式实现信息的机密性,解决了窃听的风险。

  • 摘要算法的方式来实现完整性,它能够为数据生成独一无二的「指纹」,指纹用于校验数据的完整性,解决了篡改的风险。

  • 将服务器公钥放入到数字证书中,解决了冒充的风险。

http和https区别

端口和ssl加密

数子证书工作流程
数子证书工作流程

五、http1.0,http2.0,http3.0之间的区别

HTTP/1.1 改进:

  • 使用长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。
  • 支持管道(pipeline)网络传输,只要第一个请求发出去了,不必等其回来,就可以发第二个请求出去,可以减少整体的响应时间。

HTTP/2改进:

  • 头部压缩
  • 二进制格式
  • 并发传输,引出了 Stream 概念,多个 Stream 复用在一条 TCP 连接。
  • 服务器主动推送资源,服务端不再是被动地响应,可以主动向客户端发送消息。

http3.0改进:

  • HTTP/1.1 中的管道( pipeline)虽然解决了请求的队头阻塞,但是没有解决响应的队头阻塞,因为服务端需要按顺序响应收到的请求,如果服务端处理某个请求消耗的时间比较长,那么只能等响应完这个请求后, 才能处理下一个请求,这属于 HTTP 层队头阻塞。
  • HTTP/2 虽然通过多个请求复用一个 TCP 连接解决了 HTTP 的队头阻塞 ,但是一旦发生丢包,就会阻塞住所有的 HTTP 请求,这属于 TCP 层队头阻塞。

HTTP/2 队头阻塞的问题是因为 TCP,所以 HTTP/3 把 HTTP 下层的 TCP 协议改成了 UDP!

六、队头阻塞

采用HTTP/2时,浏览器一般会在单个TCP连接中创建并行的几十个乃至上百个传输。

如果HTTP/2连接双方的网络中有一个数据包丢失,或者任何一方的网络出现中断,整个TCP连接就会暂停,丢失的数据包需要被重新传输。因为TCP是一个按序传输的链条,因此如果其中一个点丢失了,链路上之后的内容就都需要等待。

如下图所示,我们一个用链条来表现一个连接上发送的两个流(传输),红色的与绿色的数据流:

img
img
Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.15.8