之前学习的知识点,都是很零碎的,所以我这里边复习 、边整理,会一直持续更新。
HTTP是什么
是超文本传输协议。
协议 :大家共同遵守的。
传输 :两点之间数据进行交互。
超文本:不是普通的文本,可以携带文字、图片、音频、超链接等...
常见的状态码有哪些?
1XX : 代表中间信息,不常用
2XX : 回复成功
3XX : 需要重定向
4XX : 源于客户端的错误。(如400一个笼统的错误、403没权限、404没资源)
5XX: 源于服务器的错误。(如500也是一个笼统错误、501暂时没功能、502服务器出错,但是网关没问题、503服务繁忙)
常见的字段有哪些?
content-length :表示发送的请求体/响应体的具体大小,让接收方知道消息边界
connection :用来建立长连接,Keep-Alive
content-type :代表发过去的是数据类型,如 application/json
... 等等
HTTP(1.1)的优点有哪些?
简单 :head+body,头部+身体,简单容易理解。
可拓展 :传输协议并没有被顶死,可以根据需求对头部进行自定义新增。
应用广泛:大家几乎都支持这套协议。
HTTP(1.1)的缺点有哪些?
无状态 :虽然无记忆,携带的东西减少,从而服务器的压力就少了一点。但是也正因为无记忆,导致很难进行连贯性操作。
明文传输 :可能被截取、监听、篡改等风险。
队头阻塞 :在一条长连接里,后续的http请求,必须等待前方的http请求结束。
Header冗余:每次都必须带上全量Header。
HTTP/1.1的性能如何
因为HTTP是基于TCP/IP协议做的,并且是 请求-响应 模式,所以性能也就体现在他们身上。
HTTP/1.1 支持长连接,也就意味着不需要频繁的三次握手与四次挥手。
所以大家可以复用这条连接。
HTTP缓存有哪些实现方式
HTTP 缓存分为强缓存和协商缓存。
强缓存是在缓存未过期时直接使用本地缓存,不请求服务器;
协商缓存是在缓存过期后,向服务器确认资源是否发生变化。如果没变,服务器返回 304,浏览器继续使用本地缓存;如果变了,服务器返回 200 和新的资源内容。
第一种协商是last_modified:先问服务器最后一次修改资源的时间边了没。
第二种协商采用的Etag指纹:通过唯一的资源标识,如果Etag没变,返回时,返回304就行了。
HTTP 与 HTTPS 有哪些区别?
1、HTTP是明文传输不安全,HTTPS经SSL/TLS进行加密传输,更安全。
2、HTTP只需要经TCP三次握手后就能通信了。HTTPS在三次握手后,还需要经过TLS四次握手进行加密。
3、HTTPS需要向CA(权威证书机构)申请证书。
HTTPS 解决了 HTTP 哪些问题
解决了窃听风险 、篡改风险 、冒充风险。
HTTPS 是如何建立连接的?
我用的是 tls1.2 中的 RSA 密钥交换的流程进行解释。
HTTPS,会在 TCP 三次握手之后。进行TLS4次握手。
中间涉及了对称加密算法 和非对称加密算法 。
详细过程是:
1、客户端 会先对服务器发送,一个随机数、他的tls版本号 与 支持的密码列表。
2、服务器 收到后会返回,一个随机数、确定的tls版本号、所需的加密算法 与 服务器证书。
3、客户端 收到后,会先验证服务器证书是否是伪造的,然后在生成一个随机数生成预主密钥,用证书中的公钥进行加密发回服务器。
4、服务器 接收之后,先对密文解密,然后前将两次随机数与预主密钥一同算出密钥。
客户端进行同样操作。
之后就可以进行http传输了,但内容是被对称加密算法加密过的。
HTTP/1.1 相比 HTTP/1.0 提高了哪些性能
HTTP/2 做了什么优化
HTTP/3 做了什么优化
为什么有了HTTP还需要RPC
既然有了HTTP为什么还要有Websocket
TCP三次握手
TCP四次挥手
什么是UDP?
如何基于UDP实现可靠传输?