[ java笔试面试知识点系列 二 ] HTTP

227 阅读4分钟

HTTP 基本知识

HTTP是什么?

超文本传输协议,在计算机世界中,专门用于两点之间 传输 文字/图片/视频/音频等 超文本规定与规范

HTTP 常见状态码?

HTTP 常见字段有哪些?

  • host: 客户端发送请求时,用来指定服务器
  • Content-Length: 服务端在返回数据的时候 会有该字段,用来表示本次返回内容的长度。
  • Connection: 用来表示是否使用tcp长连接:keep-alive
  • Content-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 的区别

  1. TTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。

  2. HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。

  3. HTTP 的端口号是 80,HTTPS 的端口号是 443。

  4. HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。

HTTPS干了啥

他为啥就安全了呢。

上面提到,不安全的三个因素

/窃听风险/冒充风险/篡改风险

HTTPS,使用混合加密,保证了机密性。摘要算法,保证了完整性。数字证书,保证了不被冒充。

文章参考:mp.weixin.qq.com/s/amOya0M00…