D5【问答格式】【精简版】每日一练前端
Q1. Content-Type有哪些?
- text/html: html格式
- text/plain: 纯文本格式
- image/gif: gif图片格式
- image/png: png图片格式
- application/json: JSON数据格式
Q2. https是如何防止信息被劫持的?
- 如果是DNS劫持的话,由于客户端会对服务器的真实身份进行验证(证书),所以在发生dns劫持导致连接到其他非目标服务器的情况时,该次访问将会被浏览器发现并阻止。
- 如果是内容劫持的话,由于数据是以密文形式传输的,通过双方确认的加密方式和之前握手生成的随机数来加密的,所以劫持者就算拿到内容也无法解密。
- 如果是篡改信息的话,https有校验机制,通过哈希函数和数字签名来保证传输的内容不被篡改。
Q3. 进程和线程有什么区别?
- 进程是资源分配的单位,而线程是调度的基本单位。线程是进程当中的一条执行流程。
- 一个进程中可以同时存在多个线程,各个线程之间可以并发执行,各个线程之间可以共享地址空间和文件等资源。
- 线程相比进程能减少开销,比如创建时间比进程快,终止时间比进程快,同一个进程内的线程切换比进程切换快,线程之间数据传递效率也更高。
Q4. HTTP各个版本用的传输层协议有什么不同?
- HTTP1.1和HTTP2.0传输协议用的是TCP
- HTTP3.0传输协议改用了基于UDP的QUIC协议
Q5. HTTP1.1相比HTTP1.0有什么区别?
- 使用长连接的方式改善了1.0短连接造成的性能开销
- 支持管道网络传输,也就是只要第一个请求发出去了,不必等其回来就可以发送第二个请求出去,但是管道只解决了请求的队头阻塞,没解决响应的队头阻塞。
Q6. HTTP2相比HTTP1.1做了什么优化?
- HTTP2做了头部压缩
- HTTP2的头信息和数据体都是二进制传输过去,变成头信息帧和数据帧,而不是像HTTP1.1一样是纯文本
- HTTP2可以并发传输请求和响应,解决了队头阻塞的问题,但是没有彻底解决,因为他只解决了HTTP层的队头阻塞,TCP层还是有队头阻塞问题,一旦发生丢包现象,就会触发TCP的重传机制,这样在一个TCP连接中的所有HTTP请求都必须等待这个丢了的包被重传回来
- HTTP2中服务端会主动推送资源
Q7. HTTP3做了哪些优化呢?
- HTTP3真正做到了无队头阻塞,由于HTTP2队头阻塞的问题是TCP,所以HTTP3把HTTP下层的TCP协议改成了基于UDP的QUIC协议,可以实现类似TCP的可靠性传输。