HTTP 基本知识
HTTP是什么?
超文本传输协议,在计算机世界中,专门用于两点之间 传输 文字/图片/视频/音频等 超文本 的规定与规范
HTTP 常见状态码?
HTTP 常见字段有哪些?
host: 客户端发送请求时,用来指定服务器Content-Length: 服务端在返回数据的时候 会有该字段,用来表示本次返回内容的长度。Connection: 用来表示是否使用tcp长连接:keep-aliveContent-Type: 服务端返回数据时,告诉客户端本次的数据类型Content-Encoding: 服务端返回数据时,告诉客户端本次的数据采用了什么压缩方法。Accept-Encoding: 客户端在请求的时候,可以通过此字段表示自己接受什么样的压缩方法。
GET和POST
Get和Post有什么区别?
Get一般用来由客户端向服务端请求资源。 Post一般用来由客户端向服务端提交资源。
Get和Post都是幂等和安全的吗?
先说明下安全和幂等的概念:
-
在 HTTP 协议里,所谓的「安全」是指请求方法不会「破坏」服务器上的资源。
-
所谓的「幂等」,意思是多次执行相同的操作,结果都是「相同」的。
那么很明显 GET 方法就是安全且幂等的,因为它是「只读」操作,无论操作多少次,服务器上的数据都是安全的,且每次的结果都是相同的。
POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等的。
HTTP的特性
http有哪些优点?
- 简单
就由header和body组成
- 易于拓展
http处于第五层应用层,他下面的协议是可以随意变换的。比如HTTPS就是相当于在HTTP的下面加了一层SSL/TLS协议。
- 应用广泛
哪都能用呗
http由哪些缺点呢?
- 无状态
双刃剑
好处:服务器不用去记录http的状态,减轻服务器的负担。
坏处:没有记忆,在完成具有关联性操作的时候,就很麻烦。不过有cookie来帮我们解决。cookie是在服务端生成的,保存在客户端,下次访问的时候带上,哪服务端就知道你是谁啦。
- 明文传输
传输过程中可见,虽然便于我们去F12,但是相当于在进行信息裸奔。
- 不安全
不安全就在于,第一,明文传输,内容可能被监听。第二,不验证通讯方的信息,可能被伪装。第三,不验证信息完整性,可能呗篡改啦。
http(1.1)的性能如何呢?
关键词,长连接,管道网络传输,队头阻塞
长连接:减少了建立和断开链接的时间。
管道传输:不用等请求回来就可以发第二次请求。
队头阻塞:在客户端排队的某一个请求阻塞了,那后边的都堵上了。
因此 1.1的性能不咋样。
HTTPS
HTTP 和 HTTPS 的区别
-
TTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。
-
HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。
-
HTTP 的端口号是 80,HTTPS 的端口号是 443。
-
HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
HTTPS干了啥
他为啥就安全了呢。
上面提到,不安全的三个因素
/窃听风险/冒充风险/篡改风险
HTTPS,使用混合加密,保证了机密性。摘要算法,保证了完整性。数字证书,保证了不被冒充。