
HTTP和HTTPS(完整版)——重点理论+校招常问知识点
HTTP和HTTPS——重点理论+校招常问知识点......
作者:求一个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、对称加密和非对称加密的区别(参照前文)
最后,如有不足和错误的地方,期待私信指正!
更多推荐





所有评论(0)