几乎是默写出来,加上自己理解的博客(iOS面试)
1.什么是http
HTTP 是超?本传输协议,也就是HyperText Transfer Protocol
超?本:它就是超越了普通?本的?本,它是?字、图?、视频等的混合体,最关键有超链接,能从 ?个超?本跳转到另外?个超?本
- HTML 就是最常?的超?本了,它本身只是纯?字?件,但内部?很多标签定义了图?、视频等的链接,再经过浏
览器的解释,呈现给我们的就是?个?字、有画?的??了。
GET与POST
- Get?法的含义是请求从服务器获取资源,这个资源可以是静态的?本、??、图?视频等。
- ? POST ?法则是相反操作,它向 URI 指定的资源提交数据,数据就放在报?的 body ?。
安全的和幂等的
- 在 HTTP 协议?,所谓的「安全」是指请求?法不会「破坏」服务器上的资源。
- 所谓的「幂等」,意思是多次执?相同的操作,结果都是「相同」的。
- GET ?法就是安全且幂等的,因为它是「只读」操作,?论操作多少次,服务器上的数据都是安全
的,且每次的结果都是相同的。 - POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多
个资源,所以不是幂等的。
http的特点
2.HTTP/1.1、HTTP/2、HTTP/3 演变
HTTP/1.1 相? HTTP/1.0 提?了什么性能:
- 长连接
- 管道传输:只要第?个请求发出去了,不必等其回来,就可以发第?个请求出去
http1.1还存在的问题:
- 头部冗长,未压缩
- 队头阻塞:串行请求
- 没有优先级控制
- 请求只能从客户端开始,服务器只能被动响应
HTTP/2 相? HTTP/1.1 性能上的改进:
- 头部压缩:Hpack算法
- 二进制格式
- 数据流:可以指定数据流的优先级
- 多路复用:并发请求,不会有队头阻塞问题
- 服务器推送:服务器可以主动向客户端发消息
http1.2的问题: 多个 HTTP 请求在复??个 TCP 连接,下层的 TCP 协议是不知道有多少个 HTTP 请求 的。所以?旦发?了丢包现象,就会触发 TCP 的?传机制,这样在?个 TCP 连接中的所有的 HTTP 请求都必须等 待这个丢了的包被重传回来。
- HTTP/3 把 HTTP 下层的 TCP 协议改成了 UDP
- QUIC 协议 可以实现类似 TCP 的可靠性传输
- TLS3 升级成了最新的 1.3 版本,头部压缩算法也升级成了 QPack
- HTTPS 要建??个连接,要花费 6 次交互,先是建?三次握?,然后是 TLS/1.3 的三次握?。QUIC 直接把
以往的 TCP 和 TLS/1.3 的 6 次交互合并成了 3 次,减少了交互次数
3.https: http + ssl/tls
- 混合加密的方式实现信息的机密性,解决了窃听的风险
- 摘要算法的方式来实现完整性,它能为数据生成独一无二的“指纹”(md5,散列hash值)
- 将服务器公钥放入到数字证书中,解决了冒充的风险
参考博客:
图解网络–小林coding 暗黑版+亮白版
|