代码随想录每日一题:计算机网络

请求URL的过程

从输入URL到页面展示到底发生了什么?

1、浏览器接收到用户请求,先检查浏览器缓存里是否有缓存该资源,如果有直接返回;如果没有进入下一步网络请求。

2、网络请求前,进行DNS解析,以获取请求域名的IP地址。如果请求协议是HTTPS,那么还需要建立TLS连接。DNS解析时会按本地浏览器缓存->本地host文件->路由器缓存->dns服务器->根dns服务器的顺序查询域名对应IP,直到找到为止。

3、浏览器与服务器IP建立TCP连接。连接建立后,浏览器端会构建请求行、请求头等信息,并把和该域名相关的Cookie等数据附加到请求头中,向服务器构建的请求信息。

4、服务器接收到请求信息,根据请求生成响应数据。

5、浏览器解析响应头。若响应头状态码为301、302,会重定向到新地址;若响应数据类型是字节流类型,一般会将请求提交给下载管理器;若是HTML类型,会进入下一部渲染流程。

6、浏览器解析html文件,创建DOM树,解析CSS进行样式计算,然后将CSS和DOM合并,构建渲染树;最后布局和绘制渲染树,完成页面展示。

三次握手

三次握手的过程,以及为什么是三次,而不是四次,两次?

补充:面试官,不要再问我三次握手和四次挥手

(一)三次握手的过程如下: 1、客户端向服务器发送SYN报文、初始化序列号ISN(seq=x),然后客户端进入SYN_SEND状态,等待服务器确认。 2、服务端发送ACK确认服务端的SYN报文(ack=x+1),同时发出一个SYN报文,带上自己的初始化序列号(seq=y),然后服务端进入SYN_RECV状态。 3、客户端接收到服务端的SYN、ACK报文,ACK确认服务端的SYNC报文(ACK=y+1),然后客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。 (二)为什么不是四次握手? 因为传输效率不够高。 (三)为什么不能两次握手? 两次握手无法让通信双方数据原点的序列号一致,不能保证数据可靠传输。

img

四次挥手

四次挥手的过程,以及为什么是四次?

(一)四次挥手的过程:

1、客户端发送一个FIN报文给服务端,表示自己要断开数据传送,报文中会指定一个序列号 (seg=x)。然后,客户端进入FIN-WAIT-1 状态。

2、服务端收到FIN报文后,回复ACK报文给客户端,且把客户端的序列号值+1,作为ACK报文的序列号(seq=x+1)。然后,服务端进入CLOSE-WAIT状态,客户端进入FIN-WAIT-2状态。

3、服务端也要断开连接时,发送 FIN 报文给客户端,且指定一个序列号(seq=y+1),随后服务端进入LAST-ACK状态。

4、客户端收到FIN报文后,发出ACK报文进行应答,并把服务端的序列号值+1作为ACK报文序列号(seq=y+2)。此时客户端进入TIME-WAIT状态。服务端在收到客户端的ACK 报文后进入CLOSE 状态。如果客户端等待2MSL没有收到回复,才关闭连接。

(二)为什么是四次挥手?

TCP是全双工通信,可以双向传输数据。任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。 当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后才会完全关闭了 TCP 连接。

总结:两次握手可以释放一端到另一端的 TCP 连接,完全释放连接一共需要四次握手。

img

TCP与UDP

TCP与UDP的概念,特点,区别和对应的使用场景

参考:好好回答下 TCP 和 UDP 的区别

TCP与UDP的概念,特点,区别和对应的使用场景?

TCP与UDP的概念 TCP(传输控制协议):TCP是一种面向连接的协议,它在通信前先建立连接,然后传输数据,最后再释放连接。 UDP(用户数据报协议):UDP是一种无连接的协议,它不建立连接,直接发送数据报。

TCP与UDP的特点

TCP(传输控制协议):

可靠性:确保数据在发送和接收之间没有丢失,也保证数据按照正确的顺序到达。

连接导向:TCP是面向连接的协议,在通信前需要先建立连接。(确保数据有序,可靠)

重传机制:如果数据在传输中丢失或损坏,TCP会自动进行数据的重传,确保可靠性。

流量控制:TCP采用流量控制机制,通过动态调整数据发送的速率,避免数据包的丢失和网络拥塞。

UDP(用户数据报协议):

不可靠性:UDP不保证数据传输的可靠,数据在传输过程中可能丢失,重复或乱序,需要应用层自己处理数据的可靠性问题。

无连接:UDP是一种无连接的协议,不需要建立或者断开连接,可以直接发送数据包。

实时性:由于不需要等待连接,可以直接发送数据包,可以适用于一些实时性要求高的应用,如音频和视频传输。

高效性:由于没有建立连接的过程,并没有重传和流量控制的机制,所以UDP传输速度较快,系统资源消耗小。

TCP和UDP的区别

1.是否面向连接 是 否

2.是否可靠 是 否

3.是否有状态 是 否

4.传输效率 较慢 较快

5.传输形式 字节流 数据报文段

6.首部开销 20 ~ 60 bytes 8 bytes

7.是否提供广播或多播服务 否 是

TCP和UDP对应的使用场景

TCP: 用于对传输准确性要求特别高的场景,比如文件传输、发送和接收邮件、远程登录等等。

UDP:适用于即时通信,比如语音、 视频、直播等等,这些对实时性要求高。

HTTP状态码

HTTP常见的状态码和常见的字段

img

img

1.作用不同

GET用于从服务端获取资源

POST一般用来向服务器端提交数据

2.参数传递方式不同

GET请求的参数一般写在URL中,且只接受ASCII字符

POST请求参数一般放在请求体中,对于数据类型也没有限制

3.安全性不同

因为参数传递方式的不同,所以两者安全性不同,GET请求的参数直接暴露在URL中,所以更不安全,不能用来传递敏感信息。

4.参数长度限制不同

GET传送的数据量较小,不能大于2KB。

POST传送的数据量较大,一般被默认为不受限制。 HTTP 协议没有 Body 和 URL 的长度限制,对 URL 限制的大多是浏览器和服务器的原因。

5.编码方式不同

GET 请求只能进行 URL 编码(application/x-www-form-urlencoded)

POST 支持多种编码方式(application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多种编码。)

6.缓存机制不同

GET 请求会被浏览器主动cache,而 POST 不会,除非手动设置。

GET 请求参数会被完整保留在浏览器历史记录里,而 POST 中的参数不会被保留。

GET 产生的 URL 地址可以被 保存为书签,而 POST 不可以。

GET 在浏览器回退时是无害的,而 POST 会再次提交请求。

7.时间消耗不同

GET 产生一个 TCP 数据包;

POST 产生两个 TCP 数据包。

对于 GET 方式的请求,浏览器会把 header 和 data 一并发送出去,服务器响应 200(返回数据);而对于 POST,浏览器先发送 Header,服务器响应 100 continue,浏览器再发送 data,服务器响应 200 ok(返回数据)

8.幂等

意思是多次执行相同的操作,结果都是「相同」的。 GET 方法就是安全且幂等的,因为它是「只读」操作,无论操作多少次,服务器上的数据都是安全的,且每次的结果都是相同的。

POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等的。

强缓存和协商缓存

什么是强缓存和协商缓存

img

img

img

HTTP1.0、HTTP1.1、HTTP2.0

HTTP1.0和HTTP1.1的区别?HTTP2.0于http1.1的区别?

HTTP1.0和HTTP1.1的区别?

长连接

HTTP1.1支持长连接,每一个TCP连接上可以传送多个HTTP请求和响应,默认开启Connection:Keep-Alive,而HTTP1.O默认为短连接,每次请求都需要建立一个TCP连接。

缓存

HTTP1.0主要使用If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag, If-None-Match等更多可供选择的缓存头来控制缓存策略。

管道化

基于HTTP1.1的长连接,使得请求管线化成为可能。管线化使得请求能够“并行”传输,但是响应必须按照请求发出的顺序依次返回,性能在一定程度上得到了改善。

增加Host字段

使得一个服务器能够用来创建多个 Web 站点。

状态码

新增了24个错误状态响应码

带宽优化

HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content)


HTTP1.1和HTTP2.0的区别?

二进制分帧:在应用层(HTTP/2.0)和传输层(TCP or UDP)之间增加一个二进制分帧层,从而突破 HTTP1.1 的性能限制,改进传输性能,实现低延迟和高吞吐量。 多路复用(MultiPlexing),允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息,这个强大的功能则是基于“二进制分帧”的特性。

首部压缩,HTTP1.1 不支持 header 数据的压缩,HTTP/2.0 使用 HPACK 算法对 header 的数据进行压缩,这样数据体积小了,在网络上传输就会更快。高效的压缩算法可以很大的压缩 header ,减少发送包的数量从而降低延迟。

服务端推送(server push),在 HTTP/2 中,服务器可以对客户端的一个请求发送多个响应,即服务器可以额外的向客户端推送资源,而无需客户端明确的请求。

HTTPS原理

HTTPS的工作原理?(https是怎么建立连接的),HTTPS与HTTP的区别

(一)HTTPS是如何建立连接的?

1.首先,客户端向服务器端发送请求报文,请求与服务端建立连接。

2.服务端产生一对公私钥,然后将自己的公钥发送给CA机构,CA机构也有一对公私钥,然后CA机构使用自己的私钥将服务端发送过来的公钥进行加密,产生一个CA数字证书。

3.服务端响应客户端的请求,将CA机构生成的数字证书发送给客户端。

4.客户端将服务端发送过来的数字证书进行解析(因为浏览器产商跟CA机构有合作,所以浏览器中已经保存了大部分CA机构的密钥,用于对服务端发送过来的数字证书进行解密),验证这个数字证书是否合法,如果不合法,会发送一个警告。如果合法,取出服务端生成的公钥。

5.客户端取出公钥并生成一个随机码key(其实就是对称加密中的密钥)

6.客户端将加密后的随机码key发送给服务端,作为接下来的对称加密的密钥

7.服务端接收到随机码key后,使用自己的私钥对它进行解密,然后获得到随机码key。

8.服务端使用随机码key对传输的数据进行加密,在传输加密后的内容给客户端

9.客户端使用自己生成的随机码key解密服务端发送过来的数据,之后,客户端和服务端通过对称加密传输数据,随机码Key作为传输的密钥。

(二)HTTP 与 HTTPS 的区别

HTTP 是明文传输,HTTPS 通过 SSL\TLS 进行了加密。

HTTP 的端口号是 80,HTTPS 是 443。

HTTPS 需要到 CA 申请证书。

HTTP 的连接简单,是无状态的;

HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

HTTPS防篡改

HTTPS是如何保证数据的完整性的(如何保证内容不被篡改)?

为了保证传输的内容不被修改,可以将传输的内容计算出一个【指纹】,对方收到后,也把接收的内容计算出一个【指纹】,然后进行对比,如果【指纹】相同,则说明内容没有被篡改,常常会使用摘要算法(哈希函数)来计算出内容的哈希值,通过摘要算法可以生成数据的唯一标识,从而验证数据的完整性。

但是摘要算法只能保证内容不被修改,不能保证发送者的身份,为了避免这种情况,计算机里会用非对称加密算法来解决,共有两个密钥:公钥用于验证签名,私钥用于生成签名。私钥是由服务端保管,然后服务端会向客户端颁发对应的公钥。如果客户端收到的信息,能被公钥解密,就说明该消息是由服务器发送的。

生成数字签名:

发送者使用私钥对消息的摘要(通常是通过哈希函数计算得到)进行加密,生成数字签名。

数字签名是消息的哈希值经过私钥加密的结果。

发送消息和数字签名:

发送者将原始消息和生成的数字签名一起发送给接收者。

验证数字签名:

接收者收到消息和数字签名后,使用发送者的公钥对数字签名进行解密,得到摘要值。

接收者再次计算收到的消息的摘要(使用相同的哈希函数),将其与解密得到的摘要值进行比较。

如果两个摘要值相同,说明消息未被篡改过,数字签名有效,消息来源可信。

img

数字证书验证流程

密钥生成:

首先,实体(例如服务器、个人或组织)需要生成一对密钥:公钥和私钥。

公钥是用于加密和验证的,可以被公开分享。

私钥用于解密和签名,必须保密,只有持有者知道。

证书请求(CSR - Certificate Signing Request):

实体生成一个证书请求,其中包含公钥、实体信息(如名称、电子邮件等)和签名。

CSR是一个包含有关实体信息的文本块,可以被发送到数字证书颁发机构(CA)以获取数字证书。

证书颁发:

实体将证书请求发送给数字证书颁发机构(CA)。

CA会验证请求者的身份,然后使用自己的私钥对请求中的信息进行签名,生成数字证书。

数字证书包括公钥、实体信息、CA的信息和签名等内容。

证书验证:

当实体收到数字证书时,它可以使用CA的公钥验证证书的签名,确保证书未被篡改且由合法的CA签发。

接收者可以检查证书中的实体信息以及CA的信息,确保证书的合法性。

数字证书使用:

接收者可以使用数字证书中的公钥来加密数据,然后发送给证书的持有者。

持有者使用私钥解密数据,保护数据的机密性。

持有者还可以使用私钥生成数字签名,接收者使用公钥验证签名,验证数据的来源和完整性。

img

DNS

DNS是什么,及其查询过程

DNS 是:一个由分层的 DNS 服务器实现的分布式数据库 , 一个使得主机能够查询分布式数据库的应用层协议,作用是将主机名转换成ip地址。

浏览器访问了某个域名,首先会查找浏览器缓存、本地 hosts 文件、DNS 缓存,没有找到的话再去请求本地 DNS 服务器,由它负责完成域名的解析。

本地 DNS 会依次请求根域名服务器拿到对应的顶级域名服务器的地址,然后请求顶级域名服务器,拿到权威域名服务器的地址,之后权威域名服务器会返回最终的 IP 给本地 DNS 服务器,由它再返给浏览器。

根域名服务器(Root Name Servers) 是DNS(域名系统)层次结构中的最高层,它负责管理互联网上的根域(.),并解析顶级域名(TLD)服务器的IP地址。目前,全球共有13个根域名服务器。

在DNS中,域名是分层次结构的,每个域名都包含一个或多个由点(.)分隔的标签。这些标签从右到左表示了域名的不同级别。最右边的标签是顶级域名(TLD),如 .com.net.org.edu.gov.uk.cn 等。

例如,如果用户尝试访问 www.example.com,并且本地DNS服务器不知道 example.com 的IP地址,那么它可能会首先查询 .com 顶级域名服务器,该服务器会返回负责管理 example.com 域名的权威DNS服务器的地址。然后,本地DNS服务器会向这个权威DNS服务器发送查询请求,以获取 www.example.com 的IP地址。

简单地来说就是:浏览器缓存、本地 hosts 文件、DNS 缓存、根域名服务器—>顶级域名服务器的地址、顶级域名服务器—>权威域名服务器的地址、权威域名服务器—>IP地址。

Keepalive

http多个tcp连接怎么实现的,TCP的Keepalive和HTTP的 Keep-Alive是一个东西吗?

HTTP多个连接是怎么实现的?

HTTP1.1引入了长连接机制,之前一个TCP连接只能发送一个HTTP请求,就会关闭。有了长连接之后,发送了一次HTTP请求之后,TCP连接不会被关闭,会继续发送请求,直到一方要求关闭为止。可以开启多个TCP连接,节省了TCP连接建立3握手和TLS连接4次握手的时间。不过服务器进行的TCP连接数量也是有上限的。

TCP的Keepalive和HTTP的Keep-Alive一样吗?

HTTP 的 Keep-Alive,是由应用层(用户态) 实现的,称为 HTTP 长连接;

TCP 的 Keepalive,是由 TCP 层(内核态) 实现的,称为 TCP 保活机制;

(1)每次请求都要经历这样的过程:建立 TCP -> 请求资源 -> 响应资源 -> 释放连接,这就是HTTP短连接,但是这样每次建立连接都只能请求一次资源,所以HTTP 的 Keep-Alive实现了使用同一个 TCP 连接来发送和接收多个 HTTP 请求/应答,避免了连接建立和释放的开销,就就是 HTTP 长连接。

(2)TCP 的 Keepalive 这东西其实就是 TCP 的保活机制,通俗地说,就是TCP有一个定时任务做倒计时,超时后会触发任务,内容是发送一个探测报文给对端,用来判断对端是否存活。

TCP的可靠性

TCP连接如何确保可靠性

TCP连接确保可靠性的手段:

1.分块:TCP 会将要传输的数据流分为多个块(chunk),然后向每个 chunk 中添加 TCP 标头,这样就形成了一个 TCP 段也就是报文段。

2.序列号

TCP给每个数据包指定序列号,接收方根据序列号对数据包进行排序,且去掉重复序列号的数据进行去重。

3.“校验和”是保存在 TCP 首部中的一个数据,TCP 的发送端和接收端会采用相同的算法,根据发送的数据计算出一个 16 位的校验和,并且校验和会连同数据一起发送给接收端。接收端在得到数据之后,会根据接收的数据生成一个新的校验和,然后用新的校验和与传递过来的校验和做对比,如果校验和相同,那么说明数据在传递过程中没有发生任何改变,是一个有效的数据,反之则为无效数据,舍弃即可。

4.确认应答

TCP 通过肯定的确认应答(ACK) 来实现可靠的数据传输,当主机 A将数据发出之后会等待主机 B 的响应。如果有确认应答(ACK),说明数据已经成功到达对端。反之,则数据很可能会丢失。

5.超时重传

在发送数据报文时,设定一个定时器,每间隔一段时间,没有收到对方的ACK确认应答报文,就会重发该报文。

6.流量控制

TCP 通过使用一个接收窗口的变量来提供流量控制。接受窗口会给发送方一个指示到底还有多少可用的缓存空间。发送端会根据接收端的实际接受能力来控制发送的数据量。

7.拥塞控制

根据所感知到的网络的拥塞程度来限制发出报文段的速率,如果 TCP 发送方感知到没有什么拥塞,则 TCP 发送方会增加发送速率;如果发送方感知沿着路径有阻塞,那么发送方就会降低发送速率。

TCP拥塞控制

TCP拥塞控制是怎么实现的

拥塞控制算法主要有四种:慢启动,拥塞避免,快速重传,快速恢复。

1.慢启动

在连接刚开始时,发送方会逐渐增加发送窗口大小,从而以指数增长的速度增加发送的数据量。

2.拥塞避免

一旦慢启动阶段过去,发送方进入拥塞避免阶段。在这个阶段,发送方逐渐增加发送窗口的大小,但增加速率较慢,避免过快增加导致网络拥塞。

3.超时重传

如果发送方在超时时间内未收到确认,它会认为数据包丢失,并重传这些数据包。这是拥塞控制的最后手段,用于检测和处理网络中的丢包或拥塞情况。当网络出现拥塞,也就是会发生数据包重传

4.快速重传(Fast Retransmit)和快速恢复(Fast Recovery)

当发送方发送的数据包丢失或网络出现拥塞时,接收方会发送重复确认(duplicate ACK)通知发送方有数据包丢失。当发送方收到一定数量的重复确认时,它会立即重传丢失的数据包,而不是等待超时。这样可以减少网络的拥塞程度。

5.拥塞窗口调整

发送方根据网络的拥塞程度动态调整发送窗口的大小,通过监测网络延迟和丢包情况来确定合适的发送速率,以避免网络拥塞。

Cookie和Session

Cookie和Session是什么,有什么区别

Cookie和 Session都用于管理用户的状态和身份, Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。

Cookie

Cookie 是存储在用户浏览器中的小型文本文件,用于在用户和服务器之间传递数据。通常,服务器会将一个或多个 Cookie 发送到用户浏览器,然后浏览器将这些 Cookie 存储在本地。

服务器在接收到来自客户端浏览器的请求之后,就能够通过分析存放于请求头的Cookie得到客户端特有的信息,从而动态生成与该客户端相对应的内容。

Session

客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。Session 主要用于维护用户登录状态、存储用户的临时数据和上下文信息等。

Cookie和Session有什么区别?

存储位置:Cookie 数据存储在用户的浏览器中,而 Session 数据存储在服务器上。

数据容量:Cookie 存储容量较小,一般为几 KB。Session 存储容量较大,通常没有固定限制,取决于服务器的配置和资源。

安全性:由于 Cookie 存储在用户浏览器中,因此可以被用户读取和篡改。相比之下,Session 数据存储在服务器上,更难被用户访问和修改。

传输方式:Cookie 在每次 HTTP 请求中都会被自动发送到服务器,而 Session ID 通常通过 Cookie 或 URL 参数传递。

PING

PING是怎么工作的?

PING命令是计算机网络中常用的命令之一,它的作用是测试两台计算机之间的连通性以及测量数据包往返的时间。

PING命令的工作原理涉及到ICMP(Internet Control Message Protocol)和网络协议栈的操作:

1.发送ICMP Echo请求:当用户在命令行中输入 PING命令并指定目标主机(可以是IP地址或域名)时,操作系统会创建一个ICMP Echo请求消息,这是一个特殊的网络控制消息,用于询问目标主机是否在线。

2.封装数据包:ICMP Echo请求消息被封装在一个IP数据包中,该数据包的源IP地址是发送方主机的IP地址,目标IP地址是PING命令中指定的目标主机的IP地址。然后,数据包会通过操作系统的网络协议栈发送到网络上。

3.路由:数据包在网络中传输时,会经过一系列的路由器和网络设备。每个设备都会检查数据包的目标IP地址,并将其转发到正确的下一个目标。

4.接收ICMP Echo响应:当目标主机接收到ICMP Echo请求消息后,它会生成一个ICMP Echo响应消息作为回应。这个响应消息包含与请求消息相同的数据,以及其他标识信息。

5.数据包返回:ICMPEcho响应消息被封装在一个IP数据包中,源IP地址是目标主机的IP地址,目标IP地址是PING命令中指定的发送方主机的IP地址。然后,数据包会通过网络返回到发送方主机。

6.解析结果:发送方主机收到ICMP Echo响应消息后,PING命令会计算往返时间(Round-Trip

Time,RTT),即从发送请求到接收到响应的时间间隔。此外,PING还会显示其他信息,如目标主机的IP地址、丢包率等。

需要注意的是,有些网络设备或防火墙可能会阻止或限制ICMP消息的传输,因此在某些情况下, PING命令可能无法正常工作。此外,由于网络中的不稳定性,PING命令可能会出现延迟或丢包现象,因此在分析结果时需要综合考虑多次的测试结果。

SYN攻击

什么是SYN攻击?如何避免?

攻击者发送大量伪造的SYN请求到目标服务器,但不完成后续的握手过程,从而让服务器一直等待确认,消耗服务器的资源(如半连接队列和系统资源),当半连接队列满了之后,后续再收到SYN报文就会丢弃,导致无法与客户端之间建立连接。

1.使用防火墙:网络边界部署防火墙,可以识别和过滤掉来自恶意IP地址的SYN攻击流量。

2.启用TCPSYNCookie:利用算法,通过对方的IP、端口、己方IP、端口的固定信息,以及对方无法知道而己方比较固定的一些信息,如MSS(最大报文段大小)、时间等,在收到对方的ACK报文后,重新计算一遍,看其是否与对方回应报文中的(SequenceNumber-1)相同,从而决定是否分配TCB资源。

3.增大半连接队列:修改TCP的内核参数,增大全连接队列大小

4.无效连接监视释放:不停监视系统的半开连接和不活动连接,当达到一定阈值时拆除这些连接,从而释放系统资源。

5.限制并发连接数:配置服务器上的操作系统或应用程序,以限制每个IP地址或来源的并发连接数。

对/非称加密

什么是对称加密和非对称加密?

对称加密

对称加密也称为私钥加密,使用相同的密钥来进行加密和解密。

在加密过程中,明文数据通过应用特定的算法和密钥进行加密,生成密文数据。解密过程则是将密文数据应用同样的算法和密钥进行解密,恢复为明文数据。

由于加密和解密都使用相同的密钥,因此对称加密算法的速度通常较快,但密钥的安全性很重要。如果密钥泄漏,攻击者可以轻易地解密数据。

非对称加密

非对称加密也称为公钥加密,使用一对不同但相关的密钥:公钥和私钥。

公钥用于加密数据,私钥用于解密数据。如果使用公钥加密数据,只有拥有相应私钥的人才能解密数据;如果使用私钥加密数据,可以使用相应公钥解密。

除了加密和解密,非对称加密还用于【数字签名】,可以验证消息的来源和完整性。

0%