HTTP
2021-07-18 20:53:42 0 举报
梳理了HTTP常见的一些面试题
作者其他创作
大纲/内容
HTTP基本知识
基本概念
HTTP是一个在计算机世界里专门在【两点】之间【传输】文字,图片,音频,视频等【超文本】数据的【约定和规范】
常见状态码
1xx:提示信息,表示目前是协议处理的中间状态,还需要后续操作
2xx:成功,报文已经收到并被正确处理
200 OK
204 No Content
206 Partial Content
3xx:重定向,资源位置发生变动,需要客户端重新发送请求
301 Moved Permanently
302 Found
304 Not Modified
4xx:客户端错误,请求报文有误,服务器无法处理
400 Bad Request
403 Forbidden
404 Not Found
5xx:服务器错误,服务器在处理请求时内部发生了错误
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
常见字段
Host 字段
客户端发送请求时,⽤来指定服务器的域名。有了 Host 字段,就可以将请求发往「同⼀台」服务器上的不同⽹站。
Content-Length 字段
服务器在返回数据时,会有 Content-Length 字段,表明本次回应的数据⻓度。
Connection 字段
Connection 字段最常⽤于客户端要求服务器使⽤ TCP 持久连接,以便其他请求复⽤。
Content-Type 字段
Content-Type 字段⽤于服务器回应时,告诉客户端,本次数据是什么格式。
Content-Encoding 字段
Content-Encoding 字段说明数据的压缩⽅法。表示服务器返回的数据使⽤了什么压缩格式
GET和POST
GET和POST的区别
Get ⽅法的含义是请求从服务器获取资源,这个资源可以是静态的⽂本、⻚⾯、图⽚视频等。比如请求文章的内容
POST ⽅法则是相反操作,它向 URI 指定的资源提交数据,数据就放在报⽂的 body ⾥,比如在文章中留言
GET和POST是否为安全和幂等
GET ⽅法就是安全且幂等的,因为它是「只读」操作,⽆论操作多少次,服务器上的数据都是安全
的,且每次的结果都是相同的。
的,且每次的结果都是相同的。
POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多
个资源,所以不是幂等的。
个资源,所以不是幂等的。
HTTP特性
HTTP优点
简单
灵活和易于拓展
应用广泛和跨平台
HTTP缺点
无状态
明文传输
不安全
通信使⽤明⽂(不加密),内容可能会被窃听。
不验证通信⽅的身份,因此有可能遭遇伪装。
⽆法证明报⽂的完整性,所以有可能已遭篡改。
HTTP性能
长连接
管道⽹络传输
队头阻塞
HTTP与HTTPS
HTTP和HTTPS区别
HTTP 是超⽂本传输协议,信息是明⽂传输,存在安全⻛险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在
TCP 和 HTTP ⽹络层之间加⼊了 SSL/TLS 安全协议,使得报⽂能够加密传输。
TCP 和 HTTP ⽹络层之间加⼊了 SSL/TLS 安全协议,使得报⽂能够加密传输。
HTTP 连接建⽴相对简单, TCP 三次握⼿之后便可进⾏ HTTP 的报⽂传输。⽽ HTTPS 在 TCP 三次握⼿之
后,还需进⾏ SSL/TLS 的握⼿过程,才可进⼊加密报⽂传输。
后,还需进⾏ SSL/TLS 的握⼿过程,才可进⼊加密报⽂传输。
HTTP 的端⼝号是 80,HTTPS 的端⼝号是 443。
HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。
HTTPS解决了HTTP的哪些问题
窃听⻛险,⽐如通信链路上可以获取通信内容
篡改⻛险,⽐如强制植⼊垃圾⼴告
冒充⻛险,⽐如冒充淘宝⽹站
HTTPS是如何解决HTTP不安全问题的
HTTPS 在 HTTP 与 TCP 层之间加⼊了 SSL/TLS 协议,可以很好的解决了上述的⻛险
信息加密
非对称加密
在通信建⽴前采⽤⾮对称加密的⽅式交换「会话秘钥」,后续就不再使⽤⾮对称加密。
对称加密
在通信过程中全部使⽤对称加密的「会话秘钥」的⽅式加密明⽂数据
校验机制
摘要算法
摘要算法⽤来实现完整性,能够为数据⽣成独⼀⽆⼆的「指纹」,⽤于校验数据的完整性,解决了篡改的⻛险。
身份证书
数字证书
借助第三⽅权威机构 CA (数字证书认证机构),将服务器公钥放在数字证书(由数字证书认证
机构颁发)中,只要证书是可信的,公钥就是可信的
机构颁发)中,只要证书是可信的,公钥就是可信的
HTTPS是如何建立连接的?其间交互了什么
SSL/TLS 协议基本流程
客户端向服务器发起加密通信请求,也就是 ClientHello 请求
服务器收到客户端请求后,向客户端发出响应,也就是 SeverHello
客户端回应
服务器的最后回应
HTTP/1.1、HTTP2、HTTP3的演变
HTTP/1.1对比HTTP/1.0
提升之处
使⽤ TCP ⻓连接的⽅式改善了 HTTP/1.0 短连接造成的性能开销。
⽀持管道(pipeline)⽹络传输,只要第⼀个请求发出去了,不必等其回来,就可以发第⼆个请求出去,可以
减少整体的响应时间。
减少整体的响应时间。
仍有不足
请求 / 响应头部(Header)未经压缩就发送,⾸部信息越多延迟越⼤。只能压缩 Body 的部分;
发送冗⻓的⾸部。每次互相发送相同的⾸部造成的浪费较多;
服务器是按请求的顺序响应的,如果服务器响应慢,会招致客户端⼀直请求不到数据,也就是队头阻塞;
没有请求优先级控制;
请求只能从客户端开始,服务器只能被动响应。
HTTP/2针对HTTP/1.1做了哪些优化?
头部压缩
⼆进制格式
数据流
多路复⽤
服务器推送
HTTP/2有哪些缺陷?HTTP/3做了哪些优化
队头阻塞
TCP 和 TLS 握⼿时延
连接迁移需要重新连接
这是基于 TCP 传输层的问题,所以 HTTP/3 把 HTTP 下层的 TCP 协议改成了 UDP!
模型演变
HTTP/1.1 优化思路
避免发送HTTP请求
缓存
缓存的实现
减少HTTP请求次数
减少重定向请求次数
合并请求
延迟发送请求
减少HTTP响应的数据大小
无损压缩
有损压缩
0 条评论
下一页