对称加密VS非对称加密
-
对称锁(对称加密)
原理:加密和解密使用相同的密钥(对称密钥)。
特点:加密速度快,适合处理大量数据。 密钥管理复杂,需安全传输密钥。
(计算量小、执行速度快,适合加密大量数据(如文件传输、数据库加密),效率通常是非对称加密的100--1000倍。安全性完全依赖密钥的保密性。密钥需安全分发,若泄露则数据易被破解,管理难度高。)
常见算法:AES、DES、3DES等。
应用场景:数据传输(如HTTPS中的数据加密)。
-
非对称锁(非对称加密)
原理:使用一对密钥(公钥和私钥),公钥加密、私钥解密。
特点:安全性高,无需共享密钥。 加密速度较慢,适合少量数据。
(涉及复杂数学运算(如大数分解),速度较慢,通常仅用于加密小数据(如对称密钥)或数字签名,安全性更高,公钥可公开传播,私钥由用户保管,解决密钥分发问题。即使公钥泄露,也无法推导私钥。)
常见算法:RSA、ECC等。
应用场景:密钥交换(如SSL/TLS握手)。
HTTPS与HTTP
- HTTP(超文本传输协议):是一种无状态的明文传输协议,客户端与服务器之间的通信内容(如文本、图片)以未加密形式传输,容易被第三方截获或篡改。
1、安全性:数据明文传输,存在窃听、篡改和伪装风险。
2、端口与连接方式:默认使用80端口,连接简单且无状态。
3、无状态特性:服务器不保存客户端状态,需通过Cookie/Session实现会话管理。
4、性能与成本:因无加密开销,传输速度更快。
5、应用场景:非敏感信息传输(如静态网页浏览)
HTTP/1.0与HTTP/1.1区别:1.0默认短连接,1.1支持持久连接、管道化请求。
- HTTPS(安全超文本传输协议):在HTTP协议与TCP层之间加入SSL/TLS协议,通过加密、身份验证和数据完整性保护实现安全通信。其工作流程包括证书验证、密钥协商和加密数据传输。
1、安全性:通过SSL/TLS加密数据流,确保传输内容仅通信双方可读;同时通过数字证书验证服务器身份,防止中间人攻击。
2、端口与连接方式:默认使用443端口,需建立SSL/TLS握手过程,连接更复杂但支持双向认证。
3、性能与成本:因加密解密消耗计算资源,可能增加延迟(约10%-20%),但现代硬件优化已缩小差距;此外需申请SSL/TLS证书,免费证书普及降低了成本
4、应用场景:涉及隐私、支付等敏感场景的强制标准(如网银、电商),浏览器会标记HTTP站点为"不安全"。
5、技术实现细节:
(1)证书机制:HTTPS需向CA机构申请数字证书,证书链验证确保服务器身份可信。
(2)加密过程:采用混合加密(非对称加密协商密钥+对称加密传输数据),平衡安全性与效率。
(3)协议演进:HTTP/2和HTTP/3均优先支持HTTPS,以提升安全性与性能。
GET请求与POST请求
-
GET请求
1、参数:参数通过URL的查询字符串传递,参数直接暴露在地址栏。
2、长度限制:受URL长度限制,不同浏览器对URL的最大字符数有严格约束(如IE约2083字符,Chrome约8182字符),因此不适合传输大量数据。
3、安全性:参数明文暴露在URL中,易被浏览器历史记录、日志或第三方工具捕获,不适合传递敏感信息(如密码)。
4、GET可缓存
5、应用场景:适用于安全要求低、数据量小的查询操作。
-
POST请求
1、参数:参数包含在HTTP请求体中,不会显示在URL中。
2、长度限制:无长度限制,数据通过请求体传输,仅受服务器配置约束,适合处理文件上传等大数据场景。
3、安全性:参数在请求体内传输,虽仍需HTTPS加密保障安全,但默认情况下比GET更安全。
4、POST不可缓存。
5、应用场景:适用于数据量大、需修改服务器资源的场景。
HTTP请求常用状态码(五大类)
-
2xx 成功类
200 OK:请求成功,服务器返回了预期的响应内容。
201 Created:请求成功且创建了新资源(如POST请求)。
204 No Content:请求成功但无返回内容(如DELETE操作)。
-
3xx重定向类
301 Moved Permanently:资源已永久移动,客户端应更新书签。
302 Found:资源临时移动,客户端需重新请求新地址。
307 Temporary Redirect:临时重定向,保留原始请求方法(如POST)。
-
4xx客户端错误类
400 Bad Request:请求格式错误或无效(如参数缺失)。
401 Unauthorized:未授权访问(需身份验证)。
403 Forbidden:服务器拒绝执行请求(如权限不足)。
404 Not Found:请求的资源不存在。
405 Method Not Allowed:请求方法不被允许(如GET请求API端点)。
-
5xx服务器错误类
500 Internal Server Error:服务器内部错误(需检查日志)。
502 Bad Gateway:网关或代理服务器错误。
503 Service Unavailable:服务器暂时无法处理请求(如过载)。
-
1xx信息类
-
其他类
100 Continue:客户端需继续发送请求体。
206 Partial Content:支持范围请求(如视频分段加载)。
304 Not Modified:缓存未过期,直接使用本地副本。
TCP与UDP
-
TCP(传输控制协议)
TCP面向连接、可靠传输(三次握手、四次挥手)但开销大、流量控制(滑动窗口)、拥塞控制(慢启动、拥塞避免)。
1、连接方式:TCP需通过三次握手建立连接,确保通信双方就绪后再传输数据;
2、可靠性保障:TCP通过序列号、确认应答、超时重传、流量控制等机制保证数据有序、无差错到达
3、数据传输形式:TCP将数据视为字节流,接收端按顺序重组
4、协议开销:TCP头部最小20字节,包含序列号、确认号等复杂字段
5、性能:TCP因连接管理、重传等机制延迟较高,适合高可靠性场景
6、适用场景:文件传输(FTP)、网页浏览(HTTP/HTTPS)、电子邮件(SMTP/POP3)等对数据完整性要求严格的场景
-
UDP(用户数据报协议)
UDP无连接、低延迟、高效但不可靠、适用于实时通信(如视频通话)。
1、连接方式:无需预先建立连接,可直接发送数据报。
2、可靠性保障:UDP不提供任何可靠性机制,数据可能丢失、重复或乱序
3、数据传输形式:UDP以独立数据报为单位传输,保留消息边界。
4、协议开销:UDP头部固定8字节,仅含端口和校验,传输效率更高。
5、性能:UDP无连接状态维护,延迟低、吞吐量大,但无法保证数据完整
6、适用场景:实时视频/音频流、在线游戏、DNS查询等容忍少量丢包但追求低延迟的场景
CISC与RISC
-
CISC(复杂指令系统)
(Complex Instruction Set Computer)
增强原有指令的功能,设置更为复杂的新指令实现软件功能的硬化。
1、特点:
(1)指令系统复杂、指令多(一般大于200条)、寻址方式多、指令格式多、指令长度不固定。
(2)指令周期长(多个周期)
(3)各种指令都能访问存储器
(4)采用微程序控制
(5)有专用寄存器,通用寄存器数量较少
(6)难以进行编译优化来 生成高效目标代码,因指令操作复杂而增加机器周期,从而降低了系统性能。
(7)可通过一定方式实现指令流水线
(8)适用于服务器、桌面系统
-
RISC(精简指令系统)
减少指令种类和简化指令功能,提高指令的执行速度。
1、特点:
(1)简化的指令系统、指令少(一般小于100条)、寻址方式少、指令长度一致
(2)指令周期短,除Load/Store指令外,其他指令都只需一个或一个不到的时钟周期就可完成
(3)以 寄存器-寄存器 方式工作,除Load/Store指令可访问存储器外,其他指令都只访问寄存器,速度会更快
(4)采用组合逻辑电路控制,不用或少用微程序控制
(5)采用大量通用寄存器,以减少访存次数
(6)采用优化的编译系统,力求有效地支持高级语言程序
(7)必须实现指令流水线
(8)适用于手机
数据结构
数据结构
数据>数据对象>数据元素>数据项
1、数据:客观事物的符号表示,所有能输入到计算机中并被计算机程序处理的符号的总称。
2、数据元素:数据的基本单位。
3、数据项(一列):数据的不可分割的最小单位,一个数据元素可由若干个数据项组成。
4、数据对象:性质相同的数据元素的集合,是数据的一个子集。
5、抽象数据类型(ADT):
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
按"值"的不同特性,分为基本数据类型(其值不可分解,如int、char等)和结构类型(值可分解,它的成分可以是原子的也可以是结构的)。
抽象数据类型的定义只取决于它的一组逻辑特性,而与计算机内部如何表示和实现无关,只要数据特性不变,都不影响其外部的使用。抽象数据类型可以用三元组表示为(数据对象,数据关系,基本操作)
数据机构常见类型
- 链表:
单链表:每个节点只有一个指向下一个节点的指针。
双链表:每个节点有两个指针,一个指向前一个节点,一个指向下一个节点。
循环链表:单链表或双链表的尾节点指向头节点,形成一个闭环。 - 栈:
- 后进先出(LIFO),入栈(push)和出栈(pop),常见应用场景包括函数调用和表达式求值等。
队列:
先进先出(FIFO),入队(enqueue)和出队(dequeue),常见应用场景包括任务调度、打印任务等。 - 二叉树:
每个节点最多有两个子树的树结构。
遍历方式:
1、前序遍历(Pre-order Traversal):先访问根节点,然后遍历左子树,最后遍历右子树。
2、中序遍历(In-order Traversal):先遍历左子树,然后访问根节点,最后遍历右子树。
3、后序遍历(Post-order Traversal):先遍历左子树,然后遍历右子树,最后访问根节点。
4、层序遍历(Level-order Traversal):按照树的层次,从上到下、从左到右遍历节点 - 哈希表
根据关键码值(Key value)而直接进行访问的数据结构。通过计算一个哈希函数将关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做哈希函数,存放记录的数组叫做哈希表。
哈希冲突是指两个不同的关键码值经过哈希函数计算后得到相同的哈希地址。
解决哈希冲突:开放地址法、再哈希法、链地址法 - 堆(Heap)
堆是一种特殊的树形数据结构,每个父节点的值都大于或等于(大顶堆)或小于或等于(小顶堆)其孩子节点的值。
堆通过数组来实现,利用父节点和子节点的索引关系来存储元素。堆的主要用途是实现优先队列,也可以用于堆排序算法
堆排序的基本步骤:
1、构建堆:将待排序的序列构造成一个大顶堆(或小顶堆)
2、堆顶元素与末尾元素交换:此时,整个序列的最大值(或最小值)就是堆顶的根节点。将其与末尾元素交换,此时末尾就为最大值。然后将剩余n-1个序列重新构造成一个堆
3、重复步骤2:这样会得到一个有序序列,这个过程的时间复杂度为O(nlogn)
是不稳定的排序方法,相对快速排序而言,其优势在于数据交换的次数要少很多。
OSI七层模型
OSI七层模型:应用层(HTTP、FTP)、表示层(数据加密)、会话层(连接管理)、传输层(TCP/UDP)、网络层(IP)、数据链路层(MAC地址)、物理层(传输介质)。
TCP/IP四层模型:应用层(HTTP、DNS)、传输层(TCP/UDP)、网络层(IP)、网络接口层(物理层+数据链路层)。
DNS与ARP
- DNS解析:域名→IP地址,涉及递归查询、缓存机制。
- ARP协议:通过MAC地址解析IP地址,用于局域网通信。
从输入URL到显示页面
DNS解析→TCP三次握手→HTTP请求→服务器响应→渲染页面→TCP四次挥手。