Computers

计算机原理

Posted on 03-05 2020,14 min read

计算机原理


Organized by安南 City

Completion time2020-03-05

Send error to emailcity@nanzc.com


是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。

  • **程序自动化:**可将预先编译好的程序组纳入计算机内存,在程序的控制之下,计算机可以连续、自动地工作,不需要人为的干预。
  • **高速:**当今计算机的运算速度已经达到每秒万亿次,普通电脑也能达到每秒亿次以上,使大量复杂的科学计算问题能够得以解决。

展现形式:硬件 => 系统软件 == 操作系统 => [ 程序设计语言 ] => 应用软件 => 用户

 

层次结构


计算机系统层次结构,指的是计算机系统由硬件和软件两大部分所构成,而如果按功能再细分,可分为7层。把计算机系统按功能分为多级层次结构,就是有利于正确理解计算机系统的工作过程,明确软件,硬件在计算机系统中的地位和作用。

应用软件

应用语言级(应用程序):

这一级 是为了使计算机满足某种用途而专门设计的,因此这一级语言就是各种面向问题的应用语言。

系统软件

高级语言级(高级语言):

这级的机器语言就是各种高级语言, 通常用编译程序来完成高级语言翻译的工作。

汇编语言级(汇编语言)

这级的机器语言是汇编语言,完成汇编语言翻译的程序叫做汇编程序。

操作系统级(操作系统):

从操作系统的基本功能来看,一方面它要直接管理传统机器中的软硬件资源,另一方面它又是传统机器的延伸。

软硬件分界

传统机器级(机器语言):

这级的机器语言是该机的指令集,程序员用机器指令编写的程序可以由微程序进行解释。

硬件

微程序级(微程序):

这级的机器语言是微指令集,程序员用微指令编写的微程序,一般是直接由硬件执行的。

硬联逻辑级(硬联逻辑):

这是计算机的内核,由门,触发器等逻辑电路组成。

 

构成


计算机的结构发展主要依赖于冯·诺依曼结构,以此为基础演变成了现代计算机的结构。

冯·诺依曼结构的要点:

  1. 采用二进制。
  2. 程序存储、顺序执行
  3. 计算机由五个部分组成。

 

硬件


  • 冯·诺依曼结构,以运算器为中心。
    1. 运算器: 是负责算术运算与逻辑运算,与控制器共同组成了中央处理器 (CPU)
    2. 控制器: 负责发送和接收指令
    3. 存储器: 用来存储程序和各种数据信息的记忆部件
    4. 输入设备: 用来进行输入的设备。如鼠标、键盘...
    5. 输出设备: 用来输出的设备。 如显示器、音箱...

  • 现代计算机,以存储器为中心。
    1. CPU(Central Processing Unit,中央处理器):
      • ALU(Arithmetic Logic Unit,算术逻辑单元)
      • CU(Control Unit,控制单元)
    2. I/O设备(受CU控制)
    3. 主存储器(Main Memory,MM)
      • RAM(随机存储器):又称内存, 基于电存储,停电丢失,速度快 --- 随时读写,临时存储
      • ROM(只读存储器):一经写入,无法修改,只能读取。如:BIOS芯片...

 

软件


软件本身是一堆数据,运行软件时,加载到内存,CPU到内存读取数据,通过运算再显示出来。

  • 系统软件:基于硬件
  • 应用软件:基于系统软件

 

数据


计算机采用二进制的主要原因:

  • 技术实现简单:计算机由逻辑电路组成,只有两个状态,开关的接通和断开,正好对应 1 和 0
  • 简化运算规则
  • 适合逻辑运算
  • 易于进行转换:二进制与十进制之间易于转换
  • 抗干扰能力强,可靠性高

 

网络


每台计算机需要互相通讯需要用到网络协议,互联网本质是一系列网络协议

局域网: 一种覆盖一座或几座大楼、一个校园或者一个厂区等地理区域的小范围的计算机网。
城域网: 一种界于局域网与广域网之间,覆盖一个城市的地理范围,用来将同一区域内的多个局域网互连起来的中等范围的计算机网。
广域网: 一种用来实现不同地区的局域网或城域网的互连,可提供不同地区、城市和国家之间的计算机通信的远程计算机网。 ( 如:Internet 因特网)

 

OSI 七层协议(网络标准)


互联网协议按照功能不同分为 OSI 七层 或 TCP/IP 五层 或 TCP/IP 四层 。主要讲解 TCP/IP 五层 。

对应如下:

TCP/IP 四层 TCP/IP 五层 OSI 七层
应用层 应用层 应用层
表示层
会话层
传输层 传输层 传输层
网络层 网络层 网络层
网络接口层 数据链路层 数据链路层
物理层 物理层

 

物理层


由来计算机之间需要用(光缆、电缆、双绞线、无线电波等连接,完成组网,才能通讯

功能主要是基于电器特性发送高低电压(电信号),高电压对应 1,低电压对应 0

 

数据链路层


由来单纯的电信号 0 和 1 没有任何意义,必须规定电信号多少位一组,每组什么意思

功能定义电信号的分组方式

 

以太网协议

早期时各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议(ethernet)

规定

  • 一组点消耗构成一个数据包,叫做
  • 每一数据帧分成:报头 head数据 data 两部分

head:(固定18个字节)

  • 发送者/源地址:6个字节
  • 接受者/目标地址:6个字节
  • 数据类型:6个字节

data:(最短46个字节,最长1500字节)

  • 数据包的具体内容

发送:head 长度 + data 长度 = 最短 64字节 / 最长1518字节,超过最大限制就分片发送

以太网头 数据

 

MAC 地址

head 中包含的源和目标地址由来:

ethernet 规定介入 Internet 的设备都必须具备网卡,发送端和接收端的地址便是 MAC 地址,以便能找到发送和接收者

MAC: 每块网卡出厂时都有一个唯一的 mac地址,长度为 48 位 2进制,通常由 12 位 16 进制数 表示

前六位是厂商编号,后六位是流水线号

 

广播

有了 mac 地址,同一网络内的两台主机就可以互相通讯了(一台主机通过 arp 协议获取另一台主机的mac地址),ethernet 采用最原始的方式,广播的方式进行通讯。

 

网络层


由来有了以太网协议MAC 地址广播的发送方式,理论上世界上的计算机都可以互相通讯了。但是世界上的互联网是由一个个的局域网构成的,如果所有的通讯都是以以太网的广播方式传播,那么一台机器发送,全世界的机器都会收到,这将是一种灾难。于是就有了网络层,定义了一种协议 —— IP 协议。

功能引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址

 

IP 协议

  • 规定网络地址的协议叫 ip 协议,定义的地址为 ip 地址, 广泛地采用 v4版本即 ipv4,它规定网络地址由 32 位 2进制表示
  • 一个 ip 地址通常写成四段十进制数,范围 0.0.0.0 -- 255.255.255.255

IP地址分成两部分

  • 网络部分:标识子网(前三段)
  • 主机部分:标识主机(第四段)

子网掩码:区分两个IP地址是否在同一子网络。

方法为将两个IP地址进行AND运算(&), 然后比较结果是否相同,相同为同一子网,否则不是。

IP数据包

ip数据包也分为head和data部分,无须为ip包定义单独的栏位,直接放入以太网包的data部分

  • head:长度为 20 到 60 字节
  • data:最长为 65,515 字节。

而以太网数据包的data部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据包,分开发送。

以太网头 IP头 数据

总结:各个局域网间想要通讯需要用到IP 协议( 即跨网络传输 ),首先将包发送给默认网关(相当于管理者),再由网关转发给 IP 地址所在局域网。

 

ARP 协议

通信是基于 MAC 的广播方式实现,计算机在发包时,获取自身的 MAC 是容易的,如何获取目标主机的 MAC地址,就需要通过 ARP 协议

功能: 广播的方式发送数据包,获取目标主机的 MAC 地址

场景 数据包地址
同一子网 目标主机mac,目标主机 ip
不同子网 网关 mac,目标主机 ip

 

发送数据

设有主机PC 1:192.168.11.10/24PC 2:192.168.11.11/24PC 3:172.16.45.10/24

源 MAC 目标 MAC 源 ip 目标 ip(不同子网为网关IP) 数据部分
发送端主机 发送端 MAC FF:FF:FF:FF:FF:FF 172.16.10.10/24 192.168.11.11/24 数据

同一局域网内PC 1 ==>PC 2

  • 判断是否在同一局域网

  • 利用ARP 协议获取PC 2MAC 地址

    PC1 MAC     FF:FF:FF:FF:FF:FF       192.168.11.10/24        192.168.11.11/24 
    
  • 以上述格式发包,通过交换机广播,当所有PC拆包发现IP为自己时,回包加上自己的MAC 地址

    PC2 MAC     PC1 MAC     192.168.11.11/24        192.168.11.10/24
    
  • PC 1获得PC 2MAC 地址后:

    发包 PC 1 ==> PC 2

    PC1 MAC     PC2 MAC     192.168.11.10/24    192.168.11.11/24    数据
    

不在同一局域网内PC 1 ==>PC 3

  • 判断是否在同一局域网

  • 利用ARP 协议获取网关1MAC 地址,再由网关1去联络网关2,最后获得PC 3MAC 地址

    PC1 MAC     FF:FF:FF:FF:FF:FF   192.168.11.10/24    192.168.11.1/24(网关) 
    
  • 再将数据发给网关1,由网关1转发给网关2

    PC1 MAC     网关1 MAC     192.168.11.10/24    172.16.45.10/24     数据
    
  • PC 3==>PC 1(回包),也是先判断是否处于同一局域网,在按照上述方式回包

网关之间是通过路由传输

 

传输层


由来网络层的IP区分子网,以太网的MAC找到目标 主机,但是实际使用的是应用程序,那么要实现应用程序之间的通讯,是通过端口来标识应用程序的,即应用程序与网卡光联的编号。

功能建立端口到端口的通信

端口范围:0 - 65535 0 -1023 为系统占用端口

 

TCP 协议

可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

以太网头 IP头 TCP头 数据

 

UDP 协议

不可靠传输,报头部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。

以太网头 IP头 UDP头 数据

 

应用层


由来用户使用的应用程序,工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式

功能规定应用程序的数据格式

例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了应用层。

以太网头 IP头 TCP头 / UDP头 应用头 数据

 

Socket


两个进程需要进行通讯,最基本的一个前提是能够唯一的标识一个进程,在本地进程中我们可以使用 PID 来唯一标识一个进程,但 PID 只在本地唯一,网络中的两个进程 PID 冲突的几率很大。这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程 。

能够唯一标示网络中的进程后,它们就可以利用socket进行通信了,什么是socket呢?我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。

在 tcp、udp 协议之上,用户编写出一个应用软件时,需要定义其端口号,而单纯的使用 tcp、udp 协议去设定端口号费时费力,socket 大大节省了时间,只需简单的设置即可。

 

传输过程


对于一个网络的传输过程来说,其实就是一个数据,在需要传输给网络中的另一个对象的时候,层层往下,不断往数据中添加内容(首部和尾部)。然后在物理网络中以比特传输,然后到达目标后,层层往上,不断剥离数据中的一部分(首部和尾部),最终又到达应用层,可以读出或者使用最终还原的数据。如下图所示:

 

运行


  • 计算机启动后,首先运行BIOS得知操作系统位置
  • 启动操作系统(系统软件):加载到内存,CPU从内存中读取再进行运算
  • 打开应用软件:操作输入设备,发送指令给操作系统,将软件加载到内存中,然后CPU读取

BIOS属于物理层面,其代码已经写在主板上,属于ROM只读储存器

示例打开编辑软件,它将运行于内存,只有保存后才会保存至硬盘,否则会丢失。

下一篇: Vue - 插槽系统