作者:求一个demo

版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

内容通俗易懂,没有废话,文章最后是面试常问内容(建议通过标题目录学习)

一、HTTP协议

1、原理(深度理解)

(1)原理

        HTTP是应用层协议,用于在客户端(浏览器)与服务器之间进行超文本传输(如HTML文件、图片、视频等)。

        客户端(浏览器)向服务器发送一个HTTP请求报文(数据块,由起始行、头部字段和消息正文组成),请求中包含方法(如GET、POST等)、URL、协议版本、请求头等信息。服务器接收到请求后,处理请求并返回一个HTTP响应给浏览器,响应中包含状态码(如200、404等)、响应头、响应体(如HTML文件等)等信息。浏览器解析响应报文,并通过渲染引擎显示到界面。

(2)特点

        ①HTTP是无状态的,即每次请求都是独立的,服务器不会保存客户端的状态信息。

        ②数据以明文形式传输,容易被窃听和篡改。

        ③默认端口:80

2、HTTP请求方法(面试常问)

        请求方法:客户端希望服务器对资源执行的动作。

        ①GET:请求指定的资源;只获取资源,不对服务器数据进行修改;不发送响应体(body),但是服务器会返回资源的完整内容(响应头+响应体,例如HTML页面等)。

        ②POST:向服务器提交数据,会导致在服务器上的状态发生变化(POST请求通常用于创建或修改资源,多次相同请求 结果可能不同,如多次上传相同表单),所以POST是非幂等方法(幂等性:无论调用这个URL多少次,结果相同,前提是服务器等未修改);包含响应体(body),发送给服务器的内容写在body中。

        ③PUT:修改指定的资源;包含响应体,发送给服务器的内容写在body中。

        ④DELETE:删除指定的资源;不包含响应体。

        ⑤HEAD:和GET使用方法完全相同,但是HEAD请求只返回响应头不返回响应体body;可用在下载等场景中,返回的响应头Headers中有下载内容的大小,可用来显示进度。

3、HTTP的握手挥手过程

        HTTP是基于TCP协议的,所以它的握手挥手过程实际上是TCP的三次握手和四次挥手。

4、首部(请求头)

        首部分为请求头和响应头,是用来描述消息的元数据,首部分为以下几类:

        ①通用首部:用于请求和响应的通用信息,如Cache-Control(控制缓存行为)、Data(消息的日期和时间)。

        ②请求首部:客户端发送请求时使用的首部,如Accept(客户端接受的媒体类型)、Host(目标服务器的主机名和端口号)。

        ③响应首部:服务器返回响应时使用的首部,如Content-Type(响应体的媒体类型)、Server(服务器的信息)。

        ④实体首部:描述请求或响应体中实体(资源)的元信息,如Content-Encoding(实体内容的编码方式)。

        ⑤自定义首部:HTTP支持自定义首部,通常以X-开头,如X-Request-ID(用于跟踪请求的唯一标识)。

5、状态码(五类)

        状态码用于快速判断请求结果。

        ①1xx:请求已被接收,继续处理。如101(服务器同意切换协议)。

        ②2xx:请求已成功处理。如200(请求成功)、201(资源创建成功)、204(请求成功,无返回内容)。

        ③3xx:需要进一步操作以完成请求。如301(资源永久重定向)、302(资源临时重定向)、304(资源未修改)。

        ④4xx:请求包含错误或无法完成。如400(请求无效)、401(未授权)、403(禁止访问)、404(资源未找到)。

        ⑤5xx:服务器处理请求时出错。如500(服务器内部错误)、503(服务不可用)。

推荐内容

二、HTTPS协议

1、原理(深度理解)

(1)原理

        HTTPS通过SSL/TLS协议对HTTP数据进行加密传输,确保了数据的机密性、完整性和身份验证。

        客户端和服务器通过SSL/TLS协议进行握手,协商加密算法和密钥。客户端和服务器通过协商的密钥对HTTP数据进行加密和解密。

(2)特点

        ①数据以密文形式传输,防止被窃听或篡改。

        ②通过数字证书验证服务器的身份,防止中间人攻击。

        ③默认端口:443。

2、HTTPS的工作流程(重点)

        客户端(如浏览器)向服务器发送一个HTTPS请求,服务器返回自己的数字证书,证书中包含服务器的公钥和证书颁发机构(CA)的签名。客户端验证证书的有效性(证书是否过期、是否被吊销等),客户端和服务器通过SSL/TLS协议协商加密算法和密钥,然后使用协商的密钥对HTTP数据进行加密和解密。客户端解析响应内容,并将解析的内容渲染给用户。

3、HTTPS握手挥手过程

        (1)HTTPS的握手过程

        HTTPS是在HTTP的基础上加了TLS/SSL加密层,因此握手过程比HTTP复杂(先进行TCP三次握手建立TCP连接,然后进行TLS/SSL握手建立加密通信通道)。

        TLS/SSL握手过程如下:

        ①客户端发送ClientHello报文(支持的TLS版本、支持的加密套件、随机数等)。

        ②服务器回复ServerHello报文(选择的TLS版本、选择的加密套件、随机数、服务器的数字证书<包含公钥>等)。

        ③客户端验证证书(验证服务器证书是否有效,如果验证通过,生成一个随机数,并用服务器的公钥加密后发送给服务器)。

        ④服务器解密(使用私钥解密,客户端和服务器通过上述三个随机数<①②③中>生成对称密钥)。

        ⑤完成握手(客户端和服务器交换finished报文验证握手是否成功,之后双方使用对称密钥加密通信)。

        (2)HTTPS的挥手过程

        HTTPS通过TCP四次挥手关闭连接,但TLS/SSL层会在关闭连接前发送一个关闭通知,以确保安全的中止加密通信。

4、对称加密和非对称加密

        对称加密和非对称加密是两种常用的加密技术,用于保护数据的机密性和完整性。

(1)对称加密

        ①含义:对称加密使用相同的密钥进行加密解密(加密和解密过程是对称的,所以叫对称加密)。

        ②工作原理:使用密钥对明文进行加密,生成密文;使用相同的密钥对密文进行解密,恢复明文。

        ③特点:加密和解密使用相同的密钥,密钥需要安全的共享;加密解密速度快,适合处理大量数据;密钥的安全性决定了加密的安全性。

        ④常见算法:AES(最常用的对称加密算法,支持128、192、256位密钥)。

(2)非对称加密

        ①含义:非对称加密使用一对密钥(公钥和私钥),公钥用于加密,私钥用于解密。

        ②工作原理:使用接收方的公钥对明文进行加密,生成密文,然后使用接收方的私钥对密文进行解密,恢复明文。

        ③特点:公钥可以公开,私钥必须保密;加密和解密速度慢,适合处理少量数据;对于数学难题(如大数分解),安全性较高。

        ④常见算法:RSA(最常用的非对称加密算法,基于大数分解问题)。

(3)对称加密和非对称加密区别(重点)

        ①密钥数量方面:对称加密使用相同密钥;非对称加密使用一对密钥(公钥和私钥)。

        ②密钥管理方面:对称加密的密钥需要安全的共享;非对称加密公钥可以公开,私钥必须保密。

        ③加密速度方面:对称加密的加密和解密速度快,适合处理大量数据;非对称加密(如AES)的加密和解密速度慢,适合处理少量数据。

        ④安全性方面:对称加密 密钥的安全性决定加密的安全性;非对称加密 基于数学难题 安全性较高。

        ⑤应用场景方面:对称加密适合数据加密、文件加密、通信加密;非对称加密适合密钥交换、数字签名、身份验证。

(4)混合加密(拓展)

        ①含义:混合加密结合对称加密和非对称加密优点,使用非对称加密安全交换密钥,然后使用对称加密加密数据。

        ②工作原理:使用非对称加密(如RSA)安全交换密钥,然后使用对称加密加密数据。

        ③优点:安全性高,还能处理大量数据。

        ④缺点:对于高并发场景,频繁交换密钥性能降低;技术上复杂性上升。

三、校招面试常问点

1、HTTP和HTTPS的区别

        (1)开销上:HTTPS一般需要到CA申请证书,很少有免费证书,需要交费。

        (2)资源消耗上:HTTP是超文本传输协议,信息是明文传输,容易被窃听者截取或篡改。HTTPS是通过SSL/TLS协议加密过的,内容对窃听者不可见,数据安全性较高,保护数据隐私性,但是需要消耗更多的CPU以及内存资源。

        (3)端口上:HTTP默认端口80,HTTPS默认端口443。

        (4)安全性上:HTTP连接很简单,是无状态的;HTTPS是通过HTTP+TLS协议构建而成的可以进行加密传输、身份认证的网络协议,安全性较高。

2、GET和POST的区别

        (1)GET方法用于获取信息,但是不修改数据,所以携带的数据相对安全;POST方法会修改服务器上的资源请求。

        (2)GET请求的数据会附在URL之后,而POST方法请求的数据会放在HTTP报文的实体中,所以POST方法的安全性相对GET较高。(GET不发送body,POST发送给服务器的数据在body中)

        (3)GET受URL长度限制(通常位2048字节),不适合传输大量数据;POST不受长度限制,适合传输大量数据(如文件上传)。

        (4)GET请求可以被浏览器缓存,适合重复获取相同资源的场景;POST请求不会被缓存,每次请求都会发送到服务器。

        (5)GET多次相同请求不会对服务器状态产生影响(幂等性);POST多次相同请求可能对服务器状态产生影响(非幂等性)。

        (6)GET 适合获取数据的场景(比如加载页面、查询数据库);POST适合提交数据的场景(比如表单提交、文件上传)。

3、对称加密和非对称加密的区别(参照前文)

最后,如有不足和错误的地方,期待私信指正!

点击阅读全文
Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐