1.计算机网络
vlan怎么划分
为什么vpn能访问公司资源,不用不行
1.网络、互联网、因特网
1.网络
网路是由若干个节点,和连接这些节点的链路组成
2.互联网
多个网络通过路由器连起来,构成一个范围更大的网络,也就是互联网
3.因特网
世界上最大的互联网,用户数以亿计,互联的网络数数以百万级
1983年TCP/IP协议成为标准协议,标志着因特网的诞生
1.因特网服务提供者ISP
普通用户通过ISP接入因特网的,ISP想因特网管理机构申请到成块的IP地址。任何人只要向ISP缴纳一定费用就可以从ISP获得IP地址。我国主要的ISP是,中国移动、中国联通、中国电信
2.因特网的组成
物理基础设施、协议层、服务层和用户层
-
物理设施:路由(不同网络之间传输数据包),交换机(局域网内传输数据包),服务器,终端等等。传输介质:光纤、电缆、铜线、WiFi、5G
-
通信协议:TCP/IP协议、http、https、dns
-
服务层,比如万维网www、物联网、某信等等
-
用户:手机、电脑、浏览器等等
1.局域网变慢的原因
首先要确定变慢原因的位置,根据实际情况加以优化
先在本地打开网卡,看下网卡与交换机连接有没有问题。如果过慢、可能是网线问题、可能是网卡配置问题。前者问题,就好解决,后者问题就需要专业的工具解决。
通过专业的工具找到具体哪台交换机出现问题,不只要检查当前交换机,也要检查上游交换机,如果有问题,先尝试重启,如果重启还有问题再考虑其他方法。
如果都没问题,可能是网络结构的问题。看看是否出现网络环路,导致广播风暴,消耗网络资源。再看看是不是ip地址冲突问题,还有可能是vlan划分过大的问题。
总之,具体原因具体分析。
2.网络通信的交换方式
1.电路交换
在通信前建立一条固定的电路,通信双方通过这条链路传输,知道通信结束释放。类似于传统的电话网络,一旦建立连接,资源(带宽)被独占。
-
优点:实时性好
-
缺点:资源利用率低
应用于传统的电话网路
2.报文交换
将数据整体作为一个报文进行传输,到达中间节点时,节点存储并分析目标地址,然后选择下一条路径转发。类似邮政系统,信件在中途可能经过多个中转站。
-
优点:不需要固定的通信路径,资源利用率高
-
缺点:存储和分析报文需要时间,传输延迟大
应用于早期电报通信,就是抗日时期的那种电报
3.分组交换
分组交换将数据分成多个小数据包(分组),每个分组携带目的地址,通过独立的路径在网络中传输,最终在接收端重新组装成完整的数据。
-
优点:资源利用率高,支持大规模网络
-
缺点:数据包可能乱序,因为数据包是分组传输的,到达终端的时间不一样。完整的数据是在终端组成的。
这种交换方式是当今主流的交换方式,应用于当今互联网
3.计算机网络
计算机网络没有一个真正的定义。
计算机网络是指由多个计算机和设备组成的系统,通过一些硬件,也就是路由器、交换机、网线什么和网络协议相互通信。核心目的是为了数据传输和资源共享。计算机网络按规模分,可以分为局域网、城域网、广域网。当今最大的计算机网络是因特网,其范围遍布全球各地。
在我们的日常生活中,计算机网络的影响无处不在,在各个领域都有计算机网络的存在。比如,使用某信和朋友交流,开会可以使用视频会议,可以使用搜索引擎去查找相关资料,使用某音某手刷视频,使用某宝购物等等
事物都具有两面性,计算机网络也是如此。你享受计算机网络带给你的方便的同时,你的隐私很容易也会被别人知道。所以在使用时要注意一个网络安全的问题。
总之,计算机网络的核心就是数据传输和资源共享。他改变了当今人们的生活方式,使人们的生活变得便利,但也要注意网络安全等问题。
1.分类
-
按交换技术分类:电路交换、报文交换、分组交换
-
按使用者分类:公用网、专用网(军队、铁路的专用网)
-
传输介质:有线网络和无线网络
1.按覆盖范围分类:
广域网WAN(wide)
跨越长距离的网络,如跨地区或全球的互联网。
城域网MAN
覆盖城市范围的网络,用于连接多个局域网
局域网LAN(Local)
覆盖小范围的网络,如家庭、办公室或学校。
个域网PAN(Personal)
用于个人设备之间的近距离通信,如蓝牙网络。
2.按拓扑结构分类
总线型网络
成本低但容易出现单点故障,性能较差
星形网络
是现代局域网LAN最常见的拓扑结构,所有节点连接交换机
易于管理,性能好,但成本较高,如果中心设备故障会导致整个网络瘫痪
环形网络
现在基本不用,延迟太高
网状型网络
可靠性、稳定、低延迟,但成本高
军队常用这种结构
2.计算机网络性能指标
1.带宽
信号的频带宽度,单位时间内通过多少比特,是理论上最大值
kb/s:1000比特每秒
1kb=1024比特
2.吞吐量
带宽是理论最大,吞吐量是实际的
3.时延
信号从发送到接收所花费的时间
发送时延:受网卡的发送速率、带宽、接口速率影响
传播时延:几乎没有,接近光速
处理时延:设备对数据包进行分析和转发的时间。可以忽略不计
4.时延带宽积
传输数据时可以容纳的最大数据量
时延乘以带宽
5.往返时间RTT
两个网络双向交互的时间
6.利用率:并非越高越好
信道利用率和网络利用率
网络资源的实际使用比例,与带宽或吞吐量相关。
吞吐量/带宽
7.丢包率
丢失包的数量和总发送数据包的数量的比值
可能是网络拥塞、信号干扰造成
3.计算机网络体系结构
1.法律上的标准OSI7层模型
应用层:连网
最靠近用户的一层,为用户直接提供各种网络服务,比如我们看到的图片,听的音乐,看的视频常见的有HTTP,HTTPS协议 http是基于tcp和udp的
telnet、ftp
表示层:格式转换
把人类看到的图片听到的声音用计算机编码表示,可以实现数据加密
高版本企鹅给低版本企鹅发表情,低版本企鹅解密不了
会话层:建立连接
加两个app之间建立连接,比如美团只能用某信支付,淘宝只能用支付宝支付
企鹅发信息对方应该用企鹅接收,而不是某信
传输层:端到端
解决进程之间基于网络的通信问题
建立端到端的连接,比如我的电脑到你的电脑
建立TCP和UDP连接
TCP:适合传输那种对完整度要求高的文件,丢包就打不开的那种,有可靠性
- 面向连接、面向字节、分段与重组(如果数据量太大就分成小的数据段)、一对一的全双工通信、拥塞控制和流量控制
UDP:可以接受少量丢包,对延迟要求很高,快,无可靠性
网络层:路由
解决分组在多个网络上传输路由问题。
路由器如何转发分组,如何进行路由选择。如何表示网络中的各个主机。
协议
- IP协议:是网络层的核心协议,用于在不同的网络之间传输数据。定义了数据包的格式和处理规则,是整个互联网通信的基础。
- ARP:地址解析协议,将ip地址解析为mac地址,ARP协议本身没有验证机制,容易被攻击
- 发送方先查自己的ARP缓存表是否有接收方IP对应的mac地址,如果有直接发送
- 如果没有就发送广播请求,局域网内所有主机都会接收到请求,但只有B接收方会响应
- 接收方将自己的mac地址单播发给发送方
- 发送方将接收方的mac地址记录在自己的ARP缓存表中
- ICMP:网际控制报文协议,用于检测网络设备之间的差错报告和诊断网络故障方面。比如检测 网络通不通、主机是否可达、路由是否可用等。ping命令的实质是发送一个ICMP的数据包检测网络通不通、主机是否可达、路由是否可用等。
- IGMP:网际组管理协议,管理多播组的成员关系。发送请求时发给一组节点,不像单播发给一个,不像广播发给所有。
数据链路层:封装
通过mac地址寻址,解决分组在同一网络上的可靠传输问题(以192开头的)
具有物理地址寻址、数据封装成帧、流量控制、数据检错和重发denggongn
协议:
- HDLC 是一种面向比特的同步数据链路层协议(是早期的协议,没有安全机制,现在几乎不怎么用了)
- PPP 协议用于在两点之间建立直接连接的数据链路层协,能封装多种网络层协议,具有错误检测机制
物理层:传输
定义了传输介质,解决用什么信号来传输比特的问题(网卡将比特0和1变成电信号)
2.实际上的TCP/IP4层模型
OSI7层成本太高,制定的不合理,没人用
应用层:三层合为一层,因为数据没发生改变,传输层才添加首部
传输层
网络层:ip协议,主要负责寻址和路由数据包
网络接口层:数据链路层和物理层。网卡
3.为什么分层
主要是为了解耦合,提高效率。就像企业中分很多部门,每个部门都有自己的职责一个道理。
主要目的是简化复杂的网络问题,采取模块化的方式,将网路通信的每个功能划分到不同的层次中,每一层专注于自己的功能,同时对相邻层提供明确接口。
4.数据在网络中如何传输
用户,应用层先构建一个http请求报文
应用层将报文交给传输层处理,给原http报文添加一个tcp首部,主要是为了实现可靠传输
网络层层把前面的报文添加一个IP首部,使报文可以被路由器转发
数据链路层把前面的报文再加一个首部和尾部,使其成为帧,主要的作用是让帧在一段网络上传输能被相应的物理机接收
物理层将帧看做成比特流,再变换成相应的信号传输到路由器
一点一点解开,信号变成比特流,比特流变为帧,帧变成ip数据包。路由器根据数据包的ip首部,获得ip地址,查找自身路由表,以便转发。之后再来一遍加配件,变成信号流。
到达服务器,再一次一次解开,服务器获得数据包。再由服务器发给用户,也是前面的步骤
动画演示
5.网络协议
为网络中的数据交换而建立的规则由语法语义同步组成
-
语法:规定传输数据的格式,解决交换信息格式的问题
-
语义:规定要完成的功能,解决做什么的问题
-
同步:规定各种操作的顺序,解决什么时间什么条件下做什么特定的操作的问题
可以是文字可以是代码
6.OSI和TCP/IP模型的异同点
4.计算机网络相关设备
中继器:工作在物理层,可以使两个链路在物理层互联,主要作用是放大信号,但不放大噪音。但缺点是采用存储转发的原理,会增大传输时延。可以延长两个网络中简单信号传输距离
集线器:工作在物理层,主要作用是将多个设备连到局域网,无法识别地址,计算机每次都广播发送,会产生广播风暴。采用CSMA/CD技术共享总线,但影响效率。逐渐被交换机取代
网桥:主要作用是连接多个局域网,工作在数据链路层。逐渐被交换机取代。因为端口较少,扩展性较差,并且转发速度较慢,因为是用软件转发的。
路由器:主要作用是连接不同的网络。工作在网络层,可以连接局域网也可以连接互联网,接收数据包,根据IP地址对数据包进行转发,从而实现跨网络通信,成本较高
交换机:主要作用是连接网络中多个设备。效率高,可以避免数据碰撞。分为二层交换机和三层交换机,二层交换机只可以通过mac地址转发,三层交换机还可以通过ip转发,主要用于局域网。根据端口号发送数据,每个端口都是独立的,支持全双工发送,可以隔离冲突域
网卡NIC网络适配器:是计算机与计算机网络进行通信的接口设备,记录有mac地址,将二进制数据转换为电信号或者光信号等等,工作在物理层和数据链路层
5.问题解答
1.你访问公网时,你没有公网ip地址,你的ip是逻辑地址,是可能重复的,那么ip协议如何区分你的ip和别人的ip。
当你访问公网时,你的服务商isp会使用NAT技术来将你的私有ip转换成一个公网ip
2.那么你访问公网时mac地址起什么作用?
MAC 地址用于你电脑和ISP设备(路由器)之间的通信,公网通信是依赖ip地址。当你用流量时,没有路由器,MAC地址用于你的电脑和基站的连接。
3.为什么100兆的光纤,你下载速度不到100
因为单位不一样宽带用的是Mb,我们用的单位是MB
一个是比特bit,一个是字节Byte
差8倍
3.网卡工作在数据链路层还是物理层
工作在数据链路层,网卡不仅可以连接传输介质,还涉及到帧的发送和接收,网卡在发送数据时要将数据封装成帧(比如添加mac地址),接收时解封并检验完整性。而物理层只起到一个接口作用
6.计算机体系结构
1.物理层
概念:定义数据在网络中的传输方式(光、电磁波、电信号)
为数据链路层提供一个统一的数据传输服务
1.传输媒体(不属于物理层)
导引型传输媒体 | 双绞线,(绞合的作用:抵抗电磁干扰) | |
---|---|---|
同轴电缆(被双绞线取代) | ||
光纤(传输速率快、信号损耗低、从抗电磁干扰、安全性高、重量轻、寿命长) | ||
非导引型传播媒体 | 微波通信(2~40GHz) |
2.数据传输
串行传输:远距离传输
并行传输:近距离传输,cpu与内存之间通过总线进行数据传输
同步传输:高速网络通信(如以太网)实时通信(如电话),高效,适合高带宽和大数据量场景,但实现复杂,对硬件要求高
异步传输:键盘、鼠标等低速设备的通信,简单的远程终端连接。实现简单,无需同步时钟信号。适合低速、间歇性的数据传输。传输效率较低。
3.物理层的规定了什么
规定特性:
-
机械特性(外观比如typec,usb等等)
-
电气特性:规定电缆的电压范围,传输速率等等
-
功能特性:定义接线器的每一引脚的作用
-
过程特性:指明不同功能各种事件可能出现的顺序
4.信道(逻辑的)
单向通信(单工):广播,一条信道
双相交替通信(半双工):对讲机,2条信道
双向同时通信(全双工):电话
1.信道的极限容量
会产生失真,因为任何信道都不是理想的。
信道传输距离远、传输媒体质量差、环境干扰、人为干扰、码元的传输速率
限制码元的传输速率的因素:信道能够通过的频率范围(材质)、信噪比。频带越宽越快
2.信道复用
信道资源是有限的,但实际网路中,很多用户往往需要利用相同的信道资源传输信息。需要解决的问题是,不同的信号在同一信道传输时会产生干扰
信道复用通过分割资源(时间、频率、代码、空间等),让多个用户同时共享一个物理信道,从而提高通信效率和信道利用率
-
频分复用:将整个带宽分为多份,每个用户占用不同的带宽,效率高,易实现(广播和有线电视)
-
时分复用:每个人在同一频带中,固定分配时间间隙,轮流使用(突发性高时,利用率不高)卫星通信
-
统计时分复用,按需动态分配时间间隙,提高利用率
-
波分复用:是光的频分复用,通过不同的光波长(颜色)传输多个信号,光纤通信。
-
码分复用:所有人一股脑的都发过来,只是到对方后再解码,可以通过分辨出是谁发的。卫星定位(如GPS)
-
空分复用:在空间上分割信道,不同用户使用不同的物理路径或天线阵列。微波通信、(如4G/5G)
5.基带信号
信源发出的没有经过调制和编码的原始信号(计算机输出的信号),主要是低频的
6.调制和编码
数字信号是编码,模拟信号是调制
调制:基带调制,只是对基带信号波形进行变换。还是数字信号,这个过程叫做编码。适合短距离,比如局域网
带通调制:调节频率到较高的频段,并转换成模拟信号。这个过程叫做调制。适合长距离,比如无线通信
1.常用的编码方式
不归零制:正电平表示1,负电平表示0
归零制:整脉冲表示1,负面冲表示0
曼彻斯特编码:中心向上跳表示0,向下跳表示1
2.调制的方法
调幅、调频、调相
3.码元
数字通信中的一个基本单位,用于表示信息。比如0就是一个码元,1也是一个码元
2.数据链路层
物理层解决了比特流的传输问题
物理层遇到的问题:如何在比特流中找到一组数据的开始和结束的位置,比特流应该给谁接收,比特流传输错误怎么办
数据链路层解决相邻节点的比特流可靠传输问题
数据链路层:为相邻节点之间提供可靠的点对点或点到多点的数据传输
1.信道类型
点对点,广播(一对多)
2.主要作用
1.封装成帧
在一段比特流前后添加首部和尾部,构成一个帧。为了检测物理层的比特流可能出现的错误。
最大传送单元MTU规定了所传送帧的最大长度。
如何标识帧的开始?比如字节计数法,1-5,5-10,10-15这样
首部:如帧起始标志、地址信息等
尾部:如帧结束标志、校验和等
2.差错检测
帧在传输过程中可能产生误码,但接收方如何判断产生误码?
在帧尾加一个检错码就行了。根据检错码和检错算法判断传输过程中是否出现误码
3.流量控制
防止数据发送过多,导致接收方缓冲区溢出
-
停止等待协议:发送方发一帧数据后,等待对方确认。收到确认后再发送下一帧
-
滑动窗口协议:
-
反馈机制:接收方发送ack包或者nak包通知发送方状态
3.数据链路层如何保证可靠传输
-
循环冗余校验,封装成帧,并且附加一个校验码。校验和,发送方计算数据和并附加到帧尾。
-
纠错机制:发送方在数据中增加冗余信息,接收方根据冗余信息纠正错误。
-
确认重传机制:自动重传机制:停止等待协议,回退N帧协议,选择重传协议。
-
超时重传:发送方设定一个超时时间,若在该时间内未收到确认,假定帧丢失并重新发送。
-
对帧进行编号:避免帧重复接收
-
流量控制:滑动窗口协议,反馈机制
回退N帧:发送方连续发送多帧,若接收方发现某一帧出错,则丢弃其后的所有帧,发送方从出错帧开始重新发送。
选择重传:接收方仅请求重传出错的帧,其余正确的帧保留。
滑动窗口:
-
发送窗口:限制发送方在未收到确认前可以发送的帧数。
-
接收窗口:接收方通知发送方自己能接收的最大帧数。
4.PPP协议
是一种数据链路层的点对点通信协议,就是一种规则帮助两台计算机交流
-
建立连接(LCP):
-
就像两个朋友打电话,先确认对方接通了(比如说“喂,你能听到吗?”)。
-
再商量怎么聊(比如“用中文说话,不用太快”)。
-
-
身份验证(PAP/CHAP):
-
如果对方问“你是谁?”你需要报上名字或提供密码来证明身份(比如“我是小明”)。
-
-
开始聊天(NCP):
-
确定要聊的内容(比如“我们聊天气吧”),然后就可以正式开始说话了。
-
-
聊天规则(帧格式):
-
每次说话都有开头和结尾(比如“听好了,现在我要说——今天天气很好——说完了”),确保对方听得清楚。
-
-
检查和纠正错误:
-
如果听不清楚,对方会说“你刚才说什么?再说一遍”,然后你重新说一遍。
-
-
结束聊天(链路终止):
-
聊完了,双方说“拜拜”,挂断电话。
-
5.CSMA/CD协议
共享信道的通信协议,通过监听信道空闲后发送数据,并在检测到冲突时停止发送、随机延时后重试,以减少冲突和提高传输效率。
早期的以太网协议,已淘汰
6.现代交换机的原理
自学习,无目标则广播
-
交换机的每个端口可以同时进行数据的发送和接收(全双工模式),这样避免了传统集线器中因共享信道导致的冲突问题。
-
交换机记录每个端口的mac地址,记录到mac地址表中。如果接收到数据帧,可以直接根据mac地址,转发到对应设备。
-
缓冲区:交换机的每个端口都有缓冲区,如果数据太多,就放进缓冲区里一点一点转发
-
流量控制:可以避免数据过载
-
优先队列:可以对优先级高的数据帧先处理
7.mac地址
mac地址在网卡中,一种物理地址,全球唯一的,网络上各接口的唯一标识,6个字节。可以通过mac地址查厂商。
单播:向单个设备发送数据
多播:向一组设备发送数据
广播:向局域网内所有设备发送数据
ipv4:4字节
ipv6:16字节
8.ARP协议
将ip地址解析为mac地址,ARP仅在同一局域网内工作,跨网络通信需通过路由器。ARP协议本身没有验证机制,容易被攻击
想象你在学校里,有一个同学的名字(IP地址),但你不知道他坐在哪里(MAC地址)。为了找到他,你站在教室中间大声问: “谁是小明(IP地址)?告诉我你的位置(MAC地址)!”
-
广播请求: 你的喊话会传到全班每个人耳朵里(广播),但只有小明会回应。
-
单播回应: 小明站起来回答你:“我在第三排靠窗的位置(MAC地址)。”
-
记住位置: 你记住了小明的位置,下次想找他时,直接去找就行了,不用再大喊。
9.虚拟局域网VLAN
为什么需要VLAN?你的设备发送广播数据包时,会发给所有局域网中的设备。如果设备太多会占用大量带宽,降低网络性能。
vlan是一种逻辑分割技术,可以在同一物理网络中创建多个虚拟网络。通过在交换机上划分VLAN,不同VLAN之间的数据互不干扰,就像它们在独立的物理网络中一样。
通过 VLAN,可以在一个物理交换机上运行多个逻辑网络,而不需要为每个网络单独购买交换机。这在预算有限或空间受限的情况下尤其有用。
实现原理:通过在交换机上分配 VLAN ID,将网络中的设备逻辑分组,使不同 VLAN 的设备彼此隔离并限制广播域,从而实现网络分割和管理。
一般通过ip划分或者基于端口划分
生活中
-
按部门划分(如财务、IT、销售等)。
-
提升网络安全(如隔离访客网络)。
-
优化广播流量。
10.同一子网数据交换的流程
应用层发送http请求
传输层添加tcp头部
网络层添加ip首部,判断两个ip是否处于子网,两台主机位于同一子网,不需要路由,直接交由链路层处理。
看看arp缓存有没有目标ip的mac地址,如果没有发送一个arp请求 ,对方机器返回其mac地址
封装成帧
转换为电信号发送
不同网络数据交换,网络层就多一步路由。
3.网络层
数据链路层无法实现跨网络资源共享
网络层解决跨网络数据传输和资源共享问题,提供的是简单灵活、无连接、尽最大努力服务
路由选择问题,寻址问题,ip分配问题,数据传输问题
1.主要协议
上面的都是基于IP协议
1.IP协议
是网络层的核心协议,用于在不同的网络之间传输数据。定义了数据包的格式和处理规则,是整个互联网通信的基础。
-
提供逻辑地址:IP协议为每个设备分配一个逻辑地址(IP地址),用来标识网络中的设备。IP地址使得数据可以在复杂的网络中找到目标设备。
-
实现数据分组:数据在网络中传输时被拆分为IP数据包(分组)
-
IP协议通过路由器选择数据包的传输路径。数据包根据目标IP地址,通过多跳路由器最终到达目的地。
-
IP协议是无连接的、不可靠传输协议
2.地址解析协议ARP
将ip地址解析为mac地址,ARP协议本身没有验证机制,容易被攻击
3.网际控制报文协议ICMP Internet Control Message Protocol
用于检测网络设备之间的差错报告和诊断网络故障方面
比如:ping和ping6命令 用于检测网络连接是否正常
ICMP 消息有很多类型,常见的包括:
- Echo Request (类型8) 和 Echo Reply (类型0):用于测试网络连通性。
- Destination Unreachable (类型3):报告目标不可达,说明网络或主机的问题。
- Time Exceeded (类型11):表示TTL到期,通常意味着路由路径问题。
- Source Quench (类型4):过去用于流量控制,要求减缓发送速率(现在已少用)。
TTL(Time to Live)是IP数据包头部中的一个字段,用于限制数据包在网络中传播的最大时间或跳数。TTL的主要作用是防止数据包在网络中无限循环,确保它在到达目的地之前不会在网络中永远存在。
- 每当数据包经过一个路由器时,TTL值会减1。
- 当TTL值减到0时,路由器将丢弃该数据包,并发送一个Time Exceeded类型的ICMP错误消息(类型11)回源地址,通知发送方数据包无法到达目的地。
4.网际组管理协议IGMP Internet Group Message Protocol
管理多播组的成员关系
2.IPV4地址
1.ABC类地址
网络规模:A类适用于大规模网络,B类适用于中型网络,C类适用于小型网络。
特殊用途:D类用于组播通信,E类用于实验。
地址类别 | 地址范围 | 前几位二进制 | 网络部分 | 主机部分 | 默认子网掩码 | 用途 |
---|---|---|---|---|---|---|
A类地址 | 0.0.0.0 ~ 127.255.255.255 | 0 | 8位 | 24位 | 255.0.0.0 | 大型网络 |
B类地址 | 128.0.0.0 ~ 191.255.255.255 | 10 | 16位 | 16位 | 255.255.0.0 | 中型网络 |
C类地址 | 192.0.0.0 ~ 223.255.255.255 | 110 | 24位 | 8位 | 255.255.255.0 | 小型网络 |
D类地址 | 224.0.0.0 ~ 239.255.255.255 | 1110 | 无 | 无 | 无 | 组播通信 |
E类地址 | 240.0.0.0 ~ 255.255.255.255 | 1111 | 无 | 无 | 无 | 实验用途 |
2.子网掩码
子网掩码和IP地址进行按位“与”运算后,求出网络地址,如果两个ip与子网掩码按位与运算相同,则他们属于同一子网
示例:
-
IP地址:192.168.1.10(11000000.10101000.00000001.00001010)
-
子网掩码:255.255.255.0(11111111.11111111.11111111.00000000)
-
网络地址:192.168.1.0(11000000.10101000.00000001.00000000)
主要作用:划分子网,处于同一子网的ip可以直接进行通信
3.网络地址
标识一个网络
网络位不变,主机位全为0
4.广播地址
用于向该网络钟左右主机发送数据
网络位不变,主机位全是1
5.网关
实现跨子网或外网通信。
路由和转发数据包。
过滤,协议转换,减少性能的浪费
一般情况下,路由器就是网关
3.数据转发
应用层生成数据包,传输层添加一个tcp协议头,网络层再加一个IP头部,里面包括源IP和目标IP,首次发送时广播一个ARP请求,获取路由器的mac地址,通过网卡发送到路由器并封装成帧,路由器根据目标IP查找路由表,选择最佳路径下一跳,到达对方路由器,根据ARP协议将数据包传送到对方计算机
4.路由器的工作原理
路由器根据目标IP地址查找路由表,选择最佳路径,将数据包从源设备转发到目标设备,确保不同网络间的数据传输。
路由器就像一个交通指挥员,它帮助数据在不同的网络之间找到最佳路径,确保信息从一个地方顺利到达另一个地方。
还可以充当防火墙
路由器采用的技术
1.路由技术:路由表(目标网络、下一跳位置)、路由算法(RIP 协议基于“跳数”选择路径,适合于小型网络、OSPF 协议基于拓扑图选择路径,最短路径优先原则,适合大型网络、EIGRP结合距离和状态计算路径)
2.分组交换技术:将数据划分为小的“包”(数据包)并独立转发
3.NAT地址转换技术
4.虚拟局域网VLAN路由技术
5.DHCP动态主机配置技术
6.防火墙以及负载均衡技术
5.防火墙
防火墙就像一道屏障,保护计算机或网络免受不安全或不需要的网络流量的攻击。它的作用是监控和控制进出网络的所有数据,依据预设的安全规则,允许或拒绝特定的数据包通过,从而防止恶意攻击、病毒、未经授权的访问等。
-
访问控制:防火墙可以根据源IP地址、目标IP地址、端口号、协议类型等信息,限制哪些数据可以进入或离开网络。
-
防止外部攻击:防止来自外部网络(如互联网)的恶意访问和攻击,保护内部网络不受威胁,设置不同的安全策略。
-
保护数据隐私:阻止未经授权的用户或设备访问敏感信息,确保数据安全。
-
记录日志:防火墙可以记录流量日志,帮助管理员监控网络活动并发现潜在的安全威胁。
简而言之,防火墙就像是一个守卫,它在数据流入和流出网络时,检查每一条信息,并根据规则决定是否允许通过。
6.虚拟专用网VPN
VPN 会通过加密隧道将远程用户的设备“接入”公司局域网,VPN 对所有网络流量进行加密,确保数据在互联网传输过程中不会被窃听或篡改
7.NAT网络地址转换
NAT是一种在网络层执行IP地址转换的技术,允许多个内部设备共享一个公共IP地址访问外部网络。通过NAT,网络管理员可以节省公网IP地址,并提高网络的安全性
8.什么是IP复用和IP分用
-
复用(Multiplexing):在发送端,将多个上层协议或应用的数据封装到一个 IP 数据报中,通过网络传输。
NAT(网络地址转换):通过在路由器或网关设备上将私有 IP 地址转换为公共 IP 地址,使多个设备共享一个公共 IP。
应用层复用:多个应用程序在同一设备上通过同一个 IP 地址提供服务。通过 端口号 区分不同的服务(如 HTTP 通过 80 端口,HTTPS 通过 443 端口)。
多路复用:传输层可以多个请求共享一个TCP连接
-
分用(Demultiplexing):在接收端,解析 IP 数据报,将其分发到正确的协议和应用。
同时接收到同一IP的企鹅和某信
4.传输层
传输层解决端到端的可靠传输问题
1.UDP和TCP的区别
UDP(面向报文)
面向无连接,不用建立连接就发送数据,具有不可靠性
数据传输方式是面向报文的,首部开销小
传输速度较快,支持多播
不保证数据包的顺序
比如直播,视频通话,在线游戏用udp
TCP(面向字节)
是面向连接的,在传输数据之前要建立连接,也就是三次握手,具有可靠性
是面向字节流的,首部开销大
的速度较慢,因为要建立连接,拥塞控制。只支持单播
发送的数据是有顺序的
提供流量控制和拥塞控制动态调节传输速度,以便适应网络状况
比如http,https,ftp,ssh,smtp用tcp
2.TCP
解决的问题:要使通信双方都知道互相存在,协商参数(报文段长度、窗口大小)、安全的传输资源
1.流量控制
让发送方发送速度不要太快,让接收方来得及接收。控制的是发送方和接收方之间的流量,确保接收方能处理接收到的数据,不会出现数据丢失。
通过滑动窗口机制
建立连接时,接收方告诉发送方,我的窗口为400字节。发送方发送400字节,接收方说我接受到了,但窗口变成200字节。发送方再发送200字节,接收方说我有一个地方没收到,你再发一下。发送方再次重传了丢失的数据。
2.拥塞控制
防止网络中发生拥塞,确保网络的高效传输。根据网络的状态动态调整发送方的发送速率。控制的是整个网络中的数据流量,尤其是路由器和交换机的负载,确保不会发生网络拥塞。
- 慢开始:开始时发送速率较低,然后逐渐增加,直到达到网络的拥塞窗口或发生丢包。
- 拥塞避免:当接近网络容量时,减缓发送速度,避免过度拥塞。
- 快重传:当检测到丢包时,快速重传丢失的数据包。
- 快恢复:丢包后恢复发送,但不立即恢复到最大速度,防止再次拥塞。
3.TCP如何保证可靠传输
- 建立连接时需要三次握手,断开连接要四次挥手。确保双方同步
- 将应用层的数据分段,每段包含一个顺序号。接收方通过顺序号来重组数据,确保数据不丢失,不乱序。
- 确认机制,接收方每次接收数据后,会发送一个ack确认报文。表示已接收
- 如果数据丢失,接收方会告诉发送方哪些数据没收到。由发送方重新发送
- 还有流量控制和拥塞控制来控制发送速率
4.TCP的三次握手和四次挥手
1.三次握手
第一次握手
客户端向服务端发送连接请求报文段。该报文段中包含自身的数据通讯初始序号。请求发送后,客户端便进入 SYN-SENT 状态。
第二次握手
服务端收到连接请求报文段后,如果同意连接,则会发送一个应答,该应答中也会包含自身的数据通讯初始序号,发送完成后便进入 SYN-RECEIVED 状态。
第三次握手
当客户端收到连接同意的应答后,还要向服务端发送一个确认报文。客户端发完这个报文段后便进入 ESTABLISHED 状态,服务端收到这个应答后也进入 ESTABLISHED 状态,此时连接建立成功。
这里可能大家会有个疑惑:为什么 TCP 建立连接需要三次握手,而不是两次?
这是因为这是为了防止出现失效的连接请求报文段被服务端接收的情况,从而产生错误。
tcp是全双工通信,客户端向服务端建立连接确认了,但是服务端向客户端没有确认
2.四次挥手
第一次挥手
若客户端 A 认为数据发送完成,则它需要向服务端 B 发送连接释放请求。(A告诉B我要释放连接了)
第二次挥手
B 收到连接释放请求后,会告诉应用层要释放 TCP 链接。然后会发送 ACK 包,并进入 CLOSE_WAIT 状态,此时表明 A 到 B 的连接已经释放,不再接收 A 发的数据了。但是因为 TCP 连接是双向的,所以 B 仍旧可以发送数据给 A。(B回答好的,然后A->B连接就释放)
第三次挥手
B 如果此时还有没发完的数据会继续发送,完毕后会向 A 发送连接释放请求,然后 B 便进入 LAST-ACK 状态。
第四次挥手
A 收到释放请求后,向 B 发送确认应答,此时 A 进入 TIME-WAIT 状态。该状态会持续 2MSL(最大段生存期,指报文段在网络中生存的时间,超时会被抛弃) 时间,若该时间段内没有 B 的重发请求的话,就进入 CLOSED 状态。当 B 收到确认应答后,也便进入 CLOSED 状态。
拓展:2和3可以合在一起吗
不可以,也许服务端还要发数据
5.应用层
它解决的是与应用程序间通信、数据交换和信息传递相关的问题。
1.端口号
- http 80
- https 443
- ftp 21/20
- DNS 53 将域名解析为IP 解析的过程总的来说,是先在本地缓存里寻找域名对应的IP地址,没有找到就去域服务器递归寻找,找到后返回给浏览器并存到本地缓存。
- sftp 22 基于ssh的安全文件传输协议
- ssh 22 远程登录
- SMTP 邮件 默认端口25,加密端口465
- DHCP 动态主机配置协议 自动分配IP地址
- Telnet 23 测试端口通不通
2.CS架构和BS架构
cs架构和bs架构是当今互联网常见的网络架构模型
bs架构是客户端是浏览器的架构,开发简单,维护容易,升级和部署集中管理,跨平台性较强,但性能低。一般就是管理系统用这个,咱们中国人才网用的就是这种架构
cs架构客户端通常是应用程序或者app,开发较难不同平台需要不同的版本,维护较难,升级部署需要客户支持,较为麻烦。但性能高,一般游戏类的软件就是这个架构
3.动态主机DHCP协议
用于为网络中的设备自动分配IP地址以及其他网络配置(如子网掩码、网关地址、DNS服务器地址等)
- 家庭网络: 路由器通常充当DHCP服务器,为家中的设备分配IP地址。
- 企业网络: DHCP服务器用于为员工设备动态分配IP,减少网络管理员的负担。
- 公共网络: 酒店、机场、咖啡厅等公共Wi-Fi场所,为临时连接的设备分配IP地址。
4.HTTP1.0、HTTP1.1、HTTP2.0、HTTP3.0
HTTP1.0默认使用 Connection:cloose
,浏览器每次请求都需要与服务器建立一个 TCP 连接,服务器处理完成后立即断开 TCP 连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。
HTTP1.1默认使用 Connection:keep-alive
(长连接),避免了连接建立和释放的开销;通过 Content-Length 字段来判断当前请求的数据是否已经全部接受。不允许同时存在两个并行的响应。
HTTP2.0新特性
(1)二进制传输
http2.0将请求和响应数据分割为更小的帧,并且它们采用二进制编码(http1.0基于文本格式)。多个帧之间可以乱序发送,根据帧首部的流表示可以重新组装。
(2)Header压缩
Http2.0开发了专门的“HPACK”算法,大大压缩了Header信息。
(3)多路复用
http2.0中引入了多路复用技术,很好的解决了浏览器限制同一个域名下的请求数量的问题。
多路复用技术可以只通过一个TCP链接就可以传输所有的请求数据。
(4)服务端推送
HTTP2.0在一定程度上改不了传统的“请求-应答”工作模式,服务器不再完全被动地响应请求,也可以新建“流”主动向客户端发送消息。(例如,浏览器在刚请求html的时候就提前把可能会用到的JS,CSS文件发送给客户端,减少等待延迟,这被称为“服务端推送Server Push”)
Http3.0 抛弃tcp
Google在推行SPDY的时候意识到了上述http2.0一系列问题,于是又产生了基于UDP协议的“QUIC”协议,让HTTP跑在QUIC上而不是TCP上。从而产生了HTTP3.0版本,它解决了“队头阻塞”的问题。
- 特点:
(1)实现了类似TCP的流量控制,传输可靠性的功能。
(2)实现了快速握手功能(QUIC基于UDP,UDP是面向无连接的,不需要握手和挥手,比TCP快)
(3)集成了TLS加密功能
(4)多路复用,彻底解决TCP中队头阻塞的问题(单个“流”是有序的,可能会因为丢包而阻塞,但是其他流不会受到影响)
5.https
https是在应用层和传输层之间加了一个安全层,应用层与安全层进行加密,安全层再与传输层进行交互
1.客户端把它支持的加密算法传给服务端
2.服务端给客户端一个公钥和他的数字证书
3.客户端验证证书,发现这个公钥是我自己的,之后生成随机的对称秘钥,用公钥加密
4.用私钥解密获得秘钥
5.传输数据
签名:由私钥生成
传输的时候传数据和它独有的签名,别人收到用签名和数据对比,如果一样则安全,不一样就丢弃
证书:保护公钥不被篡改
6.加密算法
对称性加密算法:
对称性加密算法使用同样的密钥,用于加密和解密数据。存在问题密钥在传输过程中可能泄漏,不安全。尤其是在大规模的分布式系统中,秘钥管理更为复杂。但优点是加密速度快,主要用于文件加密。
- SM4:国密算法,之前我们用做加密日志
- AES
非对称加密算法:
非对称加密算法使用不同的密钥,其中一个用于加密数据,另一个用于解密数据。加密密钥被公开,而解密密钥则需要存储在安全的地方。加密数据比较安全,很难被破解。但速度太慢,涉及到数学的幂运算和取模的问题。所以一般是在登录时、或者一些验证功能使用。常见的非对称加密算法:
- RSA算法:是一种非对称加密算法,广泛用于数字签名和安全信任建立等领域。它能够支持多种密钥长度,通常用于加密短消息。
- SM2:也是国密算法,之前用做密码加密
散列算法:
-
MD5 (Message Digest Algorithm 5):MD5 是一个广泛使用的散列算法之一。它接收字符串作为输入,并生成具有固定大小的唯一的散列值。通常,它会生成一个 128 位长的十六进制数字,用于验证数据的完整性。
-
SHA (Secure Hash Algorithm):SHA 是另一个常用的散列算法。它有几种不同的变体,但最广泛使用的变体是 SHA-256 和 SHA-512。SHA-256 生成一个 256 位长的散列值,而 SHA-512 生成一个 512 位长的值。
-
MurmurHash:MurmurHash 是一个比 MD5 和 SHA 更快的散列算法。它在散列大量数据时非常高效,并且生成的散列值具有良好的随机性和均匀分布性。它被广泛用于哈希表等需要高效哈希函数的场景。
https为什么安全
HTTPS的安全性建立在Transport Layer Security(TLS)协议(前身是Secure Sockets Layer(SSL)协议)上。80和443
https是在应用层和传输层之间加了一个安全层,应用层与安全层进行加密,安全层再与传输层进行交互
HTTPS之所以安全,是因为使用了一些加密技术和安全机制,包括:
-
数据传输加密:HTTPS使用公钥加密和私钥解密的方式对数据进行传输加密,防止数据传输过程中被窃取或篡改。
-
客户端验证:HTTPS实现了双向认证,即客户端和服务器双方都需要进行验证,确保通信双方的身份和合法性。
-
数据完整性保护:HTTPS使用数据摘要技术和数字签名机制来保护数据的完整性。在数据传输结束后,接收方可以通过验证数据摘要和数字签名来确定数据是否被篡改。
-
防止中间人攻击:HTTPS使用非对称加密算法来保证数据传输的安全性,避免中间人攻击。这是因为HTTPS使用公钥加密和私钥解密的方式,数据只能由私钥持有者读取,即使在传输过程中被截获,攻击者也无法解密。
综上所述,HTTPS之所以安全,是因为它使用了多种加密技术和安全机制,确保了数据在传输过程中的保密性、完整性和合法性。这些技术和机制为网站和用户之间的数据传输提供了强有力的安全保障。
7.DDOS攻击
分布式拒绝服务攻击,就是大量分布式设备想你发出海量请求,导致你的服务器带宽被占满,耗费系统资源,无法处理合法用户的请求
一般上高防服务器,过滤流量,但成本较高
可以上CDN,静态资源放到CDN上,设置黑白名单,项目使用分布式部署采用负载均衡策略分散给多个服务器
8.黑客攻击的方式
DDOS攻击
网络钓鱼攻击:捆绑软件,邮件,不明链接。实际上都是运用系统的bug进行攻击
XSS攻击:向页面中插入恶意脚本,获取用户信息
SQL注入:插入而已SQL语句,拼接sql后可能导致数据库崩溃
密码攻击:暴力破解密码,彩虹表攻击,典型是MD5密码
9.ftp
20数据端口,21命令端口
是一种文件传输协议,通过计算机网络在客户端和服务器之间传输文件
FTP 工作在 客户端-服务器模式,用户可以通过客户端登录ftp服务器,使用tcp连接进行文件的上传、下载、删除等等操作。
FTP
有两种工作模式:主动模式port和被动模式pasv
- 主动模式:客户端发起tcp连接用于传输命令,一般是21端口。之后服务端再发起新的tcp连接用于文件传输,一般是20端口。数据通道由服务器主动发起,在没有数据传输时通道关闭。
- 一般情况下都用主动模式,用固定端口传输数据
- 被动模式:客户端发起tcp连接用于传输命令,一般是21端口。之后通过命令告诉ftp服务器要开启哪个端口进行数据传输。ftp服务器需要被动等待客户端建立数据通道,所以是被动模式
- 缺点:很多防火墙设置时不允许接受外部发起连接,油坊桥的ftp服务器就不支持被动模式
10.telnet
远程登录服务,建立tcp连接,如今在很多场景下逐渐被 SSH 等更安全的协议替代。
可以根据端口和ip连服务器,可以测试远程主机端口是否开放。
11.DNS
是一种域名解析服务,可以将域名解析为IP地址。
DNS 53 将域名解析为IP 解析的过程总的来说,是先在本地缓存里寻找域名对应的IP地址,没有找到就去域服务器递归寻找,找到后返回给浏览器并存到本地缓存。
12.URL
协议、域名、路径、文件名
13.http
HTTP是超文本传输协议、应用层的协议,是一种用于在客户端和服务器之间传输超文本数据(如HTML文档、图像、视频等)的协议。它是Web上数据交换的基础,定义了浏览器如何与服务器进行通信、请求数据以及响应数据。
14.sftp和ftps的异同点
- SFTP 是基于 SSH (Secure Shell) 的协议。它不是传统的FTP协议的扩展,而是完全不同的协议,通过SSH进行加密传输。SFTP通过SSH的标准端口 22 进行通信。这使得它的网络配置较为简单,因为很多防火墙和路由器默认都允许SSH流量。
- FTPS 是在传统 FTP 协议的基础上,通过 SSL/TLS 来增加安全性。它允许FTP协议的命令和数据传输被加密。FTPS通常使用 21 端口(FTP的标准端口),但是在加密连接时,数据通道可能使用其他端口(在数据连接时的动态端口范围)。这种动态端口分配可能会给防火墙配置带来复杂性。
15.签名
防止数据传输过程被篡改,使用算法生成签名并随着数据一起发送,发送方用私钥加密,保证签名的唯一性,验证时用公钥解密。
首先发送时将数据进行哈希处理,比如用md5,生成一个固定长度的哈希值。将这个哈希值用私钥加密生成签名,将消息和签名一起发送给接收方。
接收方通过公钥对数字签名进行解密,计算消息的哈希值进行验签。如果哈希值相同则数据没有被篡改,如果不同则数据被篡改,数据就丢弃。
16.数字签名的特征
1.唯一性:每个签名都是唯一的,每个消息对应的签名都不同
2.不可伪造性:签名都是由私钥生成,攻击者没有私钥无法伪造。
3.不可篡改:如果消息被篡改,就会导致签名验证失败
4.可验证性:任何人都可以通过公钥进行验证,签名的验证公开透明
5. 不可抵赖的:签名者不可以否认自己的签名
2.计算机组成原理
电脑开机提示音
提示声音 是计算机开机时 BIOS/UEFI 固件执行硬件自检时发出的蜂鸣声。不同电脑提示音不同
提示音 | 含义 |
---|---|
1短 | 系统启动正常。 |
1长 2短 | 显卡错误(显卡或其连接的问题)。 |
1长 3短 | 键盘控制器问题(键盘或主板故障)。 |
连续蜂鸣 | 内存或电源问题。 |
主板:是计算机非常重要的部件,上面安装了BIOS芯片、IO控制芯片、鼠标键盘显示器各种接口、扩展插槽(cpu插槽、内存插槽)、电源等等
BIOS
- 开机后负责硬件初始化,检测和识别 CPU、内存等硬件设备,分配系统资源。执行加电自检(POST),全面检查硬件系统,通过蜂鸣或错误代码提示硬件故障
- 按照预设启动顺序寻找操作系统引导程序,实现系统启动引导。
- 为基本输入 / 输出操作提供底层支持,如处理键盘输入和屏幕最基本显示。
1.计算机系统概述
1.计算机系统
计算机系统=硬件+软件
2.计算机系统的发展趋势
巨型化:计算速度更快、存储容量更大、功能更强
微型化:体积越来越小
网络化:随着计算机的普及,计算机网络也逐渐深入我们工作和生活中
智能化:智能计算机将代替大部分的人类劳动
3.计算机发展历程
- 第一代,电子管计算机,无操作系统
- 第二代,晶体管计算机,汇编语言
- 第三代,集成电路,半导体存储器
- 第四代,超大规模集成电路
4.冯诺依曼体系结构和哈佛结构
1.冯诺依曼结构又被称为普林斯顿结构
以运算器为中心
目前大部分计算机的实现方式
确定了现代计算机的五大部分:输入设备、输出设备、存储器、运算器、控制器
-
单一存储器:程序和数据都放在内存中,彼此不分离(冯诺依曼机的基本思想)
-
统一总线:指令和数据通过同一条总线传输,称为 "冯诺依曼瓶颈"。
-
顺序执行:程序指令按照存储的顺序逐条执行(可结合跳转指令实现非线性执行)。
冯诺依曼瓶颈:指令和数据共享总线,传输速率受限。
指令:操作码和地址码组成,操作码表示执行什么操作,地址码表示操作数在存储器中什么位置
2.哈佛结构
程序和数据放在不同内存中是哈佛结构
-
分离存储器:指令和数据分别存储在独立的存储器中,互不干扰。
-
独立总线:指令和数据各自通过独立的总线进行传输。
-
并行访问:指令和数据可以同时访问,提高处理效率。
比如大部分单片机
3.二者对比
冯诺依曼结构在设计和实现上更为简单,成本更低,更为灵活;哈佛结构更复杂,但可在性能上占优,支持较高的并行性,效率更高,可靠性高
冯诺依曼结构更适合通用计算设备,比如台式机、笔记本;哈佛结构更适合对性能和实时性要求较高的嵌入式和专用系统,比如航空航天领域,电子信号领域等等。
4.冯诺依曼思想
1.计算机由运算器、控制器、输入设备、输出设备、存储器组成
- 输入设备:人的信息转化为计算机能识别的信息。鼠标、键盘
- 输出设备:计算机的信息转化为人熟悉的信息。显示器、打印机
- 存储器
- 主存储器:存放程序与数据,直接与cpu交换信息。又叫,内存、主存
- 辅助存储器:又称外存,帮助主存储器存更多信息。用的时候再调入主存
- 运算器:核心为算术逻辑单元(ALU),主要做算术运算和逻辑运算
- 控制器:核心为控制单元(CU)大脑控制指令的执行,读取存储器,将机器语言的指令翻译为具体的控制信号
2.计算机采用二进制传输数据(实现简单、逻辑简单、符合人的思维)
3.程序和数据都存在存储器中,计算机就能自动执行指令
5.现代计算机的结构
现代计算机已存储器为中心可以让io设备直接与存储器交换数据,提高效率
- 输入设备:人的信息转化为计算机能识别的信息。鼠标、键盘
- 输出设备:计算机的信息转化为人熟悉的信息。显示器、打印机
- 存储器
- 主存储器:存放程序与数据,直接与cpu交换信息。又叫,内存、主存
- 辅助存储器:又称外存,帮助主存储器存更多信息。用的时候再调入主存
- 运算器:核心为算术逻辑单元(ALU),主要做算术运算和逻辑运算
- 控制器:核心为控制单元(CU)大脑控制指令的执行,读取存储器,将机器语言的指令翻译为具体的控制信号
6.计算机软件
应用软件:为解决某个领域问题而编制的软件
系统软件:为了让用户高效的使用和管理计算机而开发的软件
编译和解释
编译和解释是两种将高级编程语言翻译为机器可以执行的语言(如机器码或字节码)的基本方法。它们在执行方式、效率和应用场景上有显著差异。
特性 | 编译 | 解释 |
---|---|---|
翻译方式 | 一次性翻译整个程序,生成可执行文件。 | 逐行翻译和执行源代码。 |
执行效率 | 高,目标代码直接运行,无需二次翻译。 | 低,每次运行都需要解释源代码。 |
错误检测 | 在编译阶段检测,适合发现语法和语义错误。 | 运行时检测,错误可能延迟暴露。 |
平台依赖性 | 可执行文件与特定平台绑定,移植性差。 | 源代码可在有解释器的任意平台上运行,跨平台性好。 |
开发效率 | 修改代码后需重新编译,调试效率较低。 | 修改代码后无需重新翻译,适合快速开发和调试。 |
典型语言 | C、C++、Go。 | Python、JavaScript、PHP。 |
7.计算机系统的分层思想
8.计算机性能怎么看
- cpu:
- 核心数越多越好,核心数越多说明能并行处理的任务越多
- 线程越多越好,提高线程的并行能力,可以提高核心的利用率
- 主频(时钟频率)表示CPU 每秒可以完成的时钟周期数量越高越好,说明单位时间内计算的越快。时钟周期是处理器完成某些基本操作(如读取数据、执行计算、写入数据)所需的最小时间单元。
- IPC每个时钟周期内处理器可以执行的指令数,越多越好,目前>1
- CPI执行一条指令所需要的时钟数量
- MIPS每秒执行多少百万条指令
- FLOPS每秒浮点运算次数越大越好
- 基础频率:CPU正常工作频率
- 最大睿频:CPU短时间可以达到的最大频率
- TDP功耗
- 机器字长是指CPU一次能够处理的二进制数据的位数,越长越好
- cpu缓存
- 主存(内存)
- 主存容量
- 频率,频率越高,内存在单位时间内可以传输更多数据。
- 内存时延,从 CPU 发出请求到内存数据返回所需的时钟周期数
- 通道数,通道数越多,内存带宽越高,性能越好。,双通道比单通道的带宽理论上翻倍。
- 带宽
- 吞吐量
- cpu的处理速度
- 内存的访问速度
- 外存的访问速度
- 响应时间
- CPU执行时间
- 系统访问内存和外存的时间
9.定点数和浮点数
定点数:表示整数
补码用于加减
编码方式 | 特点 | 主要作用 | 是否直接用于运算 |
---|---|---|---|
原码 | 符号位+数值直接表示 | 显示数值符号与大小 | 否 |
补码 | 负数通过取反加 1 表示 | 简化加减法运算,正数的补码与原码相同。负数的补码:其原码符号位不变,数值部分按位取反后加 1。 | 是 |
反码 | 负数通过取反表示 | 补码的中间形式,理论概念,表示负数 | 否 |
移码 | 所有数值均为正数,偏移表示 | 浮点数阶码,避免负数处理 | 否 |
浮点数
0 | 10000010 | 10100000000000000000000 |
单精度32位浮点数,双精度64位浮点数,可能在运算中累计舍入误差。
2.CPU
超大规模集成电路,主要由运算器、控制器、寄存器组成。
作用
- 执行指令: 从内存中读取程序指令,按照指令完成任务。
- 计算处理: 通过算术逻辑单元(ALU)完成数学运算和逻辑操作。
- 控制协调: 控制计算机各部分的运行,如内存、输入设备、输出设备等。
- 数据存取: 处理数据的存储和读取,包括寄存器和内存的交互。
1.运算器
- 定点运算器:以算术逻辑单元ALU为核心,可以做算数和逻辑运算
- 浮点运算器:以浮点运算单元FPU为核心,可以做算数运算(不重要)
2.控制器
3.存储器
1.存储器的分类
- 存储介质
- 磁存储器(磁带、机械硬盘)
- 光存储器(光盘)
- 半导体存储器(内存、固态硬盘)
- 存储方式
- 顺序存储器:存储单元只能按顺序访问(磁带)
- 随机存储器:根据存储单元地址进行存取(固态硬盘、内存)
- 直接存储器:机械硬盘
- 可改写性
- 读写存储器
- 制度存储器
- 可保存性存储器
- 易失性存储器:断电丢失(内存)
- 非易失性存储器:(固态硬盘)
- 功能和存取速度
- 寄存器存储器:CPU寄存器
- 高速缓存存储器:cache
- 主存储器:内存
- 辅助存储器:外存
2.存储速度
1.大端和小端
大端:高位先存,,符合人类阅读习惯。高位字节存储在低地址,低位字节存储在高地址。常用于网络协议(如TCP/IP)。网络字节序采用大端格式,便于跨平台通信。
小端:低位先存,直观性较差。低位字节存储在低地址,高位字节存储在高地址。常用于现代大多数处理器(如x86、x86-64架构)。
- 大端适合人类阅读和网络通信。
- 小端更高效地支持现代计算机处理器的存储和运算。
- 大端和小端各有应用场景,开发过程中需要注意跨平台和数据传输的兼容性问题。
3.寄存器与高速缓存
-
寄存器是计算的核心:
- 所有的算术和逻辑运算都在寄存器中完成,寄存器的效率直接影响 CPU 的计算性能。
-
高速缓存减少数据等待时间:
- Cache 提供频繁访问数据的快速存取,避免 CPU 长时间等待主存响应。
-
数据流示意:
- CPU 首先从寄存器中读取数据。如果寄存器中没有所需数据,查询高速缓存(L1 → L2 → L3)。若缓存也没有,则访问主存。
4.MDR与MAR
MDR 是用于暂存数据的寄存器。它的作用是暂时存储从主存读取的数据或准备写入主存的数据。
MAR 是用于暂存地址的寄存器。它的作用是保存主存中要访问的单元地址。
MDR 和 MAR 的工作流程可以分为两种情况:读操作 和 写操作。
1. 读操作(从主存读取数据到 CPU):
- CPU 将目标内存地址加载到 MAR 中。
- 内存控制器根据 MAR 的地址从主存中读取数据。
- 读取到的数据被暂存到 MDR 中。
- MDR 中的数据被传输到 CPU 的寄存器或其他执行单元。
2. 写操作(将数据从 CPU 写入主存):
- CPU 将目标内存地址加载到 MAR 中。
- CPU 将要写入的数据加载到 MDR 中。
- 内存控制器根据 MAR 的地址将 MDR 中的数据写入主存。
作用
CPU 与内存高效通信的关键
- 没有 MAR,无法快速定位要访问的主存单元。
- 没有 MDR,无法缓存主存数据,程序对内存的访问效率会极低。
5.机器字长与存储字长
机器字长:CPU一次能够处理的二进制数据的位数
存储字长:主存中一个存储单元存储的二进制位数
每个存储单元通常是 1 字节(8 位)。在某些架构中,多个字节可以组合成一个字(如 16 位或 32 位)。
6.SRAM和DRAM
RAM:随机存储器,可以读可以写,用户的数据。断电遗失
ROM:只读存储器,厂家的数据。断电不丢失
特性 | SRAM(静态随机存取存储器) | DRAM(动态随机存取存储器) |
---|---|---|
速度 | 更快,通常用于缓存(CPU缓存)。 | 较慢,但足够用于主存。 |
容量 | 单元占用面积大,存储密度较低。 | 单元占用面积小,存储密度较高。 |
功耗 | 静态功耗低,动态功耗高。 | 需要定期刷新,总功耗高于SRAM。 |
成本 | 制造复杂,成本高。 | 制造简单,成本低。 |
应用场景 | CPU缓存、嵌入式系统中的高速缓存等。 | 计算机主存、图形卡显存等。 |
存储保持性 | 在供电情况下,数据可持续保持。 | 数据需要定期刷新才能保持。 |
7.主存优化
1.双端口存储器
双端口存储器是一种允许同时进行两个独立访问的存储器。
- 一个端口用于读取,另一个端口用于写入。
- 或者两个端口都可同时读取或写入(依赖于具体设计)
提高了存储器的并行访问能力,但硬件实现复杂,成本高。
应用:图形显存(GPU 内存)、网络交换机中的高速缓冲存储器。
2.单体多字存储器
单体多字存储器的设计中,每个存储体能存储多个字(word),并允许一次访问多个字。
减少存储访问的时间,提高数据吞吐量,但并行性较低,多个处理器访问时可能出现竞争。
应用:大块数据传输场景,如内存与缓存之间的数据交互。
3.多体交叉存储器
- 多体交叉存储器通过将存储器划分为多个存储体(bank),不同的存储体可以独立工作。
- 通过交叉分配地址,确保不同的存储体可以同时处理多个请求。
提高了存储器的并行性,避免单体繁忙时的瓶颈,如果多个请求集中访问同一存储体,可能会导致冲突。
- 双端口存储器 适合需要同时进行多个读写操作的场景,如 GPU 的显存。
- 单体多字存储器 适合数据传输量大但并行需求较低的场景,如缓存与主存之间的大块数据交换。
- 多体交叉存储器 是一种高并行设计,适合多核处理器或高性能计算环境中频繁的并发访问需求。
8.Cache
内存传输的速度跟不上cpu处理的速度,缓存就诞生了,CPU将重复读取的数据放入缓存,可以提高cpu的命中率
1.作用
-
加速数据访问
Cache 的速度比主存快得多,利用缓存存储经常访问的数据,可以减少等待时间。 -
降低内存带宽压力
通过缓存可以减少主存访问次数,从而降低主存的负载,提高系统整体效率。
2.工作流程
Cache 基本工作流程如下:
- 命中(Cache Hit):当处理器需要访问某数据时,若该数据在 Cache 中,则直接读取缓存数据,速度较快。
- 未命中(Cache Miss):若数据不在 Cache 中,系统会从主存加载数据到缓存,然后再提供给处理器。
- 替换(Replacement Policy):当 Cache 已满时,使用某种替换算法(如 LRU、FIFO)将旧数据替换为新数据。
3.分类
-
L1 Cache(一级缓存)
- 位于 CPU 内部,靠近处理器核心。
- 速度最快,容量最小(通常 32KB - 128KB)。
- 通常分为指令缓存(I-Cache)和数据缓存(D-Cache)。
-
L2 Cache(二级缓存)
- 位于 CPU 核心外部,但仍在 CPU 内部。
- 速度比 L1 缓存稍慢,容量较大(通常 256KB - 数 MB)。
-
L3 Cache(三级缓存)
- 通常为共享缓存,供多核处理器共享使用。
- 速度较慢,但容量更大(数 MB - 数十 MB)。
3.替换策略
-
LRU(Least Recently Used)
- 替换最久未使用的数据。
-
FIFO(First In First Out)
- 替换最早进入缓存的数据。
-
随机替换(Random Replacement)
- 随机选择一个数据块替换。
-
LFU(Least Frequently Used)
- 替换访问频率最低的数据。
4.映射方式
- 直接映射:直接映射将主存中的每个块固定映射到 Cache 的一个特定位置。查找速度快但冲突率可能较高。嵌入式可能使用直接映射,实现简单,减少成本。
- 全相联映射:全相联映射允许主存的任意块加载到 Cache 的任何行。Cache 使用效率较高,冲突率为0,但查找速度和复杂度较高,不适合大容量
- 组相连映射:组相联映射是直接映射和全相联映射的折中方案,将 Cache 分为多个组,每组中的行允许灵活映射。冲突率较低,查找速度稳定,是主流 Cache 结构。
冲突问题:多个主存块可能映射到同一个 Cache 行(冲突失效),即使 Cache 未满,也可能造成频繁替换。
9.虚拟存储器
他是一种技术,没有实体。它通过为程序提供一种连续的、较大的地址空间,将物理内存(主存)和外存(如硬盘)结合起来,使程序能访问比实际物理内存容量更大的地址空间。
-
虚拟地址空间(Virtual Address Space)
- 每个进程拥有独立的虚拟地址空间,程序的代码和数据以虚拟地址为基础操作,而不直接使用物理地址。
- 程序认为自己拥有一个完整的、连续的内存地址空间。
-
地址映射(Address Mapping)
- 由**内存管理单元(MMU)**将虚拟地址映射到物理地址。
- 若访问的虚拟地址未映射到物理内存,则触发缺页异常,从外存加载数据到内存。
-
按需加载(Demand Paging)
- 只有在程序真正需要时,才将数据从磁盘加载到内存,节省了内存空间。
1.优势
(1)支持多任务
- 每个进程拥有独立的地址空间,避免内存冲突和数据损坏。
(2)优化内存利用
- 虚拟存储器通过按需加载和页面置换,支持程序运行在有限的物理内存中。
(3)提升系统稳定性和安全性
- 通过内存隔离,防止一个程序的崩溃影响其他程序或操作系统。
(4)开发简单
- 程序员不需要关心物理内存的实际布局,只需按照虚拟地址编写代码。
2.虚拟存储器管理方式
逻辑地址到物理地址的映射
1.页式存储
页式存储将虚拟地址空间和物理地址空间划分为固定大小的块(页和页框),以解决内存碎片问题。虚拟地址空间被分为页,物理内存被分为等大小的页框。
通过页表实现虚拟地址到物理地址的映射。
可能产生内部碎片(页内未使用的空间)。应用于简单操作系统和嵌入式系统。
流程:
- CPU 通过虚拟地址中的页号查找页表。
- 页表提供对应的物理页框号。
- 结合页框号和页内偏移,得到物理地址。
2.段式存储
段式存储将程序划分为逻辑上不同的段(如代码段、数据段、堆栈段),以支持更灵活的内存分配。段的大小不固定,每个段对应一段逻辑内存。
通过段表实现虚拟地址到物理地址的映射。
容易产生外部碎片(段的大小可变,内存空间可能难以紧凑分配)。用于早期的操作系统系统
流程:
- CPU 通过虚拟地址中的段号查找段表。
- 段表提供段的起始物理地址和长度,校验偏移是否越界。
- 合法时,计算物理地址 = 段起始地址 + 段内偏移。
3.段页式
段页式存储结合了页式和段式的优点,将每个段再划分为固定大小的页,解决了段式的外部碎片问题。
虚拟地址分为多个段,每个段再分为固定大小的页。
页表和段表都需要额外存储,增加内存开销。现代计算机系统的主要内存管理方式(如 Linux、Windows 等)。
段页式存储的分层结构能够兼顾灵活性和高效性,解决了段式和页式的局限性,因此被广泛采用。
流程:
- CPU 通过虚拟地址中的段号查找段表,找到段起始地址。
- 根据页号查找对应段的页表,找到页框号。
- 结合页框号和页内偏移,计算出物理地址。
3.缺页
操作系统内存管理中的一个重要概念,发生在程序访问的虚拟地址所对应的页面未加载到主存时。此时,系统需要从辅存(如磁盘或 SSD)中将所需页面加载到主存。
主存已满:替换算法
-
FIFO(先进先出算法)
- 替换最早进入内存的页面。
- 优点:简单实现;缺点:可能出现“Belady 异常”(更多内存反而导致更多缺页)。
-
LRU(最近最少使用算法)
- 替换最近最少被访问的页面,依据过去的访问历史。
- 优点:性能接近最优;缺点:需要硬件支持或额外开销。
-
OPT(最优置换算法)
- 替换未来最长时间内不会被访问的页面(理论最优解)。
- 优点:缺页率最低;缺点:无法实际实现,因为未来访问不可预测。
-
Clock(时钟算法)
- 近似 LRU,用一个指针和访问位(Reference Bit)来实现。
- 优点:性能和开销折中,常用于实际系统。
4.主存与辅存间的映射方式
全相联映射
10.寻址方式
- 立即寻址:操作数直接在指令中,无需访问寄存器或内存。int a = 5
- 寄存器寻址:操作数在寄存器中,只需访问一次寄存器,无需访问内存。int a = 5, b = 10; int c = a + b;
- 直接寻址:指令内带地址,需要访问一次内存。int a = 5; int b = a; // b 从 a 的内存地址中取值
- 寄存器间接寻址:指令中的地址(指针)在寄存器中,操作数在内存中。需要访问一次寄存器和内存。适用于指针操作
- 页面寻址:用于虚拟内存管理,它通过页表将虚拟地址转换为物理地址。比寄存器寻址多一步转换。
- 变址寻址:需要计算数组的偏移量,有异步ALU的算数运算
- 一级间接寻址:地址(指针)在内存中,CPU访问一次内存获得地址,再访问内存获得数
- 多级间接寻址寻址:访问多次内存
11.磁盘阵列
一开始我们电脑的数据是存储在一个硬盘中,为了提高安全性,我们用两块或者两块以上的硬盘组成一个磁盘组。但对于电脑来说这个磁盘组是一个硬盘,一旦硬盘出问题,我们组建的磁盘阵列就会帮我们恢复数据
raid0:把文件拆分开,随机存在硬盘上。比如我三个硬盘,就把文件拆成三份,速度快但安全性不高。
raid1:写入一个硬盘中后,再复制一份到其他硬盘。但容量太低,性能差
raid5:分开保存数据,但多保存了一个校验信息。如果某一块硬盘出问题,就可以通过校验信息恢复,但不能坏两块硬盘,只能坏一块。
12.故障
1.内存故障
开机后显示器没有画面,只听到哔哔哔的三声,可能是内存异常
关掉电源,打开机箱,拔掉多余内存,只留下最基本的内存。重新开机检测,如果还是同样的现象,表示此组内存有问题,将另外一组内存插上,然后继续检测,即可找出有问题的内存。
2.提示系统文件损坏,蓝屏
重启,系统会自动扫描恢复
4.总线
总线是计算机中用于传输数据、地址和控制信息的通道,它连接计算机的各个组件,如CPU、内存、输入/输出设备等,确保它们能够相互通信。
1.类型
- 数据总线: 用于在设备之间传输实际数据。宽度(如32位、64位)决定一次能传输的数据量。双向传输
- 地址总线: 用于传递内存地址或设备地址,决定CPU能访问的内存范围。单向传输
- 控制总线: 用于传递控制信号(如读、写、复位等)。
- 并行
- 串行
- 片内
- 系统总线
2.特点
当多个部件连接到总线上时,如果两个或两个以上部件同时向总线发送信息,就会导致信号冲突,传输无效。
因此,在某一时刻,只允许有一个部件向总线发送信息,而多个部件可以同时从总线上接收相同的信息。
所以,分时 和 共享 是总线的两个特点。
3.总线结构
- 单总线结构多见于早期和低成本系统,但性能有限。
- 双总线结构是现代计算机的主流,性能与复杂性兼顾。
- 多总线结构在高性能系统中更为常见,如现代PC和服务器,进一步优化性能和扩展能力。
4.性能指标
频率,带宽,是否总线复用(数据总线和地址总线),数据传输速度,延迟时间
5.I/O系统
I/O系统的组成包括硬件部分(I/O设备、接口、控制器、总线)和软件部分(I/O管理软件、设备驱动程序)
1.组成
1. I/O设备
- 输入设备: 用于向计算机提供数据或命令。
- 常见设备:键盘、鼠标、扫描仪、麦克风等。
- 输出设备: 用于将计算机的结果输出给用户。
- 常见设备:显示器、打印机、扬声器等。
- 输入/输出设备: 既能输入又能输出。
- 常见设备:触控屏、外部存储设备(如硬盘、U盘)。
2. I/O接口
用于连接计算机内部总线和外部设备的硬件模块,负责信号转换和传输。
- 功能:
- 将外部设备的信号转换为计算机可处理的格式,或反之。
- 提供缓冲区以适应不同设备的速度差异。
- 处理设备的控制信号(如启动、停止)。
- 示例:
- 串行接口(如UART)、并行接口(如LPT)、USB接口等。
3. I/O控制器
I/O控制器是I/O系统的重要组成部分,是连接CPU、内存与I/O设备的桥梁。
- 功能:
- 接受CPU的指令,控制外设执行操作。
- 处理设备间的通信和数据传输。
- 提供中断处理和DMA支持。
- 示例:
- 硬盘控制器、显示控制器、网络控制器。
4. I/O总线
总线是计算机内部数据、地址和控制信号的传输通道,用于连接I/O设备与其他组件。
- 分类:
- 数据总线: 传输数据。
- 地址总线: 标识设备的地址。
- 控制总线: 发送读/写信号和其他控制信息。
- 示例:
- PCIe、USB、SATA、I2C等。
5. I/O管理软件
操作系统中专门负责管理I/O设备的软件层,负责协调硬件与应用程序的交互。
- 功能:
- 提供设备驱动程序,使应用程序能方便地访问硬件。
- 管理设备的分配和释放,解决资源冲突。
- 提供缓存和缓冲功能,提高I/O效率。
- 组件:
- 设备驱动程序: 操作系统与硬件设备间的接口程序。
- I/O调度: 优化设备访问顺序,提升系统性能。
2.DMA
直接内存访问, 是一种计算机数据传输技术,允许外设直接与内存交换数据,而无需经过CPU的干预,从而提高数据传输效率,降低延迟,减少CPU的负担。尤其是大规模的数据传输时。
电脑的接口通常支持DMA,音频、视频数据的实时处理也与DMA技术的参与
3.操作系统
是管理计算机硬件和软件资源的系统软件,是系统资源的管理者,也是用户与计算机硬件之间的桥梁。操作系统的主要功能是为用户和应用程序提供一个方便、高效、稳定的计算机运行环境。 是计算机系统最基本的系统软件。
1.操作系统的主要功能
- 进程管理:管理进程的创建、调度、终止。以及进程之间的通信。
- 内存管理:管理计算机内存的分配以及回收,提供虚拟内存技术,使程序能运行在超过物理内存的空间中。
- 文件管理:管理磁盘空间,负责文件的创建、删除等操作
- 设备管理:管理输入输出设备等硬件资源,利用驱动程序使硬件资源和操作系统通信
- 提供图形化或者命令行用户界面,方便用户使用
- 提供数据校验机制:保证数据安全
2.操作系统的目标
- 高效性:管理计算机资源(CPU、内存、IO设备),提高资源的运行效率
- 方便性:为用户提供简单的接口,让用户无需知道功能的底层逻辑,即可完成操作。比如图形化界面和命令行界面。
- 可扩充性:也就是扩展性,操作系统想要增加功能,无需修改之前的功能。直接添加扩展插件即可。
- 开放性:操作系统提供统一的标准、协议和接口。让不同的厂家根据统一的标准开发扩展插件,进而促进协作和开发。
3.虚拟机
是通过软件模拟的计算机环境,可以运行如同真实计算机一样的操作系统和应用程序。
虚拟机的实现依赖于底层硬件或宿主操作系统,主要用于提供资源隔离和环境虚拟化。
一台计算机可以运行多台虚拟机。
4.操作系统特征
并发:操作系统能够同时处理多个任务或进程。(最基本的)
共享:资源共享是指多个用户或进程可以共同使用计算机资源。(最基本的)
虚拟:通过虚拟化技术把一个物理实体可以映射成若干个逻辑实体。(空分复用技术:虚拟存储器、时分复用技术:虚拟处理器)
异步:程序在操作系统的控制下可以异步运行,异步是指多个程序并发执行,但每个程序的执行不是一贯到底的,而是走走停停的。
5.操作系统的运行机制
操作系统的运行机制是通过在用户态和内核态之间切换,管理硬件资源并提供服务。程序运行时处于用户态,若需要访问硬件或系统功能(如文件、内存、设备),通过系统调用请求操作系统切换到内核态。内核负责调度进程、分配资源、处理中断和异常,确保多任务并发执行时的安全性和效率,最终返回用户态继续运行程序。这种机制实现了程序隔离、资源共享和系统保护。
6.中断和异常
中断:是由外部设备触发的,通知CPU要停止当前程序,处理外部的事件。比如键盘输入,语音通话。是操作系统响应外部设备的一种机制。
异常:是CPU内部触发的,用于处理程序运行中的错误。比如除以0。是操作系统保证程序安全的一种机制。
7.进程、线程、程序
进程:操作系统分配资源的基本单位,是正在运行的程序实例
线程:cpu分配资源的基本单位,是调度的基本单位,一个进程由多个线程组成
程序:就是一组计算机指令,是静态的。通常是编译好的,打开看是二进制字节码文件。一个程序启动可以对应多个进程
1.进程/线程状态
每个操作系统都有自己的进程状态
常见的是
新建:进程正在被创建,操作系统为其分配必要的资源,进行初始化等相关操作,尚未进入就绪队列
就绪:进程已准备好运行,只要分配时间片就能运行
运行:正在运行,执行指令中
阻塞:进程等待某些进程,或者自己睡
终止:操作系统回收其资源
2.进程之间通信
- 共享存储:进程共享同一块物理内存区域,直接读写数据,数据交换速度快,适合大量数据频繁交互场景。但因多进程同时访问,需搭配信号量、互斥锁等同步机制保证数据一致性,且对内存管理要求高,否则易引发内存问题。
- 消息传递:基于消息进行通信,消息含数据与标识信息,可发至消息队列或直接发给目标进程。支持异步通信,发送与接收进程无需同时运行,消息格式灵活,能满足多样需求,还可设优先级,优先处理重要消息,适用于分布式系统等复杂场景。
- 管道通信:和共享错处差不多,但数据读写一定是先进先出的,和管道一样。但只能半双工,常用于父子进程。如果需要全双工通信,需要建立两个管道。
8.同步、异步、互斥、锁
- 同步:每个进程按顺序执行
- 在一个生产者 - 消费者问题中,生产者生产数据,消费者消费数据。消费者不能在生产者没有生产数据之前就进行消费,它们之间需要同步。
- 异步:每个进程都是独立的不可预知的向前推进
- 互斥:互斥是指多个进程在访问共享资源时,同一时刻只能有一个进程访问该资源,其他进程需要等待这个资源被释放后才能访问。
- 锁:锁是一种同步机制。它用于控制多个进程或线程对共享资源的访问,确保在同一时刻只有一个进程或线程能够访问被保护的资源。(锁不一定都是互斥的,比如读写锁)
- 就像是一把真实的锁,当一个线程(或进程)获取了这把锁,就相当于拥有了对共享资源的 “钥匙”,可以访问该资源;而其他线程(或进程)如果想要访问这个资源,就必须等待这把锁被释放。
信号量
信号量是一种用于进程(或线程)同步和互斥的机制,它本质上是一个非负整数的计数器。信号量可以用于控制同时可以访问资源的线程数量,每个线程想要访问需要获取信号量许可
信号量的值代表了当前可用资源的数量或者某种许可的数量。例如,信号量初始值为 3,表示有 3 个资源可供使用。当一个进程(或线程)需要使用资源时,它会执行 P 操作,信号量的值减 1。如果信号量的值大于等于 0,该进程(或线程)可以继续访问资源;如果信号量的值小于 0,这个进程(或线程)就会被阻塞,等待其他进程(或线程)执行 V 操作来增加信号量的值。
管程
管程也是一种同步机制,可以理解为对象、也可以理解成一个工具。可以实现进程的同步,将共享资源以及对共享资源进行操作的代码封装到一个模块中。
9.死锁
死锁:多个线程想要获得对方手里的资源,会产生的循环等待现象
假设家里有一个卫生间,卫生间里有马桶和卫生纸这两种 “资源”。家里有两个人,分别是小明和小红。
小明进入卫生间后,占用了马桶(因为上厕所需要使用马桶这个互斥资源,同一时间只能一个人用),这时候他发现没有卫生纸了,于是他等着别人给他送卫生纸进来,并且他不会离开马桶(相当于请求和保持条件,他在占用马桶资源的同时请求卫生纸资源)。
与此同时,小红在卫生间外面,她拿着卫生纸,但是她也想上厕所,于是她等着小明从马桶上起来(相当于不可剥夺条件,小明在没上完厕所之前不会让出马桶,小红也不能强行让小明离开马桶)。
这样就形成了一个循环等待的情况,小明等卫生纸(小红拿着),小红等马桶(小明占着),两个人都无法完成上厕所这件事,这就产生了死锁。
1.死锁产生的条件
互斥条件:互斥是指多个进程在访问共享资源时,同一时刻只能有一个进程访问该资源,其他进程需要等待这个资源被释放后才能访问。
不剥夺条件:线程在持有锁后,不能被其他线程抢夺
请求和保持条件:进程已经获得一个锁,又想获得其他进程的锁
循环等待条件:1等2,2等3,3等4,4等1,这样的循环等待
2.如何预防死锁
破坏互斥条件,破坏不剥夺条件,破坏请求和保持条件,破坏循环等待条件
3.避免死锁
银行家算法:这是一种经典的死锁避免算法。把操作系统看作是银行家,资源看作是银行家的资金,进程看作是客户。银行家在分配资金(资源)之前,会检查如果满足客户(进程)的资金(资源)请求,是否会导致系统进入不安全状态。如果不会,就可以分配;如果会,就拒绝分配。但有些情况计算量会太大导致效率降低,银行家算法比较保守,可能会拒绝一些实际上不会导致死锁的资源请求,因为它只考虑最不利的情况。
4.死锁的检测和解除
- 资源剥夺法:从死锁进程那里剥夺部分资源给其他进程,使其他进程能够继续运行,从而打破死锁状态。例如,在一个数据库系统中,多个事务因为锁资源而死锁,系统可以强行剥夺某个事务的锁,让其他事务先完成,然后再重新分配资源给被剥夺的事务。
- 撤销进程法:直接撤销部分甚至全部死锁进程。当检测到死锁后,系统可以选择撤销造成死锁的一个或多个进程。例如,在一个多用户操作系统中,如果几个用户进程死锁,系统可以选择撤销其中一个用户进程,释放它所占用的资源,使得其他进程能够继续运行。不过这种方法可能会导致部分工作丢失,特别是当被撤销的进程已经执行了大量重要工作时。
- 进程回退法:让一个或多个死锁进程回退到足以打破死锁的地步。例如,一个进程在执行一系列操作后和其他进程死锁,系统可以让这个进程回退到之前的某个状态,释放它在后续操作中占用的资源,重新尝试执行操作,以避免死锁。
10.多道程序设计
计算机内存同时运行多个程序,在某个程序空闲时,cpu去处理其他程序,可以充分利用计算机资源。
假设有一个计算机系统,同时运行着文字处理软件、音乐播放软件和浏览器这三个程序。
文字处理软件正在进行文档内容的拼写检查,这个过程主要是 CPU 在进行计算处理;音乐播放软件此时正在从硬盘读取音乐文件数据到内存,然后将数据发送给声卡进行播放,这涉及到 I/O 操作;浏览器正在从网络下载网页内容,这也是 I/O 操作。
在单道程序设计下,系统一次只能运行一个程序。比如先运行文字处理软件,当它进行拼写检查时可以正常工作,但当它等待用户输入新内容(这类似于一种等待操作)时,CPU 就空闲了。如果此时需要播放音乐或者浏览网页,就必须等文字处理软件完全结束才能开始其他程序。
而在多道程序设计的系统中,当文字处理软件等待用户输入的间隙,CPU 可以切换去处理音乐播放软件读取音乐文件或者浏览器下载网页的任务。当音乐播放软件读取完一部分音乐文件后,等待声卡播放这部分音乐时(这也是一种等待 I/O 操作的情况),CPU 又可以切换去处理浏览器下载网页或者文字处理软件的新任务。这样,三个程序就好像同时在运行一样,充分利用了 CPU 和其他资源(如硬盘、网卡等),这就是多道程序设计在实际计算机应用中的一个典型例子。
作用
- 提高cpu利用率:在单道程序环境下,当一个程序进行 I/O 操作(如读取文件或等待网络响应)时,CPU 会处于空闲状态。而在多道程序设计中,当一道程序等待 I/O 操作完成时,操作系统可以将 CPU 分配给其他程序,使 CPU 一直处于忙碌状态。
- 提高I/O 设备利用率:多个程序可以同时使用不同的 I/O 设备。不同的程序可能对 I/O 设备有不同的需求,如一个程序使用打印机打印文档,另一个程序使用磁盘进行数据存储。多道程序设计使得这些 I/O 设备能够并行工作,提高了设备的整体利用率。
- 提高系统吞吐量:系统吞吐量是指系统在单位时间内完成的作业数量。多道程序设计能够在单位时间内处理更多的作业。
- 多道程序设计可以更有效地利用内存空间。不同大小的程序可以共享内存,操作系统可以根据程序的大小和需求动态地分配内存。例如,有一些小型的工具程序和大型的应用程序同时运行,操作系统可以合理地安排它们在内存中的位置,避免内存空间的浪费,使得内存资源能够得到更充分的利用。
4.数据库
1.数据库设计步骤
-
需求分析
- 与用户沟通,收集数据库功能期望,确定系统边界,梳理数据流程,将需求整理为具体的数据要求,包括类型、量和准确性等。
-
概念设计
- 运用实体 - 关系(E - R)模型抽象业务实体和关系,绘制 E - R 图,确定每个实体的属性。
-
逻辑设计
- 把 E - R 模型转换为关系模型,通过规范化处理关系模式以消除数据冗余和异常,同时确定数据的完整性约束条件。
-
物理设计
- 根据应用特点和性能要求,选择存储结构和存储方法,确定数据存储位置,设计合理的索引策略。
-
数据库实施
- 使用数据库管理系统工具创建数据库和表结构,加载数据,编写存储过程和视图。
-
数据库运行和维护
- 制定备份和恢复策略,监测和优化性能,维护数据安全,根据业务发展更新和扩展数据库。
2.事务的四大特性ACID
事务通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束
首先,什么是事务,我理解为一些操作的集合
1.原子性: undolog
事务包含的操作,是一个原子性操作,要么都成功,要么都失败
2.一致性: undolog
事务执行前后必须处于一致性状态
拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。
3.隔离性: MVCC
事务之间相互独立,一个事务执行不能被其他事务干扰
即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。
4.持久性: redolog
持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的
3.主键和外键
主键:主键是用于唯一标识表中每一行记录的一个或一组列。它就像是每个记录的 “身份证号码”,在整个表的范围内独一无二
外键:通常是另外一个表的主键,通常用于表示两个表之间的关联关系的。但对于在高并发的增删改时,会导致性能下降。不建议使用。
4.三范式
- 第一范式(1NF)
- 要求所有属性都是不可再分的基本数据项,确保每一列具有原子性。例如,不能将多个联系方式放在同一列,要拆分成如手机号码、电子邮箱等独立的列。这是关系模式规范化的基础,使数据结构更清晰,便于存储和操作。
- 第二范式(2NF)
- 在 1NF 基础上,非主属性要完全函数依赖于主键,不能部分依赖。比如在包含复合主键(订单编号,产品编号)的 “订单详情” 表中,若存在只依赖产品编号的非主属性 “产品名称”,就不符合 2NF,应将其拆分,减少数据冗余,提高数据一致性和维护便利性。
- 第三范式(3NF)
- 在 2NF 基础上,非主属性既不传递依赖于主键,也不传递依赖于其他非主属性。如在 “学生” 表中,“班主任姓名” 通过 “班级编号” 传递依赖于 “学号”,就不符合 3NF,通过拆分表来避免传递依赖,进一步减少数据冗余,降低更新异常的可能性,提升数据库性能和数据完整性。
5.表和视图
- 定义与本质:表是实际存储数据的结构,以行列形式物理存储数据;视图是虚拟表,基于表的查询结果定义,本身不存储数据 。
- 数据操作:表可直接进行插入、更新、删除操作;视图数据更新受限制,复杂视图通常无法直接更新。当表中数据改变时,视图也随之改变。
- 存储与性能:表随数据量增加占用更多空间,查询涉及实际数据读取;视图不占存储空间,但查询需依定义执行查询,性能因定义复杂程度而异。
6.什么是数据库管理系统DBMS
数据库又叫数据库管理系统,是系统软件,位于用户和操作系统中间。主要是对数据进行管理和维护。根本目的是数据共享
1.数据定义功能:使用DDL语句创建数据库、创建表、修改表等
2.数据库操作功能:使用DML语句对数据库进行增删改查操作
3.数据库权限管理功能:有用户认证功能和权限校验功能
4.数据完整性、一致性:使用事务管理实现数据的完整性和一致性
5.数据备份功能:通过日志文件可以恢复数据
7.系统故障时数据库恢复策略
首先要确认数据库的架构类型和恢复的时间点,如果是数据库集群的话,就使用binlog日志恢复数据库,binlog记录的是逻辑日志,可以直接恢复至系统故障时期的时间点。
如果只有一个数据库的话,先停掉数据库,再使用redolog重做日志恢复数据,如果有些事务没提交,再使用undolog日志恢复数据。
5.网工
1.软件安装
链接:https://pan.baidu/s/1GZ65ElkeZIe9VoBl53873A
提取码:e6n9
依次安装:WinPcap、Wireshark、VirtualBox、eNSP
2.图标
1.计算机网络
vlan怎么划分
为什么vpn能访问公司资源,不用不行
1.网络、互联网、因特网
1.网络
网路是由若干个节点,和连接这些节点的链路组成
2.互联网
多个网络通过路由器连起来,构成一个范围更大的网络,也就是互联网
3.因特网
世界上最大的互联网,用户数以亿计,互联的网络数数以百万级
1983年TCP/IP协议成为标准协议,标志着因特网的诞生
1.因特网服务提供者ISP
普通用户通过ISP接入因特网的,ISP想因特网管理机构申请到成块的IP地址。任何人只要向ISP缴纳一定费用就可以从ISP获得IP地址。我国主要的ISP是,中国移动、中国联通、中国电信
2.因特网的组成
物理基础设施、协议层、服务层和用户层
-
物理设施:路由(不同网络之间传输数据包),交换机(局域网内传输数据包),服务器,终端等等。传输介质:光纤、电缆、铜线、WiFi、5G
-
通信协议:TCP/IP协议、http、https、dns
-
服务层,比如万维网www、物联网、某信等等
-
用户:手机、电脑、浏览器等等
1.局域网变慢的原因
首先要确定变慢原因的位置,根据实际情况加以优化
先在本地打开网卡,看下网卡与交换机连接有没有问题。如果过慢、可能是网线问题、可能是网卡配置问题。前者问题,就好解决,后者问题就需要专业的工具解决。
通过专业的工具找到具体哪台交换机出现问题,不只要检查当前交换机,也要检查上游交换机,如果有问题,先尝试重启,如果重启还有问题再考虑其他方法。
如果都没问题,可能是网络结构的问题。看看是否出现网络环路,导致广播风暴,消耗网络资源。再看看是不是ip地址冲突问题,还有可能是vlan划分过大的问题。
总之,具体原因具体分析。
2.网络通信的交换方式
1.电路交换
在通信前建立一条固定的电路,通信双方通过这条链路传输,知道通信结束释放。类似于传统的电话网络,一旦建立连接,资源(带宽)被独占。
-
优点:实时性好
-
缺点:资源利用率低
应用于传统的电话网路
2.报文交换
将数据整体作为一个报文进行传输,到达中间节点时,节点存储并分析目标地址,然后选择下一条路径转发。类似邮政系统,信件在中途可能经过多个中转站。
-
优点:不需要固定的通信路径,资源利用率高
-
缺点:存储和分析报文需要时间,传输延迟大
应用于早期电报通信,就是抗日时期的那种电报
3.分组交换
分组交换将数据分成多个小数据包(分组),每个分组携带目的地址,通过独立的路径在网络中传输,最终在接收端重新组装成完整的数据。
-
优点:资源利用率高,支持大规模网络
-
缺点:数据包可能乱序,因为数据包是分组传输的,到达终端的时间不一样。完整的数据是在终端组成的。
这种交换方式是当今主流的交换方式,应用于当今互联网
3.计算机网络
计算机网络没有一个真正的定义。
计算机网络是指由多个计算机和设备组成的系统,通过一些硬件,也就是路由器、交换机、网线什么和网络协议相互通信。核心目的是为了数据传输和资源共享。计算机网络按规模分,可以分为局域网、城域网、广域网。当今最大的计算机网络是因特网,其范围遍布全球各地。
在我们的日常生活中,计算机网络的影响无处不在,在各个领域都有计算机网络的存在。比如,使用某信和朋友交流,开会可以使用视频会议,可以使用搜索引擎去查找相关资料,使用某音某手刷视频,使用某宝购物等等
事物都具有两面性,计算机网络也是如此。你享受计算机网络带给你的方便的同时,你的隐私很容易也会被别人知道。所以在使用时要注意一个网络安全的问题。
总之,计算机网络的核心就是数据传输和资源共享。他改变了当今人们的生活方式,使人们的生活变得便利,但也要注意网络安全等问题。
1.分类
-
按交换技术分类:电路交换、报文交换、分组交换
-
按使用者分类:公用网、专用网(军队、铁路的专用网)
-
传输介质:有线网络和无线网络
1.按覆盖范围分类:
广域网WAN(wide)
跨越长距离的网络,如跨地区或全球的互联网。
城域网MAN
覆盖城市范围的网络,用于连接多个局域网
局域网LAN(Local)
覆盖小范围的网络,如家庭、办公室或学校。
个域网PAN(Personal)
用于个人设备之间的近距离通信,如蓝牙网络。
2.按拓扑结构分类
总线型网络
成本低但容易出现单点故障,性能较差
星形网络
是现代局域网LAN最常见的拓扑结构,所有节点连接交换机
易于管理,性能好,但成本较高,如果中心设备故障会导致整个网络瘫痪
环形网络
现在基本不用,延迟太高
网状型网络
可靠性、稳定、低延迟,但成本高
军队常用这种结构
2.计算机网络性能指标
1.带宽
信号的频带宽度,单位时间内通过多少比特,是理论上最大值
kb/s:1000比特每秒
1kb=1024比特
2.吞吐量
带宽是理论最大,吞吐量是实际的
3.时延
信号从发送到接收所花费的时间
发送时延:受网卡的发送速率、带宽、接口速率影响
传播时延:几乎没有,接近光速
处理时延:设备对数据包进行分析和转发的时间。可以忽略不计
4.时延带宽积
传输数据时可以容纳的最大数据量
时延乘以带宽
5.往返时间RTT
两个网络双向交互的时间
6.利用率:并非越高越好
信道利用率和网络利用率
网络资源的实际使用比例,与带宽或吞吐量相关。
吞吐量/带宽
7.丢包率
丢失包的数量和总发送数据包的数量的比值
可能是网络拥塞、信号干扰造成
3.计算机网络体系结构
1.法律上的标准OSI7层模型
应用层:连网
最靠近用户的一层,为用户直接提供各种网络服务,比如我们看到的图片,听的音乐,看的视频常见的有HTTP,HTTPS协议 http是基于tcp和udp的
telnet、ftp
表示层:格式转换
把人类看到的图片听到的声音用计算机编码表示,可以实现数据加密
高版本企鹅给低版本企鹅发表情,低版本企鹅解密不了
会话层:建立连接
加两个app之间建立连接,比如美团只能用某信支付,淘宝只能用支付宝支付
企鹅发信息对方应该用企鹅接收,而不是某信
传输层:端到端
解决进程之间基于网络的通信问题
建立端到端的连接,比如我的电脑到你的电脑
建立TCP和UDP连接
TCP:适合传输那种对完整度要求高的文件,丢包就打不开的那种,有可靠性
- 面向连接、面向字节、分段与重组(如果数据量太大就分成小的数据段)、一对一的全双工通信、拥塞控制和流量控制
UDP:可以接受少量丢包,对延迟要求很高,快,无可靠性
网络层:路由
解决分组在多个网络上传输路由问题。
路由器如何转发分组,如何进行路由选择。如何表示网络中的各个主机。
协议
- IP协议:是网络层的核心协议,用于在不同的网络之间传输数据。定义了数据包的格式和处理规则,是整个互联网通信的基础。
- ARP:地址解析协议,将ip地址解析为mac地址,ARP协议本身没有验证机制,容易被攻击
- 发送方先查自己的ARP缓存表是否有接收方IP对应的mac地址,如果有直接发送
- 如果没有就发送广播请求,局域网内所有主机都会接收到请求,但只有B接收方会响应
- 接收方将自己的mac地址单播发给发送方
- 发送方将接收方的mac地址记录在自己的ARP缓存表中
- ICMP:网际控制报文协议,用于检测网络设备之间的差错报告和诊断网络故障方面。比如检测 网络通不通、主机是否可达、路由是否可用等。ping命令的实质是发送一个ICMP的数据包检测网络通不通、主机是否可达、路由是否可用等。
- IGMP:网际组管理协议,管理多播组的成员关系。发送请求时发给一组节点,不像单播发给一个,不像广播发给所有。
数据链路层:封装
通过mac地址寻址,解决分组在同一网络上的可靠传输问题(以192开头的)
具有物理地址寻址、数据封装成帧、流量控制、数据检错和重发denggongn
协议:
- HDLC 是一种面向比特的同步数据链路层协议(是早期的协议,没有安全机制,现在几乎不怎么用了)
- PPP 协议用于在两点之间建立直接连接的数据链路层协,能封装多种网络层协议,具有错误检测机制
物理层:传输
定义了传输介质,解决用什么信号来传输比特的问题(网卡将比特0和1变成电信号)
2.实际上的TCP/IP4层模型
OSI7层成本太高,制定的不合理,没人用
应用层:三层合为一层,因为数据没发生改变,传输层才添加首部
传输层
网络层:ip协议,主要负责寻址和路由数据包
网络接口层:数据链路层和物理层。网卡
3.为什么分层
主要是为了解耦合,提高效率。就像企业中分很多部门,每个部门都有自己的职责一个道理。
主要目的是简化复杂的网络问题,采取模块化的方式,将网路通信的每个功能划分到不同的层次中,每一层专注于自己的功能,同时对相邻层提供明确接口。
4.数据在网络中如何传输
用户,应用层先构建一个http请求报文
应用层将报文交给传输层处理,给原http报文添加一个tcp首部,主要是为了实现可靠传输
网络层层把前面的报文添加一个IP首部,使报文可以被路由器转发
数据链路层把前面的报文再加一个首部和尾部,使其成为帧,主要的作用是让帧在一段网络上传输能被相应的物理机接收
物理层将帧看做成比特流,再变换成相应的信号传输到路由器
一点一点解开,信号变成比特流,比特流变为帧,帧变成ip数据包。路由器根据数据包的ip首部,获得ip地址,查找自身路由表,以便转发。之后再来一遍加配件,变成信号流。
到达服务器,再一次一次解开,服务器获得数据包。再由服务器发给用户,也是前面的步骤
动画演示
5.网络协议
为网络中的数据交换而建立的规则由语法语义同步组成
-
语法:规定传输数据的格式,解决交换信息格式的问题
-
语义:规定要完成的功能,解决做什么的问题
-
同步:规定各种操作的顺序,解决什么时间什么条件下做什么特定的操作的问题
可以是文字可以是代码
6.OSI和TCP/IP模型的异同点
4.计算机网络相关设备
中继器:工作在物理层,可以使两个链路在物理层互联,主要作用是放大信号,但不放大噪音。但缺点是采用存储转发的原理,会增大传输时延。可以延长两个网络中简单信号传输距离
集线器:工作在物理层,主要作用是将多个设备连到局域网,无法识别地址,计算机每次都广播发送,会产生广播风暴。采用CSMA/CD技术共享总线,但影响效率。逐渐被交换机取代
网桥:主要作用是连接多个局域网,工作在数据链路层。逐渐被交换机取代。因为端口较少,扩展性较差,并且转发速度较慢,因为是用软件转发的。
路由器:主要作用是连接不同的网络。工作在网络层,可以连接局域网也可以连接互联网,接收数据包,根据IP地址对数据包进行转发,从而实现跨网络通信,成本较高
交换机:主要作用是连接网络中多个设备。效率高,可以避免数据碰撞。分为二层交换机和三层交换机,二层交换机只可以通过mac地址转发,三层交换机还可以通过ip转发,主要用于局域网。根据端口号发送数据,每个端口都是独立的,支持全双工发送,可以隔离冲突域
网卡NIC网络适配器:是计算机与计算机网络进行通信的接口设备,记录有mac地址,将二进制数据转换为电信号或者光信号等等,工作在物理层和数据链路层
5.问题解答
1.你访问公网时,你没有公网ip地址,你的ip是逻辑地址,是可能重复的,那么ip协议如何区分你的ip和别人的ip。
当你访问公网时,你的服务商isp会使用NAT技术来将你的私有ip转换成一个公网ip
2.那么你访问公网时mac地址起什么作用?
MAC 地址用于你电脑和ISP设备(路由器)之间的通信,公网通信是依赖ip地址。当你用流量时,没有路由器,MAC地址用于你的电脑和基站的连接。
3.为什么100兆的光纤,你下载速度不到100
因为单位不一样宽带用的是Mb,我们用的单位是MB
一个是比特bit,一个是字节Byte
差8倍
3.网卡工作在数据链路层还是物理层
工作在数据链路层,网卡不仅可以连接传输介质,还涉及到帧的发送和接收,网卡在发送数据时要将数据封装成帧(比如添加mac地址),接收时解封并检验完整性。而物理层只起到一个接口作用
6.计算机体系结构
1.物理层
概念:定义数据在网络中的传输方式(光、电磁波、电信号)
为数据链路层提供一个统一的数据传输服务
1.传输媒体(不属于物理层)
导引型传输媒体 | 双绞线,(绞合的作用:抵抗电磁干扰) | |
---|---|---|
同轴电缆(被双绞线取代) | ||
光纤(传输速率快、信号损耗低、从抗电磁干扰、安全性高、重量轻、寿命长) | ||
非导引型传播媒体 | 微波通信(2~40GHz) |
2.数据传输
串行传输:远距离传输
并行传输:近距离传输,cpu与内存之间通过总线进行数据传输
同步传输:高速网络通信(如以太网)实时通信(如电话),高效,适合高带宽和大数据量场景,但实现复杂,对硬件要求高
异步传输:键盘、鼠标等低速设备的通信,简单的远程终端连接。实现简单,无需同步时钟信号。适合低速、间歇性的数据传输。传输效率较低。
3.物理层的规定了什么
规定特性:
-
机械特性(外观比如typec,usb等等)
-
电气特性:规定电缆的电压范围,传输速率等等
-
功能特性:定义接线器的每一引脚的作用
-
过程特性:指明不同功能各种事件可能出现的顺序
4.信道(逻辑的)
单向通信(单工):广播,一条信道
双相交替通信(半双工):对讲机,2条信道
双向同时通信(全双工):电话
1.信道的极限容量
会产生失真,因为任何信道都不是理想的。
信道传输距离远、传输媒体质量差、环境干扰、人为干扰、码元的传输速率
限制码元的传输速率的因素:信道能够通过的频率范围(材质)、信噪比。频带越宽越快
2.信道复用
信道资源是有限的,但实际网路中,很多用户往往需要利用相同的信道资源传输信息。需要解决的问题是,不同的信号在同一信道传输时会产生干扰
信道复用通过分割资源(时间、频率、代码、空间等),让多个用户同时共享一个物理信道,从而提高通信效率和信道利用率
-
频分复用:将整个带宽分为多份,每个用户占用不同的带宽,效率高,易实现(广播和有线电视)
-
时分复用:每个人在同一频带中,固定分配时间间隙,轮流使用(突发性高时,利用率不高)卫星通信
-
统计时分复用,按需动态分配时间间隙,提高利用率
-
波分复用:是光的频分复用,通过不同的光波长(颜色)传输多个信号,光纤通信。
-
码分复用:所有人一股脑的都发过来,只是到对方后再解码,可以通过分辨出是谁发的。卫星定位(如GPS)
-
空分复用:在空间上分割信道,不同用户使用不同的物理路径或天线阵列。微波通信、(如4G/5G)
5.基带信号
信源发出的没有经过调制和编码的原始信号(计算机输出的信号),主要是低频的
6.调制和编码
数字信号是编码,模拟信号是调制
调制:基带调制,只是对基带信号波形进行变换。还是数字信号,这个过程叫做编码。适合短距离,比如局域网
带通调制:调节频率到较高的频段,并转换成模拟信号。这个过程叫做调制。适合长距离,比如无线通信
1.常用的编码方式
不归零制:正电平表示1,负电平表示0
归零制:整脉冲表示1,负面冲表示0
曼彻斯特编码:中心向上跳表示0,向下跳表示1
2.调制的方法
调幅、调频、调相
3.码元
数字通信中的一个基本单位,用于表示信息。比如0就是一个码元,1也是一个码元
2.数据链路层
物理层解决了比特流的传输问题
物理层遇到的问题:如何在比特流中找到一组数据的开始和结束的位置,比特流应该给谁接收,比特流传输错误怎么办
数据链路层解决相邻节点的比特流可靠传输问题
数据链路层:为相邻节点之间提供可靠的点对点或点到多点的数据传输
1.信道类型
点对点,广播(一对多)
2.主要作用
1.封装成帧
在一段比特流前后添加首部和尾部,构成一个帧。为了检测物理层的比特流可能出现的错误。
最大传送单元MTU规定了所传送帧的最大长度。
如何标识帧的开始?比如字节计数法,1-5,5-10,10-15这样
首部:如帧起始标志、地址信息等
尾部:如帧结束标志、校验和等
2.差错检测
帧在传输过程中可能产生误码,但接收方如何判断产生误码?
在帧尾加一个检错码就行了。根据检错码和检错算法判断传输过程中是否出现误码
3.流量控制
防止数据发送过多,导致接收方缓冲区溢出
-
停止等待协议:发送方发一帧数据后,等待对方确认。收到确认后再发送下一帧
-
滑动窗口协议:
-
反馈机制:接收方发送ack包或者nak包通知发送方状态
3.数据链路层如何保证可靠传输
-
循环冗余校验,封装成帧,并且附加一个校验码。校验和,发送方计算数据和并附加到帧尾。
-
纠错机制:发送方在数据中增加冗余信息,接收方根据冗余信息纠正错误。
-
确认重传机制:自动重传机制:停止等待协议,回退N帧协议,选择重传协议。
-
超时重传:发送方设定一个超时时间,若在该时间内未收到确认,假定帧丢失并重新发送。
-
对帧进行编号:避免帧重复接收
-
流量控制:滑动窗口协议,反馈机制
回退N帧:发送方连续发送多帧,若接收方发现某一帧出错,则丢弃其后的所有帧,发送方从出错帧开始重新发送。
选择重传:接收方仅请求重传出错的帧,其余正确的帧保留。
滑动窗口:
-
发送窗口:限制发送方在未收到确认前可以发送的帧数。
-
接收窗口:接收方通知发送方自己能接收的最大帧数。
4.PPP协议
是一种数据链路层的点对点通信协议,就是一种规则帮助两台计算机交流
-
建立连接(LCP):
-
就像两个朋友打电话,先确认对方接通了(比如说“喂,你能听到吗?”)。
-
再商量怎么聊(比如“用中文说话,不用太快”)。
-
-
身份验证(PAP/CHAP):
-
如果对方问“你是谁?”你需要报上名字或提供密码来证明身份(比如“我是小明”)。
-
-
开始聊天(NCP):
-
确定要聊的内容(比如“我们聊天气吧”),然后就可以正式开始说话了。
-
-
聊天规则(帧格式):
-
每次说话都有开头和结尾(比如“听好了,现在我要说——今天天气很好——说完了”),确保对方听得清楚。
-
-
检查和纠正错误:
-
如果听不清楚,对方会说“你刚才说什么?再说一遍”,然后你重新说一遍。
-
-
结束聊天(链路终止):
-
聊完了,双方说“拜拜”,挂断电话。
-
5.CSMA/CD协议
共享信道的通信协议,通过监听信道空闲后发送数据,并在检测到冲突时停止发送、随机延时后重试,以减少冲突和提高传输效率。
早期的以太网协议,已淘汰
6.现代交换机的原理
自学习,无目标则广播
-
交换机的每个端口可以同时进行数据的发送和接收(全双工模式),这样避免了传统集线器中因共享信道导致的冲突问题。
-
交换机记录每个端口的mac地址,记录到mac地址表中。如果接收到数据帧,可以直接根据mac地址,转发到对应设备。
-
缓冲区:交换机的每个端口都有缓冲区,如果数据太多,就放进缓冲区里一点一点转发
-
流量控制:可以避免数据过载
-
优先队列:可以对优先级高的数据帧先处理
7.mac地址
mac地址在网卡中,一种物理地址,全球唯一的,网络上各接口的唯一标识,6个字节。可以通过mac地址查厂商。
单播:向单个设备发送数据
多播:向一组设备发送数据
广播:向局域网内所有设备发送数据
ipv4:4字节
ipv6:16字节
8.ARP协议
将ip地址解析为mac地址,ARP仅在同一局域网内工作,跨网络通信需通过路由器。ARP协议本身没有验证机制,容易被攻击
想象你在学校里,有一个同学的名字(IP地址),但你不知道他坐在哪里(MAC地址)。为了找到他,你站在教室中间大声问: “谁是小明(IP地址)?告诉我你的位置(MAC地址)!”
-
广播请求: 你的喊话会传到全班每个人耳朵里(广播),但只有小明会回应。
-
单播回应: 小明站起来回答你:“我在第三排靠窗的位置(MAC地址)。”
-
记住位置: 你记住了小明的位置,下次想找他时,直接去找就行了,不用再大喊。
9.虚拟局域网VLAN
为什么需要VLAN?你的设备发送广播数据包时,会发给所有局域网中的设备。如果设备太多会占用大量带宽,降低网络性能。
vlan是一种逻辑分割技术,可以在同一物理网络中创建多个虚拟网络。通过在交换机上划分VLAN,不同VLAN之间的数据互不干扰,就像它们在独立的物理网络中一样。
通过 VLAN,可以在一个物理交换机上运行多个逻辑网络,而不需要为每个网络单独购买交换机。这在预算有限或空间受限的情况下尤其有用。
实现原理:通过在交换机上分配 VLAN ID,将网络中的设备逻辑分组,使不同 VLAN 的设备彼此隔离并限制广播域,从而实现网络分割和管理。
一般通过ip划分或者基于端口划分
生活中
-
按部门划分(如财务、IT、销售等)。
-
提升网络安全(如隔离访客网络)。
-
优化广播流量。
10.同一子网数据交换的流程
应用层发送http请求
传输层添加tcp头部
网络层添加ip首部,判断两个ip是否处于子网,两台主机位于同一子网,不需要路由,直接交由链路层处理。
看看arp缓存有没有目标ip的mac地址,如果没有发送一个arp请求 ,对方机器返回其mac地址
封装成帧
转换为电信号发送
不同网络数据交换,网络层就多一步路由。
3.网络层
数据链路层无法实现跨网络资源共享
网络层解决跨网络数据传输和资源共享问题,提供的是简单灵活、无连接、尽最大努力服务
路由选择问题,寻址问题,ip分配问题,数据传输问题
1.主要协议
上面的都是基于IP协议
1.IP协议
是网络层的核心协议,用于在不同的网络之间传输数据。定义了数据包的格式和处理规则,是整个互联网通信的基础。
-
提供逻辑地址:IP协议为每个设备分配一个逻辑地址(IP地址),用来标识网络中的设备。IP地址使得数据可以在复杂的网络中找到目标设备。
-
实现数据分组:数据在网络中传输时被拆分为IP数据包(分组)
-
IP协议通过路由器选择数据包的传输路径。数据包根据目标IP地址,通过多跳路由器最终到达目的地。
-
IP协议是无连接的、不可靠传输协议
2.地址解析协议ARP
将ip地址解析为mac地址,ARP协议本身没有验证机制,容易被攻击
3.网际控制报文协议ICMP Internet Control Message Protocol
用于检测网络设备之间的差错报告和诊断网络故障方面
比如:ping和ping6命令 用于检测网络连接是否正常
ICMP 消息有很多类型,常见的包括:
- Echo Request (类型8) 和 Echo Reply (类型0):用于测试网络连通性。
- Destination Unreachable (类型3):报告目标不可达,说明网络或主机的问题。
- Time Exceeded (类型11):表示TTL到期,通常意味着路由路径问题。
- Source Quench (类型4):过去用于流量控制,要求减缓发送速率(现在已少用)。
TTL(Time to Live)是IP数据包头部中的一个字段,用于限制数据包在网络中传播的最大时间或跳数。TTL的主要作用是防止数据包在网络中无限循环,确保它在到达目的地之前不会在网络中永远存在。
- 每当数据包经过一个路由器时,TTL值会减1。
- 当TTL值减到0时,路由器将丢弃该数据包,并发送一个Time Exceeded类型的ICMP错误消息(类型11)回源地址,通知发送方数据包无法到达目的地。
4.网际组管理协议IGMP Internet Group Message Protocol
管理多播组的成员关系
2.IPV4地址
1.ABC类地址
网络规模:A类适用于大规模网络,B类适用于中型网络,C类适用于小型网络。
特殊用途:D类用于组播通信,E类用于实验。
地址类别 | 地址范围 | 前几位二进制 | 网络部分 | 主机部分 | 默认子网掩码 | 用途 |
---|---|---|---|---|---|---|
A类地址 | 0.0.0.0 ~ 127.255.255.255 | 0 | 8位 | 24位 | 255.0.0.0 | 大型网络 |
B类地址 | 128.0.0.0 ~ 191.255.255.255 | 10 | 16位 | 16位 | 255.255.0.0 | 中型网络 |
C类地址 | 192.0.0.0 ~ 223.255.255.255 | 110 | 24位 | 8位 | 255.255.255.0 | 小型网络 |
D类地址 | 224.0.0.0 ~ 239.255.255.255 | 1110 | 无 | 无 | 无 | 组播通信 |
E类地址 | 240.0.0.0 ~ 255.255.255.255 | 1111 | 无 | 无 | 无 | 实验用途 |
2.子网掩码
子网掩码和IP地址进行按位“与”运算后,求出网络地址,如果两个ip与子网掩码按位与运算相同,则他们属于同一子网
示例:
-
IP地址:192.168.1.10(11000000.10101000.00000001.00001010)
-
子网掩码:255.255.255.0(11111111.11111111.11111111.00000000)
-
网络地址:192.168.1.0(11000000.10101000.00000001.00000000)
主要作用:划分子网,处于同一子网的ip可以直接进行通信
3.网络地址
标识一个网络
网络位不变,主机位全为0
4.广播地址
用于向该网络钟左右主机发送数据
网络位不变,主机位全是1
5.网关
实现跨子网或外网通信。
路由和转发数据包。
过滤,协议转换,减少性能的浪费
一般情况下,路由器就是网关
3.数据转发
应用层生成数据包,传输层添加一个tcp协议头,网络层再加一个IP头部,里面包括源IP和目标IP,首次发送时广播一个ARP请求,获取路由器的mac地址,通过网卡发送到路由器并封装成帧,路由器根据目标IP查找路由表,选择最佳路径下一跳,到达对方路由器,根据ARP协议将数据包传送到对方计算机
4.路由器的工作原理
路由器根据目标IP地址查找路由表,选择最佳路径,将数据包从源设备转发到目标设备,确保不同网络间的数据传输。
路由器就像一个交通指挥员,它帮助数据在不同的网络之间找到最佳路径,确保信息从一个地方顺利到达另一个地方。
还可以充当防火墙
路由器采用的技术
1.路由技术:路由表(目标网络、下一跳位置)、路由算法(RIP 协议基于“跳数”选择路径,适合于小型网络、OSPF 协议基于拓扑图选择路径,最短路径优先原则,适合大型网络、EIGRP结合距离和状态计算路径)
2.分组交换技术:将数据划分为小的“包”(数据包)并独立转发
3.NAT地址转换技术
4.虚拟局域网VLAN路由技术
5.DHCP动态主机配置技术
6.防火墙以及负载均衡技术
5.防火墙
防火墙就像一道屏障,保护计算机或网络免受不安全或不需要的网络流量的攻击。它的作用是监控和控制进出网络的所有数据,依据预设的安全规则,允许或拒绝特定的数据包通过,从而防止恶意攻击、病毒、未经授权的访问等。
-
访问控制:防火墙可以根据源IP地址、目标IP地址、端口号、协议类型等信息,限制哪些数据可以进入或离开网络。
-
防止外部攻击:防止来自外部网络(如互联网)的恶意访问和攻击,保护内部网络不受威胁,设置不同的安全策略。
-
保护数据隐私:阻止未经授权的用户或设备访问敏感信息,确保数据安全。
-
记录日志:防火墙可以记录流量日志,帮助管理员监控网络活动并发现潜在的安全威胁。
简而言之,防火墙就像是一个守卫,它在数据流入和流出网络时,检查每一条信息,并根据规则决定是否允许通过。
6.虚拟专用网VPN
VPN 会通过加密隧道将远程用户的设备“接入”公司局域网,VPN 对所有网络流量进行加密,确保数据在互联网传输过程中不会被窃听或篡改
7.NAT网络地址转换
NAT是一种在网络层执行IP地址转换的技术,允许多个内部设备共享一个公共IP地址访问外部网络。通过NAT,网络管理员可以节省公网IP地址,并提高网络的安全性
8.什么是IP复用和IP分用
-
复用(Multiplexing):在发送端,将多个上层协议或应用的数据封装到一个 IP 数据报中,通过网络传输。
NAT(网络地址转换):通过在路由器或网关设备上将私有 IP 地址转换为公共 IP 地址,使多个设备共享一个公共 IP。
应用层复用:多个应用程序在同一设备上通过同一个 IP 地址提供服务。通过 端口号 区分不同的服务(如 HTTP 通过 80 端口,HTTPS 通过 443 端口)。
多路复用:传输层可以多个请求共享一个TCP连接
-
分用(Demultiplexing):在接收端,解析 IP 数据报,将其分发到正确的协议和应用。
同时接收到同一IP的企鹅和某信
4.传输层
传输层解决端到端的可靠传输问题
1.UDP和TCP的区别
UDP(面向报文)
面向无连接,不用建立连接就发送数据,具有不可靠性
数据传输方式是面向报文的,首部开销小
传输速度较快,支持多播
不保证数据包的顺序
比如直播,视频通话,在线游戏用udp
TCP(面向字节)
是面向连接的,在传输数据之前要建立连接,也就是三次握手,具有可靠性
是面向字节流的,首部开销大
的速度较慢,因为要建立连接,拥塞控制。只支持单播
发送的数据是有顺序的
提供流量控制和拥塞控制动态调节传输速度,以便适应网络状况
比如http,https,ftp,ssh,smtp用tcp
2.TCP
解决的问题:要使通信双方都知道互相存在,协商参数(报文段长度、窗口大小)、安全的传输资源
1.流量控制
让发送方发送速度不要太快,让接收方来得及接收。控制的是发送方和接收方之间的流量,确保接收方能处理接收到的数据,不会出现数据丢失。
通过滑动窗口机制
建立连接时,接收方告诉发送方,我的窗口为400字节。发送方发送400字节,接收方说我接受到了,但窗口变成200字节。发送方再发送200字节,接收方说我有一个地方没收到,你再发一下。发送方再次重传了丢失的数据。
2.拥塞控制
防止网络中发生拥塞,确保网络的高效传输。根据网络的状态动态调整发送方的发送速率。控制的是整个网络中的数据流量,尤其是路由器和交换机的负载,确保不会发生网络拥塞。
- 慢开始:开始时发送速率较低,然后逐渐增加,直到达到网络的拥塞窗口或发生丢包。
- 拥塞避免:当接近网络容量时,减缓发送速度,避免过度拥塞。
- 快重传:当检测到丢包时,快速重传丢失的数据包。
- 快恢复:丢包后恢复发送,但不立即恢复到最大速度,防止再次拥塞。
3.TCP如何保证可靠传输
- 建立连接时需要三次握手,断开连接要四次挥手。确保双方同步
- 将应用层的数据分段,每段包含一个顺序号。接收方通过顺序号来重组数据,确保数据不丢失,不乱序。
- 确认机制,接收方每次接收数据后,会发送一个ack确认报文。表示已接收
- 如果数据丢失,接收方会告诉发送方哪些数据没收到。由发送方重新发送
- 还有流量控制和拥塞控制来控制发送速率
4.TCP的三次握手和四次挥手
1.三次握手
第一次握手
客户端向服务端发送连接请求报文段。该报文段中包含自身的数据通讯初始序号。请求发送后,客户端便进入 SYN-SENT 状态。
第二次握手
服务端收到连接请求报文段后,如果同意连接,则会发送一个应答,该应答中也会包含自身的数据通讯初始序号,发送完成后便进入 SYN-RECEIVED 状态。
第三次握手
当客户端收到连接同意的应答后,还要向服务端发送一个确认报文。客户端发完这个报文段后便进入 ESTABLISHED 状态,服务端收到这个应答后也进入 ESTABLISHED 状态,此时连接建立成功。
这里可能大家会有个疑惑:为什么 TCP 建立连接需要三次握手,而不是两次?
这是因为这是为了防止出现失效的连接请求报文段被服务端接收的情况,从而产生错误。
tcp是全双工通信,客户端向服务端建立连接确认了,但是服务端向客户端没有确认
2.四次挥手
第一次挥手
若客户端 A 认为数据发送完成,则它需要向服务端 B 发送连接释放请求。(A告诉B我要释放连接了)
第二次挥手
B 收到连接释放请求后,会告诉应用层要释放 TCP 链接。然后会发送 ACK 包,并进入 CLOSE_WAIT 状态,此时表明 A 到 B 的连接已经释放,不再接收 A 发的数据了。但是因为 TCP 连接是双向的,所以 B 仍旧可以发送数据给 A。(B回答好的,然后A->B连接就释放)
第三次挥手
B 如果此时还有没发完的数据会继续发送,完毕后会向 A 发送连接释放请求,然后 B 便进入 LAST-ACK 状态。
第四次挥手
A 收到释放请求后,向 B 发送确认应答,此时 A 进入 TIME-WAIT 状态。该状态会持续 2MSL(最大段生存期,指报文段在网络中生存的时间,超时会被抛弃) 时间,若该时间段内没有 B 的重发请求的话,就进入 CLOSED 状态。当 B 收到确认应答后,也便进入 CLOSED 状态。
拓展:2和3可以合在一起吗
不可以,也许服务端还要发数据
5.应用层
它解决的是与应用程序间通信、数据交换和信息传递相关的问题。
1.端口号
- http 80
- https 443
- ftp 21/20
- DNS 53 将域名解析为IP 解析的过程总的来说,是先在本地缓存里寻找域名对应的IP地址,没有找到就去域服务器递归寻找,找到后返回给浏览器并存到本地缓存。
- sftp 22 基于ssh的安全文件传输协议
- ssh 22 远程登录
- SMTP 邮件 默认端口25,加密端口465
- DHCP 动态主机配置协议 自动分配IP地址
- Telnet 23 测试端口通不通
2.CS架构和BS架构
cs架构和bs架构是当今互联网常见的网络架构模型
bs架构是客户端是浏览器的架构,开发简单,维护容易,升级和部署集中管理,跨平台性较强,但性能低。一般就是管理系统用这个,咱们中国人才网用的就是这种架构
cs架构客户端通常是应用程序或者app,开发较难不同平台需要不同的版本,维护较难,升级部署需要客户支持,较为麻烦。但性能高,一般游戏类的软件就是这个架构
3.动态主机DHCP协议
用于为网络中的设备自动分配IP地址以及其他网络配置(如子网掩码、网关地址、DNS服务器地址等)
- 家庭网络: 路由器通常充当DHCP服务器,为家中的设备分配IP地址。
- 企业网络: DHCP服务器用于为员工设备动态分配IP,减少网络管理员的负担。
- 公共网络: 酒店、机场、咖啡厅等公共Wi-Fi场所,为临时连接的设备分配IP地址。
4.HTTP1.0、HTTP1.1、HTTP2.0、HTTP3.0
HTTP1.0默认使用 Connection:cloose
,浏览器每次请求都需要与服务器建立一个 TCP 连接,服务器处理完成后立即断开 TCP 连接(无连接),服务器不跟踪每个客户端也不记录过去的请求(无状态)。
HTTP1.1默认使用 Connection:keep-alive
(长连接),避免了连接建立和释放的开销;通过 Content-Length 字段来判断当前请求的数据是否已经全部接受。不允许同时存在两个并行的响应。
HTTP2.0新特性
(1)二进制传输
http2.0将请求和响应数据分割为更小的帧,并且它们采用二进制编码(http1.0基于文本格式)。多个帧之间可以乱序发送,根据帧首部的流表示可以重新组装。
(2)Header压缩
Http2.0开发了专门的“HPACK”算法,大大压缩了Header信息。
(3)多路复用
http2.0中引入了多路复用技术,很好的解决了浏览器限制同一个域名下的请求数量的问题。
多路复用技术可以只通过一个TCP链接就可以传输所有的请求数据。
(4)服务端推送
HTTP2.0在一定程度上改不了传统的“请求-应答”工作模式,服务器不再完全被动地响应请求,也可以新建“流”主动向客户端发送消息。(例如,浏览器在刚请求html的时候就提前把可能会用到的JS,CSS文件发送给客户端,减少等待延迟,这被称为“服务端推送Server Push”)
Http3.0 抛弃tcp
Google在推行SPDY的时候意识到了上述http2.0一系列问题,于是又产生了基于UDP协议的“QUIC”协议,让HTTP跑在QUIC上而不是TCP上。从而产生了HTTP3.0版本,它解决了“队头阻塞”的问题。
- 特点:
(1)实现了类似TCP的流量控制,传输可靠性的功能。
(2)实现了快速握手功能(QUIC基于UDP,UDP是面向无连接的,不需要握手和挥手,比TCP快)
(3)集成了TLS加密功能
(4)多路复用,彻底解决TCP中队头阻塞的问题(单个“流”是有序的,可能会因为丢包而阻塞,但是其他流不会受到影响)
5.https
https是在应用层和传输层之间加了一个安全层,应用层与安全层进行加密,安全层再与传输层进行交互
1.客户端把它支持的加密算法传给服务端
2.服务端给客户端一个公钥和他的数字证书
3.客户端验证证书,发现这个公钥是我自己的,之后生成随机的对称秘钥,用公钥加密
4.用私钥解密获得秘钥
5.传输数据
签名:由私钥生成
传输的时候传数据和它独有的签名,别人收到用签名和数据对比,如果一样则安全,不一样就丢弃
证书:保护公钥不被篡改
6.加密算法
对称性加密算法:
对称性加密算法使用同样的密钥,用于加密和解密数据。存在问题密钥在传输过程中可能泄漏,不安全。尤其是在大规模的分布式系统中,秘钥管理更为复杂。但优点是加密速度快,主要用于文件加密。
- SM4:国密算法,之前我们用做加密日志
- AES
非对称加密算法:
非对称加密算法使用不同的密钥,其中一个用于加密数据,另一个用于解密数据。加密密钥被公开,而解密密钥则需要存储在安全的地方。加密数据比较安全,很难被破解。但速度太慢,涉及到数学的幂运算和取模的问题。所以一般是在登录时、或者一些验证功能使用。常见的非对称加密算法:
- RSA算法:是一种非对称加密算法,广泛用于数字签名和安全信任建立等领域。它能够支持多种密钥长度,通常用于加密短消息。
- SM2:也是国密算法,之前用做密码加密
散列算法:
-
MD5 (Message Digest Algorithm 5):MD5 是一个广泛使用的散列算法之一。它接收字符串作为输入,并生成具有固定大小的唯一的散列值。通常,它会生成一个 128 位长的十六进制数字,用于验证数据的完整性。
-
SHA (Secure Hash Algorithm):SHA 是另一个常用的散列算法。它有几种不同的变体,但最广泛使用的变体是 SHA-256 和 SHA-512。SHA-256 生成一个 256 位长的散列值,而 SHA-512 生成一个 512 位长的值。
-
MurmurHash:MurmurHash 是一个比 MD5 和 SHA 更快的散列算法。它在散列大量数据时非常高效,并且生成的散列值具有良好的随机性和均匀分布性。它被广泛用于哈希表等需要高效哈希函数的场景。
https为什么安全
HTTPS的安全性建立在Transport Layer Security(TLS)协议(前身是Secure Sockets Layer(SSL)协议)上。80和443
https是在应用层和传输层之间加了一个安全层,应用层与安全层进行加密,安全层再与传输层进行交互
HTTPS之所以安全,是因为使用了一些加密技术和安全机制,包括:
-
数据传输加密:HTTPS使用公钥加密和私钥解密的方式对数据进行传输加密,防止数据传输过程中被窃取或篡改。
-
客户端验证:HTTPS实现了双向认证,即客户端和服务器双方都需要进行验证,确保通信双方的身份和合法性。
-
数据完整性保护:HTTPS使用数据摘要技术和数字签名机制来保护数据的完整性。在数据传输结束后,接收方可以通过验证数据摘要和数字签名来确定数据是否被篡改。
-
防止中间人攻击:HTTPS使用非对称加密算法来保证数据传输的安全性,避免中间人攻击。这是因为HTTPS使用公钥加密和私钥解密的方式,数据只能由私钥持有者读取,即使在传输过程中被截获,攻击者也无法解密。
综上所述,HTTPS之所以安全,是因为它使用了多种加密技术和安全机制,确保了数据在传输过程中的保密性、完整性和合法性。这些技术和机制为网站和用户之间的数据传输提供了强有力的安全保障。
7.DDOS攻击
分布式拒绝服务攻击,就是大量分布式设备想你发出海量请求,导致你的服务器带宽被占满,耗费系统资源,无法处理合法用户的请求
一般上高防服务器,过滤流量,但成本较高
可以上CDN,静态资源放到CDN上,设置黑白名单,项目使用分布式部署采用负载均衡策略分散给多个服务器
8.黑客攻击的方式
DDOS攻击
网络钓鱼攻击:捆绑软件,邮件,不明链接。实际上都是运用系统的bug进行攻击
XSS攻击:向页面中插入恶意脚本,获取用户信息
SQL注入:插入而已SQL语句,拼接sql后可能导致数据库崩溃
密码攻击:暴力破解密码,彩虹表攻击,典型是MD5密码
9.ftp
20数据端口,21命令端口
是一种文件传输协议,通过计算机网络在客户端和服务器之间传输文件
FTP 工作在 客户端-服务器模式,用户可以通过客户端登录ftp服务器,使用tcp连接进行文件的上传、下载、删除等等操作。
FTP
有两种工作模式:主动模式port和被动模式pasv
- 主动模式:客户端发起tcp连接用于传输命令,一般是21端口。之后服务端再发起新的tcp连接用于文件传输,一般是20端口。数据通道由服务器主动发起,在没有数据传输时通道关闭。
- 一般情况下都用主动模式,用固定端口传输数据
- 被动模式:客户端发起tcp连接用于传输命令,一般是21端口。之后通过命令告诉ftp服务器要开启哪个端口进行数据传输。ftp服务器需要被动等待客户端建立数据通道,所以是被动模式
- 缺点:很多防火墙设置时不允许接受外部发起连接,油坊桥的ftp服务器就不支持被动模式
10.telnet
远程登录服务,建立tcp连接,如今在很多场景下逐渐被 SSH 等更安全的协议替代。
可以根据端口和ip连服务器,可以测试远程主机端口是否开放。
11.DNS
是一种域名解析服务,可以将域名解析为IP地址。
DNS 53 将域名解析为IP 解析的过程总的来说,是先在本地缓存里寻找域名对应的IP地址,没有找到就去域服务器递归寻找,找到后返回给浏览器并存到本地缓存。
12.URL
协议、域名、路径、文件名
13.http
HTTP是超文本传输协议、应用层的协议,是一种用于在客户端和服务器之间传输超文本数据(如HTML文档、图像、视频等)的协议。它是Web上数据交换的基础,定义了浏览器如何与服务器进行通信、请求数据以及响应数据。
14.sftp和ftps的异同点
- SFTP 是基于 SSH (Secure Shell) 的协议。它不是传统的FTP协议的扩展,而是完全不同的协议,通过SSH进行加密传输。SFTP通过SSH的标准端口 22 进行通信。这使得它的网络配置较为简单,因为很多防火墙和路由器默认都允许SSH流量。
- FTPS 是在传统 FTP 协议的基础上,通过 SSL/TLS 来增加安全性。它允许FTP协议的命令和数据传输被加密。FTPS通常使用 21 端口(FTP的标准端口),但是在加密连接时,数据通道可能使用其他端口(在数据连接时的动态端口范围)。这种动态端口分配可能会给防火墙配置带来复杂性。
15.签名
防止数据传输过程被篡改,使用算法生成签名并随着数据一起发送,发送方用私钥加密,保证签名的唯一性,验证时用公钥解密。
首先发送时将数据进行哈希处理,比如用md5,生成一个固定长度的哈希值。将这个哈希值用私钥加密生成签名,将消息和签名一起发送给接收方。
接收方通过公钥对数字签名进行解密,计算消息的哈希值进行验签。如果哈希值相同则数据没有被篡改,如果不同则数据被篡改,数据就丢弃。
16.数字签名的特征
1.唯一性:每个签名都是唯一的,每个消息对应的签名都不同
2.不可伪造性:签名都是由私钥生成,攻击者没有私钥无法伪造。
3.不可篡改:如果消息被篡改,就会导致签名验证失败
4.可验证性:任何人都可以通过公钥进行验证,签名的验证公开透明
5. 不可抵赖的:签名者不可以否认自己的签名
2.计算机组成原理
电脑开机提示音
提示声音 是计算机开机时 BIOS/UEFI 固件执行硬件自检时发出的蜂鸣声。不同电脑提示音不同
提示音 | 含义 |
---|---|
1短 | 系统启动正常。 |
1长 2短 | 显卡错误(显卡或其连接的问题)。 |
1长 3短 | 键盘控制器问题(键盘或主板故障)。 |
连续蜂鸣 | 内存或电源问题。 |
主板:是计算机非常重要的部件,上面安装了BIOS芯片、IO控制芯片、鼠标键盘显示器各种接口、扩展插槽(cpu插槽、内存插槽)、电源等等
BIOS
- 开机后负责硬件初始化,检测和识别 CPU、内存等硬件设备,分配系统资源。执行加电自检(POST),全面检查硬件系统,通过蜂鸣或错误代码提示硬件故障
- 按照预设启动顺序寻找操作系统引导程序,实现系统启动引导。
- 为基本输入 / 输出操作提供底层支持,如处理键盘输入和屏幕最基本显示。
1.计算机系统概述
1.计算机系统
计算机系统=硬件+软件
2.计算机系统的发展趋势
巨型化:计算速度更快、存储容量更大、功能更强
微型化:体积越来越小
网络化:随着计算机的普及,计算机网络也逐渐深入我们工作和生活中
智能化:智能计算机将代替大部分的人类劳动
3.计算机发展历程
- 第一代,电子管计算机,无操作系统
- 第二代,晶体管计算机,汇编语言
- 第三代,集成电路,半导体存储器
- 第四代,超大规模集成电路
4.冯诺依曼体系结构和哈佛结构
1.冯诺依曼结构又被称为普林斯顿结构
以运算器为中心
目前大部分计算机的实现方式
确定了现代计算机的五大部分:输入设备、输出设备、存储器、运算器、控制器
-
单一存储器:程序和数据都放在内存中,彼此不分离(冯诺依曼机的基本思想)
-
统一总线:指令和数据通过同一条总线传输,称为 "冯诺依曼瓶颈"。
-
顺序执行:程序指令按照存储的顺序逐条执行(可结合跳转指令实现非线性执行)。
冯诺依曼瓶颈:指令和数据共享总线,传输速率受限。
指令:操作码和地址码组成,操作码表示执行什么操作,地址码表示操作数在存储器中什么位置
2.哈佛结构
程序和数据放在不同内存中是哈佛结构
-
分离存储器:指令和数据分别存储在独立的存储器中,互不干扰。
-
独立总线:指令和数据各自通过独立的总线进行传输。
-
并行访问:指令和数据可以同时访问,提高处理效率。
比如大部分单片机
3.二者对比
冯诺依曼结构在设计和实现上更为简单,成本更低,更为灵活;哈佛结构更复杂,但可在性能上占优,支持较高的并行性,效率更高,可靠性高
冯诺依曼结构更适合通用计算设备,比如台式机、笔记本;哈佛结构更适合对性能和实时性要求较高的嵌入式和专用系统,比如航空航天领域,电子信号领域等等。
4.冯诺依曼思想
1.计算机由运算器、控制器、输入设备、输出设备、存储器组成
- 输入设备:人的信息转化为计算机能识别的信息。鼠标、键盘
- 输出设备:计算机的信息转化为人熟悉的信息。显示器、打印机
- 存储器
- 主存储器:存放程序与数据,直接与cpu交换信息。又叫,内存、主存
- 辅助存储器:又称外存,帮助主存储器存更多信息。用的时候再调入主存
- 运算器:核心为算术逻辑单元(ALU),主要做算术运算和逻辑运算
- 控制器:核心为控制单元(CU)大脑控制指令的执行,读取存储器,将机器语言的指令翻译为具体的控制信号
2.计算机采用二进制传输数据(实现简单、逻辑简单、符合人的思维)
3.程序和数据都存在存储器中,计算机就能自动执行指令
5.现代计算机的结构
现代计算机已存储器为中心可以让io设备直接与存储器交换数据,提高效率
- 输入设备:人的信息转化为计算机能识别的信息。鼠标、键盘
- 输出设备:计算机的信息转化为人熟悉的信息。显示器、打印机
- 存储器
- 主存储器:存放程序与数据,直接与cpu交换信息。又叫,内存、主存
- 辅助存储器:又称外存,帮助主存储器存更多信息。用的时候再调入主存
- 运算器:核心为算术逻辑单元(ALU),主要做算术运算和逻辑运算
- 控制器:核心为控制单元(CU)大脑控制指令的执行,读取存储器,将机器语言的指令翻译为具体的控制信号
6.计算机软件
应用软件:为解决某个领域问题而编制的软件
系统软件:为了让用户高效的使用和管理计算机而开发的软件
编译和解释
编译和解释是两种将高级编程语言翻译为机器可以执行的语言(如机器码或字节码)的基本方法。它们在执行方式、效率和应用场景上有显著差异。
特性 | 编译 | 解释 |
---|---|---|
翻译方式 | 一次性翻译整个程序,生成可执行文件。 | 逐行翻译和执行源代码。 |
执行效率 | 高,目标代码直接运行,无需二次翻译。 | 低,每次运行都需要解释源代码。 |
错误检测 | 在编译阶段检测,适合发现语法和语义错误。 | 运行时检测,错误可能延迟暴露。 |
平台依赖性 | 可执行文件与特定平台绑定,移植性差。 | 源代码可在有解释器的任意平台上运行,跨平台性好。 |
开发效率 | 修改代码后需重新编译,调试效率较低。 | 修改代码后无需重新翻译,适合快速开发和调试。 |
典型语言 | C、C++、Go。 | Python、JavaScript、PHP。 |
7.计算机系统的分层思想
8.计算机性能怎么看
- cpu:
- 核心数越多越好,核心数越多说明能并行处理的任务越多
- 线程越多越好,提高线程的并行能力,可以提高核心的利用率
- 主频(时钟频率)表示CPU 每秒可以完成的时钟周期数量越高越好,说明单位时间内计算的越快。时钟周期是处理器完成某些基本操作(如读取数据、执行计算、写入数据)所需的最小时间单元。
- IPC每个时钟周期内处理器可以执行的指令数,越多越好,目前>1
- CPI执行一条指令所需要的时钟数量
- MIPS每秒执行多少百万条指令
- FLOPS每秒浮点运算次数越大越好
- 基础频率:CPU正常工作频率
- 最大睿频:CPU短时间可以达到的最大频率
- TDP功耗
- 机器字长是指CPU一次能够处理的二进制数据的位数,越长越好
- cpu缓存
- 主存(内存)
- 主存容量
- 频率,频率越高,内存在单位时间内可以传输更多数据。
- 内存时延,从 CPU 发出请求到内存数据返回所需的时钟周期数
- 通道数,通道数越多,内存带宽越高,性能越好。,双通道比单通道的带宽理论上翻倍。
- 带宽
- 吞吐量
- cpu的处理速度
- 内存的访问速度
- 外存的访问速度
- 响应时间
- CPU执行时间
- 系统访问内存和外存的时间
9.定点数和浮点数
定点数:表示整数
补码用于加减
编码方式 | 特点 | 主要作用 | 是否直接用于运算 |
---|---|---|---|
原码 | 符号位+数值直接表示 | 显示数值符号与大小 | 否 |
补码 | 负数通过取反加 1 表示 | 简化加减法运算,正数的补码与原码相同。负数的补码:其原码符号位不变,数值部分按位取反后加 1。 | 是 |
反码 | 负数通过取反表示 | 补码的中间形式,理论概念,表示负数 | 否 |
移码 | 所有数值均为正数,偏移表示 | 浮点数阶码,避免负数处理 | 否 |
浮点数
0 | 10000010 | 10100000000000000000000 |
单精度32位浮点数,双精度64位浮点数,可能在运算中累计舍入误差。
2.CPU
超大规模集成电路,主要由运算器、控制器、寄存器组成。
作用
- 执行指令: 从内存中读取程序指令,按照指令完成任务。
- 计算处理: 通过算术逻辑单元(ALU)完成数学运算和逻辑操作。
- 控制协调: 控制计算机各部分的运行,如内存、输入设备、输出设备等。
- 数据存取: 处理数据的存储和读取,包括寄存器和内存的交互。
1.运算器
- 定点运算器:以算术逻辑单元ALU为核心,可以做算数和逻辑运算
- 浮点运算器:以浮点运算单元FPU为核心,可以做算数运算(不重要)
2.控制器
3.存储器
1.存储器的分类
- 存储介质
- 磁存储器(磁带、机械硬盘)
- 光存储器(光盘)
- 半导体存储器(内存、固态硬盘)
- 存储方式
- 顺序存储器:存储单元只能按顺序访问(磁带)
- 随机存储器:根据存储单元地址进行存取(固态硬盘、内存)
- 直接存储器:机械硬盘
- 可改写性
- 读写存储器
- 制度存储器
- 可保存性存储器
- 易失性存储器:断电丢失(内存)
- 非易失性存储器:(固态硬盘)
- 功能和存取速度
- 寄存器存储器:CPU寄存器
- 高速缓存存储器:cache
- 主存储器:内存
- 辅助存储器:外存
2.存储速度
1.大端和小端
大端:高位先存,,符合人类阅读习惯。高位字节存储在低地址,低位字节存储在高地址。常用于网络协议(如TCP/IP)。网络字节序采用大端格式,便于跨平台通信。
小端:低位先存,直观性较差。低位字节存储在低地址,高位字节存储在高地址。常用于现代大多数处理器(如x86、x86-64架构)。
- 大端适合人类阅读和网络通信。
- 小端更高效地支持现代计算机处理器的存储和运算。
- 大端和小端各有应用场景,开发过程中需要注意跨平台和数据传输的兼容性问题。
3.寄存器与高速缓存
-
寄存器是计算的核心:
- 所有的算术和逻辑运算都在寄存器中完成,寄存器的效率直接影响 CPU 的计算性能。
-
高速缓存减少数据等待时间:
- Cache 提供频繁访问数据的快速存取,避免 CPU 长时间等待主存响应。
-
数据流示意:
- CPU 首先从寄存器中读取数据。如果寄存器中没有所需数据,查询高速缓存(L1 → L2 → L3)。若缓存也没有,则访问主存。
4.MDR与MAR
MDR 是用于暂存数据的寄存器。它的作用是暂时存储从主存读取的数据或准备写入主存的数据。
MAR 是用于暂存地址的寄存器。它的作用是保存主存中要访问的单元地址。
MDR 和 MAR 的工作流程可以分为两种情况:读操作 和 写操作。
1. 读操作(从主存读取数据到 CPU):
- CPU 将目标内存地址加载到 MAR 中。
- 内存控制器根据 MAR 的地址从主存中读取数据。
- 读取到的数据被暂存到 MDR 中。
- MDR 中的数据被传输到 CPU 的寄存器或其他执行单元。
2. 写操作(将数据从 CPU 写入主存):
- CPU 将目标内存地址加载到 MAR 中。
- CPU 将要写入的数据加载到 MDR 中。
- 内存控制器根据 MAR 的地址将 MDR 中的数据写入主存。
作用
CPU 与内存高效通信的关键
- 没有 MAR,无法快速定位要访问的主存单元。
- 没有 MDR,无法缓存主存数据,程序对内存的访问效率会极低。
5.机器字长与存储字长
机器字长:CPU一次能够处理的二进制数据的位数
存储字长:主存中一个存储单元存储的二进制位数
每个存储单元通常是 1 字节(8 位)。在某些架构中,多个字节可以组合成一个字(如 16 位或 32 位)。
6.SRAM和DRAM
RAM:随机存储器,可以读可以写,用户的数据。断电遗失
ROM:只读存储器,厂家的数据。断电不丢失
特性 | SRAM(静态随机存取存储器) | DRAM(动态随机存取存储器) |
---|---|---|
速度 | 更快,通常用于缓存(CPU缓存)。 | 较慢,但足够用于主存。 |
容量 | 单元占用面积大,存储密度较低。 | 单元占用面积小,存储密度较高。 |
功耗 | 静态功耗低,动态功耗高。 | 需要定期刷新,总功耗高于SRAM。 |
成本 | 制造复杂,成本高。 | 制造简单,成本低。 |
应用场景 | CPU缓存、嵌入式系统中的高速缓存等。 | 计算机主存、图形卡显存等。 |
存储保持性 | 在供电情况下,数据可持续保持。 | 数据需要定期刷新才能保持。 |
7.主存优化
1.双端口存储器
双端口存储器是一种允许同时进行两个独立访问的存储器。
- 一个端口用于读取,另一个端口用于写入。
- 或者两个端口都可同时读取或写入(依赖于具体设计)
提高了存储器的并行访问能力,但硬件实现复杂,成本高。
应用:图形显存(GPU 内存)、网络交换机中的高速缓冲存储器。
2.单体多字存储器
单体多字存储器的设计中,每个存储体能存储多个字(word),并允许一次访问多个字。
减少存储访问的时间,提高数据吞吐量,但并行性较低,多个处理器访问时可能出现竞争。
应用:大块数据传输场景,如内存与缓存之间的数据交互。
3.多体交叉存储器
- 多体交叉存储器通过将存储器划分为多个存储体(bank),不同的存储体可以独立工作。
- 通过交叉分配地址,确保不同的存储体可以同时处理多个请求。
提高了存储器的并行性,避免单体繁忙时的瓶颈,如果多个请求集中访问同一存储体,可能会导致冲突。
- 双端口存储器 适合需要同时进行多个读写操作的场景,如 GPU 的显存。
- 单体多字存储器 适合数据传输量大但并行需求较低的场景,如缓存与主存之间的大块数据交换。
- 多体交叉存储器 是一种高并行设计,适合多核处理器或高性能计算环境中频繁的并发访问需求。
8.Cache
内存传输的速度跟不上cpu处理的速度,缓存就诞生了,CPU将重复读取的数据放入缓存,可以提高cpu的命中率
1.作用
-
加速数据访问
Cache 的速度比主存快得多,利用缓存存储经常访问的数据,可以减少等待时间。 -
降低内存带宽压力
通过缓存可以减少主存访问次数,从而降低主存的负载,提高系统整体效率。
2.工作流程
Cache 基本工作流程如下:
- 命中(Cache Hit):当处理器需要访问某数据时,若该数据在 Cache 中,则直接读取缓存数据,速度较快。
- 未命中(Cache Miss):若数据不在 Cache 中,系统会从主存加载数据到缓存,然后再提供给处理器。
- 替换(Replacement Policy):当 Cache 已满时,使用某种替换算法(如 LRU、FIFO)将旧数据替换为新数据。
3.分类
-
L1 Cache(一级缓存)
- 位于 CPU 内部,靠近处理器核心。
- 速度最快,容量最小(通常 32KB - 128KB)。
- 通常分为指令缓存(I-Cache)和数据缓存(D-Cache)。
-
L2 Cache(二级缓存)
- 位于 CPU 核心外部,但仍在 CPU 内部。
- 速度比 L1 缓存稍慢,容量较大(通常 256KB - 数 MB)。
-
L3 Cache(三级缓存)
- 通常为共享缓存,供多核处理器共享使用。
- 速度较慢,但容量更大(数 MB - 数十 MB)。
3.替换策略
-
LRU(Least Recently Used)
- 替换最久未使用的数据。
-
FIFO(First In First Out)
- 替换最早进入缓存的数据。
-
随机替换(Random Replacement)
- 随机选择一个数据块替换。
-
LFU(Least Frequently Used)
- 替换访问频率最低的数据。
4.映射方式
- 直接映射:直接映射将主存中的每个块固定映射到 Cache 的一个特定位置。查找速度快但冲突率可能较高。嵌入式可能使用直接映射,实现简单,减少成本。
- 全相联映射:全相联映射允许主存的任意块加载到 Cache 的任何行。Cache 使用效率较高,冲突率为0,但查找速度和复杂度较高,不适合大容量
- 组相连映射:组相联映射是直接映射和全相联映射的折中方案,将 Cache 分为多个组,每组中的行允许灵活映射。冲突率较低,查找速度稳定,是主流 Cache 结构。
冲突问题:多个主存块可能映射到同一个 Cache 行(冲突失效),即使 Cache 未满,也可能造成频繁替换。
9.虚拟存储器
他是一种技术,没有实体。它通过为程序提供一种连续的、较大的地址空间,将物理内存(主存)和外存(如硬盘)结合起来,使程序能访问比实际物理内存容量更大的地址空间。
-
虚拟地址空间(Virtual Address Space)
- 每个进程拥有独立的虚拟地址空间,程序的代码和数据以虚拟地址为基础操作,而不直接使用物理地址。
- 程序认为自己拥有一个完整的、连续的内存地址空间。
-
地址映射(Address Mapping)
- 由**内存管理单元(MMU)**将虚拟地址映射到物理地址。
- 若访问的虚拟地址未映射到物理内存,则触发缺页异常,从外存加载数据到内存。
-
按需加载(Demand Paging)
- 只有在程序真正需要时,才将数据从磁盘加载到内存,节省了内存空间。
1.优势
(1)支持多任务
- 每个进程拥有独立的地址空间,避免内存冲突和数据损坏。
(2)优化内存利用
- 虚拟存储器通过按需加载和页面置换,支持程序运行在有限的物理内存中。
(3)提升系统稳定性和安全性
- 通过内存隔离,防止一个程序的崩溃影响其他程序或操作系统。
(4)开发简单
- 程序员不需要关心物理内存的实际布局,只需按照虚拟地址编写代码。
2.虚拟存储器管理方式
逻辑地址到物理地址的映射
1.页式存储
页式存储将虚拟地址空间和物理地址空间划分为固定大小的块(页和页框),以解决内存碎片问题。虚拟地址空间被分为页,物理内存被分为等大小的页框。
通过页表实现虚拟地址到物理地址的映射。
可能产生内部碎片(页内未使用的空间)。应用于简单操作系统和嵌入式系统。
流程:
- CPU 通过虚拟地址中的页号查找页表。
- 页表提供对应的物理页框号。
- 结合页框号和页内偏移,得到物理地址。
2.段式存储
段式存储将程序划分为逻辑上不同的段(如代码段、数据段、堆栈段),以支持更灵活的内存分配。段的大小不固定,每个段对应一段逻辑内存。
通过段表实现虚拟地址到物理地址的映射。
容易产生外部碎片(段的大小可变,内存空间可能难以紧凑分配)。用于早期的操作系统系统
流程:
- CPU 通过虚拟地址中的段号查找段表。
- 段表提供段的起始物理地址和长度,校验偏移是否越界。
- 合法时,计算物理地址 = 段起始地址 + 段内偏移。
3.段页式
段页式存储结合了页式和段式的优点,将每个段再划分为固定大小的页,解决了段式的外部碎片问题。
虚拟地址分为多个段,每个段再分为固定大小的页。
页表和段表都需要额外存储,增加内存开销。现代计算机系统的主要内存管理方式(如 Linux、Windows 等)。
段页式存储的分层结构能够兼顾灵活性和高效性,解决了段式和页式的局限性,因此被广泛采用。
流程:
- CPU 通过虚拟地址中的段号查找段表,找到段起始地址。
- 根据页号查找对应段的页表,找到页框号。
- 结合页框号和页内偏移,计算出物理地址。
3.缺页
操作系统内存管理中的一个重要概念,发生在程序访问的虚拟地址所对应的页面未加载到主存时。此时,系统需要从辅存(如磁盘或 SSD)中将所需页面加载到主存。
主存已满:替换算法
-
FIFO(先进先出算法)
- 替换最早进入内存的页面。
- 优点:简单实现;缺点:可能出现“Belady 异常”(更多内存反而导致更多缺页)。
-
LRU(最近最少使用算法)
- 替换最近最少被访问的页面,依据过去的访问历史。
- 优点:性能接近最优;缺点:需要硬件支持或额外开销。
-
OPT(最优置换算法)
- 替换未来最长时间内不会被访问的页面(理论最优解)。
- 优点:缺页率最低;缺点:无法实际实现,因为未来访问不可预测。
-
Clock(时钟算法)
- 近似 LRU,用一个指针和访问位(Reference Bit)来实现。
- 优点:性能和开销折中,常用于实际系统。
4.主存与辅存间的映射方式
全相联映射
10.寻址方式
- 立即寻址:操作数直接在指令中,无需访问寄存器或内存。int a = 5
- 寄存器寻址:操作数在寄存器中,只需访问一次寄存器,无需访问内存。int a = 5, b = 10; int c = a + b;
- 直接寻址:指令内带地址,需要访问一次内存。int a = 5; int b = a; // b 从 a 的内存地址中取值
- 寄存器间接寻址:指令中的地址(指针)在寄存器中,操作数在内存中。需要访问一次寄存器和内存。适用于指针操作
- 页面寻址:用于虚拟内存管理,它通过页表将虚拟地址转换为物理地址。比寄存器寻址多一步转换。
- 变址寻址:需要计算数组的偏移量,有异步ALU的算数运算
- 一级间接寻址:地址(指针)在内存中,CPU访问一次内存获得地址,再访问内存获得数
- 多级间接寻址寻址:访问多次内存
11.磁盘阵列
一开始我们电脑的数据是存储在一个硬盘中,为了提高安全性,我们用两块或者两块以上的硬盘组成一个磁盘组。但对于电脑来说这个磁盘组是一个硬盘,一旦硬盘出问题,我们组建的磁盘阵列就会帮我们恢复数据
raid0:把文件拆分开,随机存在硬盘上。比如我三个硬盘,就把文件拆成三份,速度快但安全性不高。
raid1:写入一个硬盘中后,再复制一份到其他硬盘。但容量太低,性能差
raid5:分开保存数据,但多保存了一个校验信息。如果某一块硬盘出问题,就可以通过校验信息恢复,但不能坏两块硬盘,只能坏一块。
12.故障
1.内存故障
开机后显示器没有画面,只听到哔哔哔的三声,可能是内存异常
关掉电源,打开机箱,拔掉多余内存,只留下最基本的内存。重新开机检测,如果还是同样的现象,表示此组内存有问题,将另外一组内存插上,然后继续检测,即可找出有问题的内存。
2.提示系统文件损坏,蓝屏
重启,系统会自动扫描恢复
4.总线
总线是计算机中用于传输数据、地址和控制信息的通道,它连接计算机的各个组件,如CPU、内存、输入/输出设备等,确保它们能够相互通信。
1.类型
- 数据总线: 用于在设备之间传输实际数据。宽度(如32位、64位)决定一次能传输的数据量。双向传输
- 地址总线: 用于传递内存地址或设备地址,决定CPU能访问的内存范围。单向传输
- 控制总线: 用于传递控制信号(如读、写、复位等)。
- 并行
- 串行
- 片内
- 系统总线
2.特点
当多个部件连接到总线上时,如果两个或两个以上部件同时向总线发送信息,就会导致信号冲突,传输无效。
因此,在某一时刻,只允许有一个部件向总线发送信息,而多个部件可以同时从总线上接收相同的信息。
所以,分时 和 共享 是总线的两个特点。
3.总线结构
- 单总线结构多见于早期和低成本系统,但性能有限。
- 双总线结构是现代计算机的主流,性能与复杂性兼顾。
- 多总线结构在高性能系统中更为常见,如现代PC和服务器,进一步优化性能和扩展能力。
4.性能指标
频率,带宽,是否总线复用(数据总线和地址总线),数据传输速度,延迟时间
5.I/O系统
I/O系统的组成包括硬件部分(I/O设备、接口、控制器、总线)和软件部分(I/O管理软件、设备驱动程序)
1.组成
1. I/O设备
- 输入设备: 用于向计算机提供数据或命令。
- 常见设备:键盘、鼠标、扫描仪、麦克风等。
- 输出设备: 用于将计算机的结果输出给用户。
- 常见设备:显示器、打印机、扬声器等。
- 输入/输出设备: 既能输入又能输出。
- 常见设备:触控屏、外部存储设备(如硬盘、U盘)。
2. I/O接口
用于连接计算机内部总线和外部设备的硬件模块,负责信号转换和传输。
- 功能:
- 将外部设备的信号转换为计算机可处理的格式,或反之。
- 提供缓冲区以适应不同设备的速度差异。
- 处理设备的控制信号(如启动、停止)。
- 示例:
- 串行接口(如UART)、并行接口(如LPT)、USB接口等。
3. I/O控制器
I/O控制器是I/O系统的重要组成部分,是连接CPU、内存与I/O设备的桥梁。
- 功能:
- 接受CPU的指令,控制外设执行操作。
- 处理设备间的通信和数据传输。
- 提供中断处理和DMA支持。
- 示例:
- 硬盘控制器、显示控制器、网络控制器。
4. I/O总线
总线是计算机内部数据、地址和控制信号的传输通道,用于连接I/O设备与其他组件。
- 分类:
- 数据总线: 传输数据。
- 地址总线: 标识设备的地址。
- 控制总线: 发送读/写信号和其他控制信息。
- 示例:
- PCIe、USB、SATA、I2C等。
5. I/O管理软件
操作系统中专门负责管理I/O设备的软件层,负责协调硬件与应用程序的交互。
- 功能:
- 提供设备驱动程序,使应用程序能方便地访问硬件。
- 管理设备的分配和释放,解决资源冲突。
- 提供缓存和缓冲功能,提高I/O效率。
- 组件:
- 设备驱动程序: 操作系统与硬件设备间的接口程序。
- I/O调度: 优化设备访问顺序,提升系统性能。
2.DMA
直接内存访问, 是一种计算机数据传输技术,允许外设直接与内存交换数据,而无需经过CPU的干预,从而提高数据传输效率,降低延迟,减少CPU的负担。尤其是大规模的数据传输时。
电脑的接口通常支持DMA,音频、视频数据的实时处理也与DMA技术的参与
3.操作系统
是管理计算机硬件和软件资源的系统软件,是系统资源的管理者,也是用户与计算机硬件之间的桥梁。操作系统的主要功能是为用户和应用程序提供一个方便、高效、稳定的计算机运行环境。 是计算机系统最基本的系统软件。
1.操作系统的主要功能
- 进程管理:管理进程的创建、调度、终止。以及进程之间的通信。
- 内存管理:管理计算机内存的分配以及回收,提供虚拟内存技术,使程序能运行在超过物理内存的空间中。
- 文件管理:管理磁盘空间,负责文件的创建、删除等操作
- 设备管理:管理输入输出设备等硬件资源,利用驱动程序使硬件资源和操作系统通信
- 提供图形化或者命令行用户界面,方便用户使用
- 提供数据校验机制:保证数据安全
2.操作系统的目标
- 高效性:管理计算机资源(CPU、内存、IO设备),提高资源的运行效率
- 方便性:为用户提供简单的接口,让用户无需知道功能的底层逻辑,即可完成操作。比如图形化界面和命令行界面。
- 可扩充性:也就是扩展性,操作系统想要增加功能,无需修改之前的功能。直接添加扩展插件即可。
- 开放性:操作系统提供统一的标准、协议和接口。让不同的厂家根据统一的标准开发扩展插件,进而促进协作和开发。
3.虚拟机
是通过软件模拟的计算机环境,可以运行如同真实计算机一样的操作系统和应用程序。
虚拟机的实现依赖于底层硬件或宿主操作系统,主要用于提供资源隔离和环境虚拟化。
一台计算机可以运行多台虚拟机。
4.操作系统特征
并发:操作系统能够同时处理多个任务或进程。(最基本的)
共享:资源共享是指多个用户或进程可以共同使用计算机资源。(最基本的)
虚拟:通过虚拟化技术把一个物理实体可以映射成若干个逻辑实体。(空分复用技术:虚拟存储器、时分复用技术:虚拟处理器)
异步:程序在操作系统的控制下可以异步运行,异步是指多个程序并发执行,但每个程序的执行不是一贯到底的,而是走走停停的。
5.操作系统的运行机制
操作系统的运行机制是通过在用户态和内核态之间切换,管理硬件资源并提供服务。程序运行时处于用户态,若需要访问硬件或系统功能(如文件、内存、设备),通过系统调用请求操作系统切换到内核态。内核负责调度进程、分配资源、处理中断和异常,确保多任务并发执行时的安全性和效率,最终返回用户态继续运行程序。这种机制实现了程序隔离、资源共享和系统保护。
6.中断和异常
中断:是由外部设备触发的,通知CPU要停止当前程序,处理外部的事件。比如键盘输入,语音通话。是操作系统响应外部设备的一种机制。
异常:是CPU内部触发的,用于处理程序运行中的错误。比如除以0。是操作系统保证程序安全的一种机制。
7.进程、线程、程序
进程:操作系统分配资源的基本单位,是正在运行的程序实例
线程:cpu分配资源的基本单位,是调度的基本单位,一个进程由多个线程组成
程序:就是一组计算机指令,是静态的。通常是编译好的,打开看是二进制字节码文件。一个程序启动可以对应多个进程
1.进程/线程状态
每个操作系统都有自己的进程状态
常见的是
新建:进程正在被创建,操作系统为其分配必要的资源,进行初始化等相关操作,尚未进入就绪队列
就绪:进程已准备好运行,只要分配时间片就能运行
运行:正在运行,执行指令中
阻塞:进程等待某些进程,或者自己睡
终止:操作系统回收其资源
2.进程之间通信
- 共享存储:进程共享同一块物理内存区域,直接读写数据,数据交换速度快,适合大量数据频繁交互场景。但因多进程同时访问,需搭配信号量、互斥锁等同步机制保证数据一致性,且对内存管理要求高,否则易引发内存问题。
- 消息传递:基于消息进行通信,消息含数据与标识信息,可发至消息队列或直接发给目标进程。支持异步通信,发送与接收进程无需同时运行,消息格式灵活,能满足多样需求,还可设优先级,优先处理重要消息,适用于分布式系统等复杂场景。
- 管道通信:和共享错处差不多,但数据读写一定是先进先出的,和管道一样。但只能半双工,常用于父子进程。如果需要全双工通信,需要建立两个管道。
8.同步、异步、互斥、锁
- 同步:每个进程按顺序执行
- 在一个生产者 - 消费者问题中,生产者生产数据,消费者消费数据。消费者不能在生产者没有生产数据之前就进行消费,它们之间需要同步。
- 异步:每个进程都是独立的不可预知的向前推进
- 互斥:互斥是指多个进程在访问共享资源时,同一时刻只能有一个进程访问该资源,其他进程需要等待这个资源被释放后才能访问。
- 锁:锁是一种同步机制。它用于控制多个进程或线程对共享资源的访问,确保在同一时刻只有一个进程或线程能够访问被保护的资源。(锁不一定都是互斥的,比如读写锁)
- 就像是一把真实的锁,当一个线程(或进程)获取了这把锁,就相当于拥有了对共享资源的 “钥匙”,可以访问该资源;而其他线程(或进程)如果想要访问这个资源,就必须等待这把锁被释放。
信号量
信号量是一种用于进程(或线程)同步和互斥的机制,它本质上是一个非负整数的计数器。信号量可以用于控制同时可以访问资源的线程数量,每个线程想要访问需要获取信号量许可
信号量的值代表了当前可用资源的数量或者某种许可的数量。例如,信号量初始值为 3,表示有 3 个资源可供使用。当一个进程(或线程)需要使用资源时,它会执行 P 操作,信号量的值减 1。如果信号量的值大于等于 0,该进程(或线程)可以继续访问资源;如果信号量的值小于 0,这个进程(或线程)就会被阻塞,等待其他进程(或线程)执行 V 操作来增加信号量的值。
管程
管程也是一种同步机制,可以理解为对象、也可以理解成一个工具。可以实现进程的同步,将共享资源以及对共享资源进行操作的代码封装到一个模块中。
9.死锁
死锁:多个线程想要获得对方手里的资源,会产生的循环等待现象
假设家里有一个卫生间,卫生间里有马桶和卫生纸这两种 “资源”。家里有两个人,分别是小明和小红。
小明进入卫生间后,占用了马桶(因为上厕所需要使用马桶这个互斥资源,同一时间只能一个人用),这时候他发现没有卫生纸了,于是他等着别人给他送卫生纸进来,并且他不会离开马桶(相当于请求和保持条件,他在占用马桶资源的同时请求卫生纸资源)。
与此同时,小红在卫生间外面,她拿着卫生纸,但是她也想上厕所,于是她等着小明从马桶上起来(相当于不可剥夺条件,小明在没上完厕所之前不会让出马桶,小红也不能强行让小明离开马桶)。
这样就形成了一个循环等待的情况,小明等卫生纸(小红拿着),小红等马桶(小明占着),两个人都无法完成上厕所这件事,这就产生了死锁。
1.死锁产生的条件
互斥条件:互斥是指多个进程在访问共享资源时,同一时刻只能有一个进程访问该资源,其他进程需要等待这个资源被释放后才能访问。
不剥夺条件:线程在持有锁后,不能被其他线程抢夺
请求和保持条件:进程已经获得一个锁,又想获得其他进程的锁
循环等待条件:1等2,2等3,3等4,4等1,这样的循环等待
2.如何预防死锁
破坏互斥条件,破坏不剥夺条件,破坏请求和保持条件,破坏循环等待条件
3.避免死锁
银行家算法:这是一种经典的死锁避免算法。把操作系统看作是银行家,资源看作是银行家的资金,进程看作是客户。银行家在分配资金(资源)之前,会检查如果满足客户(进程)的资金(资源)请求,是否会导致系统进入不安全状态。如果不会,就可以分配;如果会,就拒绝分配。但有些情况计算量会太大导致效率降低,银行家算法比较保守,可能会拒绝一些实际上不会导致死锁的资源请求,因为它只考虑最不利的情况。
4.死锁的检测和解除
- 资源剥夺法:从死锁进程那里剥夺部分资源给其他进程,使其他进程能够继续运行,从而打破死锁状态。例如,在一个数据库系统中,多个事务因为锁资源而死锁,系统可以强行剥夺某个事务的锁,让其他事务先完成,然后再重新分配资源给被剥夺的事务。
- 撤销进程法:直接撤销部分甚至全部死锁进程。当检测到死锁后,系统可以选择撤销造成死锁的一个或多个进程。例如,在一个多用户操作系统中,如果几个用户进程死锁,系统可以选择撤销其中一个用户进程,释放它所占用的资源,使得其他进程能够继续运行。不过这种方法可能会导致部分工作丢失,特别是当被撤销的进程已经执行了大量重要工作时。
- 进程回退法:让一个或多个死锁进程回退到足以打破死锁的地步。例如,一个进程在执行一系列操作后和其他进程死锁,系统可以让这个进程回退到之前的某个状态,释放它在后续操作中占用的资源,重新尝试执行操作,以避免死锁。
10.多道程序设计
计算机内存同时运行多个程序,在某个程序空闲时,cpu去处理其他程序,可以充分利用计算机资源。
假设有一个计算机系统,同时运行着文字处理软件、音乐播放软件和浏览器这三个程序。
文字处理软件正在进行文档内容的拼写检查,这个过程主要是 CPU 在进行计算处理;音乐播放软件此时正在从硬盘读取音乐文件数据到内存,然后将数据发送给声卡进行播放,这涉及到 I/O 操作;浏览器正在从网络下载网页内容,这也是 I/O 操作。
在单道程序设计下,系统一次只能运行一个程序。比如先运行文字处理软件,当它进行拼写检查时可以正常工作,但当它等待用户输入新内容(这类似于一种等待操作)时,CPU 就空闲了。如果此时需要播放音乐或者浏览网页,就必须等文字处理软件完全结束才能开始其他程序。
而在多道程序设计的系统中,当文字处理软件等待用户输入的间隙,CPU 可以切换去处理音乐播放软件读取音乐文件或者浏览器下载网页的任务。当音乐播放软件读取完一部分音乐文件后,等待声卡播放这部分音乐时(这也是一种等待 I/O 操作的情况),CPU 又可以切换去处理浏览器下载网页或者文字处理软件的新任务。这样,三个程序就好像同时在运行一样,充分利用了 CPU 和其他资源(如硬盘、网卡等),这就是多道程序设计在实际计算机应用中的一个典型例子。
作用
- 提高cpu利用率:在单道程序环境下,当一个程序进行 I/O 操作(如读取文件或等待网络响应)时,CPU 会处于空闲状态。而在多道程序设计中,当一道程序等待 I/O 操作完成时,操作系统可以将 CPU 分配给其他程序,使 CPU 一直处于忙碌状态。
- 提高I/O 设备利用率:多个程序可以同时使用不同的 I/O 设备。不同的程序可能对 I/O 设备有不同的需求,如一个程序使用打印机打印文档,另一个程序使用磁盘进行数据存储。多道程序设计使得这些 I/O 设备能够并行工作,提高了设备的整体利用率。
- 提高系统吞吐量:系统吞吐量是指系统在单位时间内完成的作业数量。多道程序设计能够在单位时间内处理更多的作业。
- 多道程序设计可以更有效地利用内存空间。不同大小的程序可以共享内存,操作系统可以根据程序的大小和需求动态地分配内存。例如,有一些小型的工具程序和大型的应用程序同时运行,操作系统可以合理地安排它们在内存中的位置,避免内存空间的浪费,使得内存资源能够得到更充分的利用。
4.数据库
1.数据库设计步骤
-
需求分析
- 与用户沟通,收集数据库功能期望,确定系统边界,梳理数据流程,将需求整理为具体的数据要求,包括类型、量和准确性等。
-
概念设计
- 运用实体 - 关系(E - R)模型抽象业务实体和关系,绘制 E - R 图,确定每个实体的属性。
-
逻辑设计
- 把 E - R 模型转换为关系模型,通过规范化处理关系模式以消除数据冗余和异常,同时确定数据的完整性约束条件。
-
物理设计
- 根据应用特点和性能要求,选择存储结构和存储方法,确定数据存储位置,设计合理的索引策略。
-
数据库实施
- 使用数据库管理系统工具创建数据库和表结构,加载数据,编写存储过程和视图。
-
数据库运行和维护
- 制定备份和恢复策略,监测和优化性能,维护数据安全,根据业务发展更新和扩展数据库。
2.事务的四大特性ACID
事务通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束
首先,什么是事务,我理解为一些操作的集合
1.原子性: undolog
事务包含的操作,是一个原子性操作,要么都成功,要么都失败
2.一致性: undolog
事务执行前后必须处于一致性状态
拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。
3.隔离性: MVCC
事务之间相互独立,一个事务执行不能被其他事务干扰
即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。
4.持久性: redolog
持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的
3.主键和外键
主键:主键是用于唯一标识表中每一行记录的一个或一组列。它就像是每个记录的 “身份证号码”,在整个表的范围内独一无二
外键:通常是另外一个表的主键,通常用于表示两个表之间的关联关系的。但对于在高并发的增删改时,会导致性能下降。不建议使用。
4.三范式
- 第一范式(1NF)
- 要求所有属性都是不可再分的基本数据项,确保每一列具有原子性。例如,不能将多个联系方式放在同一列,要拆分成如手机号码、电子邮箱等独立的列。这是关系模式规范化的基础,使数据结构更清晰,便于存储和操作。
- 第二范式(2NF)
- 在 1NF 基础上,非主属性要完全函数依赖于主键,不能部分依赖。比如在包含复合主键(订单编号,产品编号)的 “订单详情” 表中,若存在只依赖产品编号的非主属性 “产品名称”,就不符合 2NF,应将其拆分,减少数据冗余,提高数据一致性和维护便利性。
- 第三范式(3NF)
- 在 2NF 基础上,非主属性既不传递依赖于主键,也不传递依赖于其他非主属性。如在 “学生” 表中,“班主任姓名” 通过 “班级编号” 传递依赖于 “学号”,就不符合 3NF,通过拆分表来避免传递依赖,进一步减少数据冗余,降低更新异常的可能性,提升数据库性能和数据完整性。
5.表和视图
- 定义与本质:表是实际存储数据的结构,以行列形式物理存储数据;视图是虚拟表,基于表的查询结果定义,本身不存储数据 。
- 数据操作:表可直接进行插入、更新、删除操作;视图数据更新受限制,复杂视图通常无法直接更新。当表中数据改变时,视图也随之改变。
- 存储与性能:表随数据量增加占用更多空间,查询涉及实际数据读取;视图不占存储空间,但查询需依定义执行查询,性能因定义复杂程度而异。
6.什么是数据库管理系统DBMS
数据库又叫数据库管理系统,是系统软件,位于用户和操作系统中间。主要是对数据进行管理和维护。根本目的是数据共享
1.数据定义功能:使用DDL语句创建数据库、创建表、修改表等
2.数据库操作功能:使用DML语句对数据库进行增删改查操作
3.数据库权限管理功能:有用户认证功能和权限校验功能
4.数据完整性、一致性:使用事务管理实现数据的完整性和一致性
5.数据备份功能:通过日志文件可以恢复数据
7.系统故障时数据库恢复策略
首先要确认数据库的架构类型和恢复的时间点,如果是数据库集群的话,就使用binlog日志恢复数据库,binlog记录的是逻辑日志,可以直接恢复至系统故障时期的时间点。
如果只有一个数据库的话,先停掉数据库,再使用redolog重做日志恢复数据,如果有些事务没提交,再使用undolog日志恢复数据。
5.网工
1.软件安装
链接:https://pan.baidu/s/1GZ65ElkeZIe9VoBl53873A
提取码:e6n9
依次安装:WinPcap、Wireshark、VirtualBox、eNSP