目录
1.五大类面试题目
- HTTP基本知识
- GET和POST
- HTTP特性
- HTTP和HTTPS
- HTTP/1.1,HTTP/2,HTTP/3演变
2. HTTP基本知识
2.1 HTTP是什么?
1)HTTP是什么?
1)超文本传输协议:HyperText Transfer Protocol
2) 超文本:超越文本的文本(文字,图片,视频,超链接的结合体)
3)协议:计算机的世界的规范
4)传输:两点之间。不一定是服务器与浏览器之间
2.2 HTTP五大类状态码
- 1XX:提示信息,协议处理的中间态,还需要后续操作
- 2XX:成功,报文已经收到并被正确处理:200,204和206
- 3XX:重定向,资源位置发生变动,需要客户端重新发送请求。301,302,304
- 4XX:客户端发送的报文有误,服务器无法处理,也就是错误码的意义(403,服务器禁止访问资源,404请求的资源在服务器上找不到)
- 5XX:客户端报文正确,服务器处理时内部发生错误,属于服务器端的状态码。(502:即将开业,敬请期待;502:服务器自身工作正常,访问后端服务器发生错误;503服务器当前很忙)。
2.2 HTTP常见字段有哪些
- Host字段:客户端发起请求时,用来指定服务器的域名 -----》
- Connection字段:客户端要求服务器使用TCP持久连接,以便其他请求复用。
- Content-Length 字段:服务器返回数据时,会有Content-Length,表明本次回应的数据长度。 《 ----
- Content-Type字段:服务器回应时,告诉客户端,本次数据的格式是什么?《 ----
- Content-Encoding字段:服务器回应时,告诉客户端,本次数据的压缩方式是什么?《 ----
3. GET和POST
3.1 GET和POST有哪些区别?
- Get:从服务器获取资源,可以是静态的文本,页面和图片视频。
- Post:向服务器指定的URL域名提交数据,数据放在报文的body中。
3.2 GET和POST方法都是安全和幂等的吗?
- 安全:请求方法不会破坏服务器上的资源
- 幂等:多次执行相同的操作,结果都是相同的。
- GET只是从服务器读取信息,不修改信息,故事安全和幂等的。
- POST向服务器修改数据,故事不安全和不幂等的。
4. HTTP特性
4.1 HTTP的优点
- 简单:基本报文格式是header+body,头部信息也是key-value简单文本格式
- 灵活和易于扩展:HTTP协议中:各类请求方法,状态码,头字段,等每个组成部分都可以自由修改。
- 应用广泛和跨平台:从台式浏览器到手机上的各种APP,应用遍地开发,并且天然具有跨平台的优越性。
4.2 HTTP的缺点
-
无状态双刃剑:优点是服务器不会去记住HTTP的状态,减轻服务器的负担;缺点:服务器没有记忆功能,完成有关联性的操作会非常麻烦。
1)举例说明:登录购物网站,如果没有记忆功能,登录账户后,每一步操作,都会需要验证用户信息,非常难操作。
2)解决无状态问题:在请求和响应报文中,写入Cookie信息来控制客户端的状态。 -
明文传输双刃剑:优点:方便阅读,未调试工作带来了便利性 ;缺点:不安全。如果信息中包含账户和密码,就暴露了。
-
不安全
1)通信中使用明文:内容被窃听,号没了
2)不验证通信方身份,容易被伪装:钱没了
3)无法证明报文的完成性,可能被篡改:眼没了
解决方式:在HTTPS中,引入SSL/TLS层,安全上达到了极致。
4.3 HTTP1.1的性能如何?
HTTP协议是基于TCP/IP,并且使用了【请求和问答】的通信模式,性能的关键就在这两点上。
- 长连接:持久连接,通过字段Connection定义:只要任意一端没有明确提出断开连接,就保持连接状态。(避免频繁进行三次握手协议)
- 管道网络传输:允许浏览器同时发送请求A和B。客户端可以发起多个请求,只要第一个请求发出去了,不必等其回来,就可以发送第二个请求,减少整体的响应时间。(服务器还是按顺序进行回应)
- 队头阻塞:同一时刻,请求过多,会发生堵塞。
综上:HTTP1.1性能一般般,主要在HTTP/2和HTTP/3中优化。
5. HTTP和HTTPS
5.1 HTTP和HTTPS的区别?
- 安全性更高:HTTPS在TCP运输层和HTTP网络层之间加入了SSL/TLS安全协议,使得报文能够加密传输。
- 操作更多:HTTPS因为多了一层,需要进行加密,所以比HTTP更复杂一点。
- 端口不同:HTTP的端口号是80,HTTPS的端口号是443.
- 是否需要服务器认证:HTTPS需要向CA申请数字证书,保证服务器的身份是可信的。
- URL前缀名:HTTP 的 URL 前缀是 http://,HTTPS 的 URL 前缀是 https://。
5.1 HTTPS解决HTTP哪些问题?
安全性上的三个风险:
- 窃听风险:获取通信信息—混合加密
- 冒充风险:冒充淘宝网站 —安全验证,数字证书
- 篡改风险:植入广告 —摘要算法保证一致性
5.1 HTTPS如何解决HTTP不安全问题?
在TCP传输层和HTTPS应用层之间添加一层SSL/TLS,解决风险问题。
- 信息加密:交互信息无法被窃取,通过混合加密方法
- 校验机制:无法篡改通信内容,篡改了不能正常显示。通过摘要算法来保证一致性
- 身份证书:证明淘宝网是真的,将服务器公钥放入数字证书中
1)混合加密:对称加密和非对称加密结合使用。
2)摘要算法:能够为数据生成独一无二的指纹,用于校验数据的完整性。
3)数字证书:将服务器公钥放入数字证书中。
5.1 HTTPS如何建立连接,期间交互了什么?
- SSL/TLS协议基本流程:
- 客户端向服务器索要验证服务器的公钥 :数字证书
- 双方协议生产会话秘钥
- 双方采用会话秘钥进行加密通信。
- 四次握手
前面两步是SSL/TLS的建立过程,即握手阶段:涉及四次通信。
- ClientHello:客户端到服务端:加密通信请求,
- SeverHello:服务器到服务端:(确认开始加密)
- 客户端回应:取出公钥,加密报文
- 服务器最终响应:收到三个随机数,协商算出通信的会话秘钥。
- 最后一步就是普通的HTTP协议通信阶段。
6. HTTP/1.1,HTTP/2,HTTP/3演变
6.1 说说HTTP/1.1相比HTTP/1.0提高了什么性能?
- 长连接:改善1.0短连接带来的开销
- 管道网络传输:减少整体的响应时间。
6.2 说说HTTP/2相比HTTP/1.1提高了什么性能?
- 头部压缩:如果同时发送多个请求,头部是一样的,消除重复部分。HPACK算法,共同维护一章头信息表
- 二进制格式:1.1为纯文本报文,2采用二进制格式,统称为帧:头信息帧和数据帧。增加数据传输效率。
- 数据流:对数据包做标记,指出属于哪个回应。每个请求和回应所有的数据包,称为一个数据流。
- 多路复用:并发多个请求或者回应,不按顺序一一对应。降低了延迟,大幅度提高连接的利用率。不会出现队头阻塞。
- 服务器推送:服务端可以主动向客户端发送信息。(在浏览器请求HTML时,可以提前把可能用到的JS,CSS文件等静态资源发送给客户端)
6.2 说说HTTP/3相比HTTP/2提高了什么性能?
HTTP/2的缺陷:
- 多个HTTP请求复用同一个TCP,下层的TCP协议不知道有多少个HTTP请求。当发生丢包的时候,所有的HTTP请求都必须等待这个丢包重传过来。
解决办法:
1)这个是基于TCP传输层的问题,HTTP/3把下层的TCP协议改为了UDP。UDP不管丢包问题,不会出现等待现象。
2) UDP是不可靠传输的,但是基于UDP的QUIC协议可以实现类似TCP的可靠性传输。
UDP的QUIC协议
1)QUIC是UDP上的伪TCP+TLS+HTTP/2的多路复用协议。
2)当某个流发生丢包时,只会阻塞这个流,不会影响其他流
3)HTTPS建立连接需要6次握手(建立三次,TLS三次),QUIC合并为三次,减少交互次数。
7. 其他问题
7.1 应用层有哪些常见的协议?
-
HTTP:超文本传输协议,主要是为Web浏览器和Web服务器之间通信而设计的。(HTTP是无状态的协议,一般通过Session来记录客户端用户的状态)
-
SMTP:简单邮件传输(发送)协议。接受使用的POP3协议
-
POP3/IMAP:邮件接收的协议。
举例:邮件的发送过程
1)发送:通过STMP协议,从服务端把邮件发给163邮箱服务器
2)发送:163邮箱服务器发现要送达的对象是QQ邮箱,故通过STMP协议,把邮件发给QQ邮箱服务器。
3)接收:QQ邮箱服务器通知对应邮箱用户接受邮件。用户通过通过POP3协议读取邮件。 -
FTP:文件传输协议
7.2 TCP如何保证数据的可靠传输
- 数据进行分割为数据块,打包发送
-
校验和:检验数据是否传输错误
- 流量控制
- 拥塞控制:慢开始算法,拥塞避免算法,快重传和快恢复算法。
- 超时重传,快重传
参考内容:小林图解计算机网络
7.3 在浏览器中输入 url 地址 ->> 显示主页的过程(面试常客)
1)DNS 解析:
2)TCP 连接
3)发送 HTTP 请求
4)服务器处理请求并返回 HTTP 报文
5)浏览器解析渲染页面
6)连接结束
7.4 HTTP是无状态协议,如何保存用户状态(cookie和session)
7.4.1 Cookie(添加内容)
Cookie:记录发送方的信息,保存用户信息,存放在浏览器端
7.4.2 Session(添加内容)
Session:通过服务器记录用户的状态(比如之前发了什么),存放在服务器端。
7.5 URI 和 URL 的区别是什么?
URI:统一资源标志符,能够标志一个资源 :户口本,直到身份证号和家庭住址信息
URL: 统一资源定位符 ,能够定位一个资源的路径 :家庭住址
8. ARP和DNS
8.1 ARP
地址解析协议:通过目标地址的IP地址,查询目标设别的MAC地址
- 工作流程
发送端和接收端在同一个网段内:
1)发送端在自己的ARP表中,寻找是否有对应IP地址的MAC地址;找到了,就直接把IP数据包进行发过去
2)没有找到,产生广播报文:广播报文发送端为发送端的IP和MAC,接收端为接收端的IP地址的MAC地址;
3)在同一个网络下。发送端收到了广播,使用单播形式给发送端发送自己的物理地址;
4)发送端根据获得的物理地址,存入自己的ARP表中,然后进行把IP数据包进行发送
8.2 DNS
DNS协议则是用来将域名转换为IP地址。
-
没有DNS协议是如何转化的?
1)通过host文件:域名和IP地址的对应关系存储在host文件中,但是不方便维护。 -
DNS协议是如何转化的?
1)用户在输入域名的时候,会自动查询DNS服务器,由服务器检索其数据库;服务器的级别是一层一层往上推进的,直到找到域名对应的IP地址为止。【域名有分级,所以域名服务器也是分级的】
2)查找方式有:递归查找(找到了不用通知上一级,给结果)。迭代查找(需要通知上一级,给过程) -
DNS的特点:
1)IP地址是面向主机的,给主机识别;域名是面向用户的
2)用户输入域名,主机根据DNS协议,把域名对应的IP地址找到,然后使用ARP,找到对应的物理地址,进行数据的发送。