当前位置: 首页 > news >正文

黑皮书-计算机科学导论02

目录

第二部分:计算机硬件

第5章计算机组成

5.1中央处理单元

Ⅰ.算数逻辑单元

Ⅱ.控制单元

Ⅲ.寄存器

5.2主存储器

Ⅰ.随机存取存储器(RAM)

Ⅱ.只读存储器(ROM)

高速缓冲存储器(Cache)

5.3输入/输出子系统

Ⅰ.非存储设备

Ⅱ.存储设备(辅助存储设备/外部存储设备)

5.4子系统的互联

Ⅰ.CPU和存储器的连接

Ⅱ.I/O设备的连接

5.5程序执行

Ⅰ.程序控制I/O

Ⅱ.中断控制I/O

Ⅲ.直接存储器存取(DMA)

5.6不同的体系结构

Ⅰ.复杂指令集计算机(CISC)

Ⅱ.精简指令集计算机(RISC)

5.7简单计算机

第6章计算机网络和因特网

Ⅰ.局域网(LAN)

Ⅱ.广域网(WAN)

Ⅲ.互联网络(网际网)

6.1应用层

Ⅰ.客户机-服务器模式(传统模式)

Ⅱ.端到端模式(新模式/P2P模式)

6.2传输层

Ⅰ.用户数据报协议(UDP)

Ⅱ.传输控制协议(TCP)

6.3网络层

Ⅰ.第4版网际协议(IPv4)

Ⅱ.第6版网际协议(IPv6)

6.4数据链路层

Ⅰ.有线LAN

Ⅱ.无线LAN

Ⅲ.有线WAN

Ⅳ.无线WAN

6.5物理层

Ⅰ.数字化传输

Ⅱ.模拟传输

6.传输介质

Ⅰ.导向介质

Ⅱ.非导向介质(无线)


第二部分:计算机硬件

一个完整的计算机系统包括硬件系统软件系统 

第5章计算机组成

计算机的组成部件可以分为三大类(或子系统):中央处理单元(CPU)、主存储器、输入/输出子系统

5.1中央处理单元

中央处理单元(CPU)用于数据的运算,它分三个组成部分算数逻辑单元(ALU)、控制单元、寄存器组

Ⅰ.算数逻辑单元

对数据进行逻辑、移位、算术运算

Ⅱ.控制单元

控制各个子系统的工作。控制通过从控制单元到其他子系统的信号来进行

Ⅲ.寄存器

用来存放临时数据高速独立的存储单元

CPU的计算离不开大量寄存器的使用

1.数据寄存器

之前计算机只有几个数据寄存器来存储输入数据和运算结果,现在在CPU中采用几十个数据寄存器来提高运行速度

2.指令寄存器

CPU的主要职责是:从内存中逐条的取出指令,并将取出的指令存储在指令寄存器中,解释并执行指令

3.程序计数器

程序计数器中保留着当前正在执行的指令,当前的指令执行完后,计数器自动加1,指向下一条指令的内存地址

简述现在CPU为什么采用倍频技术 :

倍频技术提升了CPU主频,在不提高外频的情况下,通过提高倍频来提高主频,从而提高CPU的性能,进而保持了系统稳定性

5.2主存储器

是存储单元的集合,每一个存储单元都有唯一的标识,称为地址

地址本身用位模式表示,内存地址用无符号二进制整数定义

数据以称为的位组的形式在内存中传入传出

字可以是8位,16位,32位等,如果为8位,则称为1字节

在存储器中存取每个字都需要相应的标识符

地址空间:所有在存储器中标识的独立的地址单元的总数

通常,如果一个计算机有N个字的存储空间,那就需要有log2N位的无符号整数来确定一个存储单元

主要有两种类型的主存储器:RAM、ROM

两者都可以使用存储单元地址随机存取一个数据项,而不需要存取位于它前面所有的数据项

Ⅰ.随机存取存储器(RAM)

RAM是计算机中主存的主要组成部分用户可读写RAM但RAM具有易失性,当系统断电后,存储在RAM中的信息将会丢失

RAM技术又被分为两大类:SRAM、DRAM

1、静态RAM(SRAM)

用传统的触发器门电路来保存数据

这些门保持状态(0或1),通电时数据始终存在,不需要刷新

SRAM速度快,但价格昂贵

2、动态RAM(DRAM)

使用电容器(电容器充电1;放电0)

电容器会随时间漏掉一部分电,所以内存单元需要周期性的刷新

DRAM速度慢,但比较便宜

DDR内存技术是一种同步动态随机存取存储器(SDRAM),是现在个人计算机用的内存 

Ⅱ.只读存储器(ROM)

由制造商编写,用户只能读但不能写,具有非易失性,断电数据不丢失

1、可编程只读存储器(PROM)

一种ROM,这种存储器在计算机发货时是空白的,用户可以借助特殊的设备将程序存储在上面,程序被存储后回像ROM一样不能重写

用户可以用它来存储一些特定的程序

2、可擦除可编程只读存储器(EPROM)

一种PROM,用特殊仪器可以对其进行擦写,但需要拆下来擦除,再重新安装

3.电可擦除可编程只读存储器(EEPROM)

 一种EPROM,擦除采用电子脉冲,无需拆除

存储器的层次结构:

高速缓冲存储器(Cache)

Cache一般用存储速度较快的SRAM元件组成,其速度已经与CPU相当 

通常容量较小,且常被置于CPU和主存之间

Cache的引入基于程序访问的局部性原理,即程序在一定时间内对某些相同存储单元的访问时集中的 

这种方式提高了运算的速度

5.3输入/输出子系统

输入/输出设备可以分为两大类:非存储设备、存储设备

Ⅰ.非存储设备

使得CPU/内存可以与外界通讯,但它们不能存储信息

如:键盘、监视器、打印机

监视器显示输出并同时响应键盘的输入

Ⅱ.存储设备(辅助存储设备/外部存储设备)

作为主存储器的后援存储设备,用以存放当前不用的程序或数据

它不属于计算机主机的组成部分,属于外部设备

对其的基本要求是:容量大、成本低、可以长时间不加电保存信息

通常分为磁介质和光介质两种

1、磁介质存储设备

使用磁性来存储位介质(有1无0)

1)磁盘随机存取设备,其性能主要取决于角速度,寻道时间、传送时间

信息通过每个磁片的读/写磁头读写磁介质表面来进行读取和存储的

2)磁带顺序存取设备,速度比磁盘慢,但很便宜

当转动的磁带通过读/写磁头时,就可以通过磁头来读写磁带上的数据

2、光存储设备

使用光(激光)技术来存储和读取数据

虽然光盘有成本低、存储密度高等优点,但是其读取速度比硬盘慢得多,主要作为软件发行和数据的长期保存  

1)只读光盘(CD-ROM)

与光盘(CD)使用相同技术,两者唯一的区别在于增强程度不同

CD-ROM更健壮纠错能力较强,且CD-ROM驱动器有不同的速度

如果需要大量生产这项技术是很经济的

2)可刻录光盘(CD-R)

可以让用户制作少量光盘,同时非常适合做备份,用户可以“写一次,读多次”

CD-R上的信息可以由CD-ROM、CD-R驱动器读取

3)可重写光盘(CD-RW)

CD-R只能被写一次

虽然这项技术可擦除显然优于CD-R,但CD-R还是更受欢迎一些

首先是其价格低于CD-RW,其次CD-R在某些不容许改变光盘内容的场合下更合适

以上三者的格式、容量、速度均相同

4)数字多功能光盘(DVD)

容量增大,采用MPEG压缩

3、闪存

一种长寿命的非易失性的电子器件存储器

其速度比前两者都快,且体积小功耗低。但由于成本问题,其容量较小

主要用于一些小规模的数据记录和便携式设备的存储存储器

4、外存接口

 接口主要有IDE、SATA、SCSI等形式

SATA接口作为一种新型硬盘接口目前正在广泛使用,是现在个人计算机使用的机械硬盘接口

5.4子系统的互联

Ⅰ.CPU和存储器的连接

CPU和存储器之间通常由称作总线的三组线路连接在一起,分别是数据总线、地址总线、控制总线

每组总线由若干条信息线组成,信息线的条数叫做总线宽度 

1、数据总线(DB)

作用传送数据信息(传输是双向的) 

CPU需要从内存读取数据或向内存写入数据时,数据需要数据总线传输 

由多根线组成,每一根线上每次传送1位的数据,线的数量取决于计算机的字的大小

意义:数据总线的宽度决定了每次传输数据的最大位数

例如:计算机的字是32位(4字节),则需要有32根线的数据总线

2、地址总线(AB)

作用传送地址(传输是单向的,只能由CPU往外传) 

CPU通过地址总线指定数据应该从哪里读取或者写入到哪里 

地址总线允许访问存储器中的某个字,线数取决于存储空间的大小

意义: 地址总线的宽度决定了计算机最大管理内存的大小

例如:存储器容量为2^n个字,地址总线一次需要传送n位的地址数据,因此它需要n根线

3、控制总线(CB)

作用传送控制信号和时序信号 (一般是双向的)

线数取决于计算机所需要的控制命令的总数

例如:计算机有2^m条控制命令,控制总线则需要m根

意义:确保了数据传输的正确性和同步性

Ⅱ.I/O设备的连接

输入/输出设备不能够直接与连接CPU和内存的总线相连

(由于I/O和CPU和内存的本质不同,前者为机电、磁性、光学设备,后两者为电子设备)

前者的操作速度要比后两者慢很多,因此需要中介

I/O设备是通过一种被称为I/O控制器或接口的器件连接到总线上

每个I/O设备都有一个特定的控制器

控制器:清除本质上的障碍,其可以是串行或并行的设备

串行控制器只有一根数据线连接到设备上,并行则有多根,一次传多个位

常见的几种控制器:SCSI、火线、USB、HDMI

1)小型计算机系统接口(SCSI)

并行接口,每个设备都要有唯一的地址

2)火线

高速串行接口

3)通用串行总线(USB)

串行控制器

热交换:设备可以不需要关闭计算机很容易地被移除或者连接到树中

4)高清晰度多媒体接口(HDMI)

是现有视频模拟标准的数字化代替品,可以用来从一个资源向另一个兼容的设备传输视频数据和数字音像数据

通常CPU使用相同地总线在主存和I/O设备之间读写数据,唯一的不同是指令

有两种方法对I/O设备寻址:I/O独立寻址和I/O存储器映射寻址

1、I/O独立寻址

用来读写内存的指令与用来读写I/O设备的指令完全不同

2、I/O存储器映射寻址

CPU将I/O控制器中的每一个寄存器都看作内存中的某个存储字

CPU没有单独的指令用来表示是从内存或是I/O设备传送数据

优点在于有一个较小的指令集,所有对内存的操作指令都同样适用于I/O设备;缺点是I/O控制器占用了一部分内存地址

5.5程序执行

通用计算机使用称为程序的一系列指令来处理数据

CPU利用重复的机器周期来执行程序中的命令,一个简化的周期包括三步:取指令、译码、执行

1、取指令控制单元命令系统将下一条将要执行的指令复制到CPU的指令寄存器中,被复制的指令地址保存在程序计数器中。复制完成后,程序计数器自动加1指向内存中的下一条指令

2、译码:指令寄存器中的指令将由控制单元负责译码

指令译码的结果是产生一系列系统可执行的二进制代码

3、执行控制单元发送任务命令到CPU的某个部件

由于I/O设备的运行速度慢于CPU,因此CPU的操作在某种程度上必须和I/O设备同步

有三种同步方法:程序控制I/O、中断控制I/O、直接存储器存取

Ⅰ.程序控制I/O

CPU等待I/O设备

存在问题:当每一个单元数据被传输时,CPU都要浪费时间去查询I/O的状态

Ⅱ.中断控制I/O

CPU告知I/O设备即将开始传输,但CPU并不需要不停地查询I/O的状态,可以做其他的工作当I/O设备准备好时,它通知(中断)CPU

以上两种方法都是在I/O设备和CPU之间传输数据数据在输入操作后被传送到内存,在输出操作前则是从内存中取出

Ⅲ.直接存储器存取(DMA)

用于高速I/O设备间传输大量的数据块

这种方法需要一个DMA控制器承担CPU的一些功能。DMA控制器中有寄存器,可以在内存传输前后保留数据块

注意:这种方法CPU只在一小段时间是空闲的,仅在DAM和内存间传输数据时才空闲,而不是在设备为传输数据做准备时

5.6不同的体系结构

讨论与简单计算机体系结构所不同的常见的体系结构和组织

Ⅰ.复杂指令集计算机(CISC)

使用大量指令,这使得在其中进行程序设计要比进行其他设计简单

CPU不直接执行机器语言指令,只执行被称为微操作的简单操作(复杂指令被转化为一系列的简单操作后由CPU执行),这种执行机制需要一个被称为微内存的特殊内存,它负责保存指令集中的每个复杂指令的一系列过程

微程序设计:使用微操作的程序设计

反对该体系结构的一个理由是微程序设计和存取微内存所带来的开销,但支持者认为这样会使程序更加简洁

Ⅱ.精简指令集计算机(RISC)

使用少量的指令完成最少的简单操作

在该体系中程序设计会更难,因为复杂指令都用简单指令子集来模拟

流水线:改善单位时间内完成的指令总数

依据并行处理将计算机的组织分为4类:SISD、SIMD、MISD、MIMD

1、单指令流单数据流组织(SISD组织)

表示计算机有一个控制单元、一个算术逻辑单元、一个内存单元

指令被按顺序执行,每条指令可以存储数据流中的一个或多个数据项

简单计算机就是SISD组织的例子

2、单指令流多数据流组织(SIMD组织)

一个控制单元、多个处理单元、一个内存单元

所有处理器单元从控制单元接受相同的指令,但在不同的数据项上操作

3、多指令流单数据流组织(MISD组织)

目前未被实现

4、多指令流多数据流组织(MIMD组织)

多个指令流的多个指令作用于多个数据流

即每条指令作用于一个数据项

5.7简单计算机

简单计算机三个组成部分:CPU、存储器、输入/输出子系统

1、CPU:分成三部分:数据存储器、算术逻辑单元、控制单元

2、主存:既有数据,又有程序指令

3、输入/输出子系统:子系统由一个键盘一个监视器组成

指令集:简单计算机具有16条指令集合的能力

每条计算机指令由两部分组成:操作码和操作数

操作码指明了在操作数上执行的操作的类型

处理指令:使用机器周期

指令周期:计算机每一条指令使用一个指令周期,每个周期跟机器周期一样分三个步骤

第6章计算机网络和因特网

因特网不是一个单独的网络,而是一个网络结合体,即互联网络

网络:一系列可用于通信的设备相互连接构成的

一个设备可以是一个主机(端系统),也可以是一个连接设备(路由器、交换机)

在一个网络中,这些设备都通过有线或无线传输媒介(电缆、无线信号)互相连接

Ⅰ.局域网(LAN)

通常是单个办公室、建筑、校园内的几个主机相连的私有网络

在一个局域网中的每一个主机都有作为这台主机在局域网中唯一定义的一个标识符和一个地址

一台主机向另一台主机发送的数据包中包括源主机和目标主机的地址

Ⅱ.广域网(WAN)

也是由通信设备互连构成的

广域网的地理跨度比局域网大很多,可以是一个城镇、一个国家,甚至跨越世界

局域网将主机互连,广域网则将连接设备互连

1)点对点广域网

通过传输媒介连接两个通信设备的网络

2)交换广域网

一个至少有两个端的网络,是用于当今全球通讯的骨干网

也可以说是几个点对点广域网通过开关连接产生的结合体

Ⅲ.互联网络(网际网)

当两个或多个网络相互连接时,它们构成一个互联网络

网际网是因特网,它是由成千上万个互连的网络组成

该图将因特网展示为几个骨干网、供应商网络和客户网络

骨干网通过一些复杂的交换系统相互连接,我们将这些交换系统称为网络对等交汇点

供应商网络有时也连接其他供应商网络

以上两个网络也被称为因特网服务供应商(ISP)

骨干网:国际因特网服务供应商;供应商网络:国内/地域性因特网服务供应商


 协议:定义了发送器、接收器以及所有中间设备必须遵守以保障有效地通讯的规则

协议分层:将网络通讯的复杂性分解成多个层次,每个层次负责不同的功能(将任务分配到不同的协议层中)

协议分层原则:

1)如果想要实现双向通信,就需要保证每一个协议层都可以进行两个对立且方向相反的问题

2)两个站点中每一层的两个对象必须完全相同


传输控制协议/网际协议(TCP/IP)协议族:如今因特网中使用的协议集(一组通过不同分层进行组织的协议)

分层这个术语说明每一个高层协议都是基于一个或多个低层协议提供的服务

其分为五个层次:物理层、数据链路层、网络层、传输层、应用层

1、分层架构

源主机需要在应用层创建消息,将其通过协议层向下发送

目标主机需要在物理层接收通信并通过其他协议层将其发送至应用层

路由器涉及物理层、数据链路层、网络层

2、地址和数据包名称

任何涉及两方的通信都需要两个地址:源地址、目标地址

物理层不需要地址(由于物理层交换的数据单位是位,这使得它无法获得地址)

链路层地址有时称为MAC地址

6.1应用层

TCP/IP协议族的第五层(最高层)叫做应用层,(唯一)向用户提供服务(的层),通信由逻辑链接提供

这一层的协议不向其他协议提供服务,只接收传输层协议提供的服务

应用层模式:客户机-服务器模式、端到端模式

Ⅰ.客户机-服务器模式(传统模式)

服务提供者是一个应用程序,叫做服务器进程,这个程序一直运行,等待另一个叫做客户端进程的应用程序通过因特网连接请求服务

这种模式的一个问题是通信负荷集中由服务器承担

一些传统服务仍在使用这种模式:万维网(WWW)、超文本传输协议(HTTP)等

标准客户机-服务器应用程序:

1、万维网(WWW/Web)和超文本传输协议(HTTP)

Web是信息的存储库,这个存储库中叫做网页的文档分布在全世界并且相关的文档都链接在一起

用来得到Web上的数据的主要协议是HTTP 

当今客户可以通过浏览器来访问使用服务器的服务,服务分布在许多地方,称为站点,每一个站点储存的一个或多个文档称为网页

Web客户端(浏览器):解释和显示网页

Web服务器:存储网页   

每个浏览器通常由三部分构成:控制器、客户端协议(HTTP、FTP)、解释器(HTML、Java、JavaScript)


网页需要唯一的标识符将其区分开来,在对网页进行定义之前,需要告诉浏览器我们想要使用的客户机-服务器应用程序

这意味着我们需要四个标识符来定义网页:协议、主机标识符、端口号、路径

统一资源定位符(URL):为了将上面四个部分结合起来而设计的

使用3种不同的分隔符将4部分分开

超文本传输协议(HTTP):一个用来定义如何编写客户机-服务器程序以便从网络中检索网页的协议

 2、文件传输协议(FTP)

是TCP/IP提供的标准协议,用于从一台计算机复制文件到另一台计算机

控制连接在整个交互式FTP会话中都是保持打开的,数据连接为每个文件传输活动打开和关闭

3、电子邮件

在HTTP或FTP之类的应用中,服务器是一直运行运行的,等待用户的请求,而电子邮件不同,电子邮件被认为是一个单向事务

4、终端网络(TELNET)

TELNET是早期的远程登陆协议之一,但由于它以明文形式发送信息和密码,安全性很低,多数人选择另一个协议(安全外壳协议(SSH))使用

5、域名系统(DNS)

为了帮助其他应用程序设计的,将数字化的地址转化为名字的地址(baidu.com)

下图展示了TCP/IP协议族如何利用域名系统客户端和一个域名系统服务器来将一个名称映射到地址上

命名空间可以把每一个地址映射到一个唯一的名称上

在网络中,域名空间分为三个不同的部分:一般域、国家域、反向域(目前不再使用)

1)一般域:根据注册主机的一般行为对它们进行定义

2)国家域:使用两个字符组成国家的缩写

Ⅱ.端到端模式(新模式/P2P模式)

该模式不需要一个一直运行并等待客户端进程连接的服务器进程

这个责任是在端与端之间共享的,一台计算机甚至可以在同一时间提供和接收服务

应用:网络电话

虽然减少了运行时间和维护昂贵服务器的需求,但其最大的挑战是安全性和适应性(不是所有应用都能使用新模式)

分为两类:集中的和分散的 

6.2传输层

在网络层接收服务并且为应用层提供服务

传输层是TCP/IP协议族的核心部分

进程间通信:传输层提供进程间通信,进程是传输层服务的应用层实体(运行中的程序)

网络层负责主机间的通讯,网络层协议只能将消息传送到目的计算机,但这并不完整,信息需要被传递给正确的进程,这就是传输层协议的工作,将消息送到相应的进程

最常见的实现进程间通信的方式就是通过客户机-服务器模式

在主机上的进程(客户程序)需要来自运行在远程主机上的进程(服务器程序)提供服务

为了通信,我们必须定义本地主机、本地进程、远程主机、远程进程

而定义这些进程,我们需要第二个标识符,端口号(0-65535(16位)之间的整数)

临时端口号:定义客户程序

知名端口号:定义服务器程序

这里主要讨论两种传输层协议:用户数据报协议(UDP)、传输控制协议(TCP)

Ⅰ.用户数据报协议(UDP)

不可靠的无连接协议

提供进程间通讯(而不是主机间通讯),没有向网络层服务提供添加任何东西

由此,UDP是一个极简单同时开销最少的协议(即使优点也是缺点)

用户数据报(UDP数据包):存储在IP数据报中

Ⅱ.传输控制协议(TCP)

面向连接的可靠协议

它明确地定义了连接设施、数据传输、连接拆卸段来提供面向连接的服务

:TCP将一些字节组合成一个叫作段的数据包(封装在IP数据报中)

TCP将这些段发送至网络层进行传输,加头为了方便控制

6.3网络层

负责源到目的地的信息发送,向传输层提供服务

网络层提供的服务:

1、打包

将有效负荷不加改变地从源送到目的地

简单来说就是将数据包从发送者送至接收者,同时保证数据包的内容不被改变或使用

源网络层协议从传输层协议接收数据包,网络层协议在逻辑上将数据包送至目的地处的网络协议,目标主机接收网络层数据包,接触有效负荷的封装并将其传输至上一层协议

传输层的有效负荷可以封装在几个网络层数据包中

2、数据包传递

网络层的数据包传递是无连接且不可靠

1)不可靠

由于网络层尽力保证的是传输,这意味着数据包可能损毁、丢失、重复

因此我们要通过传输层协议中的TCP才能保证消息没有损毁,如果传输层的一个有效负荷损毁了,TCP会丢弃这个数据包并且要求重新发送

2)无连接

是指网络层对每个数据包的处理是单独的,即属于相同传输层有效负荷的数据包之间是没有联系的

举个例子,如果一个传输层数据包由4个网络层数据包构成,则无法保证4个数据包到达的顺序和发送的顺序一样(由于每个数据包都可能依照不同的路径到达目的地)

不过目的地的传输层会负责等待和接收所有包,再将它们组合在一起并传送至应用层 

3、路由

物理网络:是网络和连接这些网络的路由器的集合 

网络层的一个责任是在传输路线中找到最优路线

这需要通过在数据包到达时运行一些路由器协议来帮助多个路由器协调它们对于周边的知识并且提出一致的路由表来实现

网络层最主要的协议是网际协议(IP),当下有两类网络协议正投入使用:IPv4和IPv6

Ⅰ.第4版网际协议(IPv4)

现在大多数系统都使用第4版网际协议,但由于其地址空间和数据包较小等原因,在将来未必会继续使用

网络地址(IP地址):在TCP/IP协议族的IPv4层用来标记每个设备和互联网之间的连接的标识符

IPv4地址唯一但又通用地定义了主机或路由器与网络之间的连接

唯一:每个地址只定义一个连接

通用:这个地址系统必须被所有想要连接到网络的主机接收

三种常见的表示法表示IPv4地址:二进制、十进制、十六进制

二进制:32位,为了便于阅读,一字节(8位)加一个空格

十进制:用小数点分字节

32位的IPv4地址是分级的,分为两部分,两部分的长度取决于网络的站点

IPv4使用的数据包叫做数据报

Ⅱ.第6版网际协议(IPv6)

为了防止IPv4的地址耗尽,IPv6使用128位来定义任何连接到网络中的设备

地址显示为二进制、十六进制

第一个格式用来在计算机中存储地址,第二个是供人类使用的

IPv6定义了三个等级:站点(组织)、子网、到主机的连接

6.4数据链路层

TCP/IP协议族没有定义数据链路层中的任何协议,这一层是网络中连接起来构成因特网的区域,这些网络,有线或无线,都接收服务将服务提供给网络层

上面介绍的三个层的通信都是端到端的,数据链路层的通信是节点对节点的

传统上将两个端主机和路由器看作节点,它们之间的网络看作链接

节点上地链接不是LAN就是WAN

局域网可以是有线或无线网络

Ⅰ.有线LAN

以太网就是有线LAN,它的发展经历了四代:标准以太网、快速以太网、千兆以太网、万兆以太网

数据速率为10Mbps(数据从工作站传输至LAN的速度)

在LAN中,数据包都封装在数据帧中

Ⅱ.无线LAN

在有线LAN中使用电缆来连接主机,无线则是通过信号

在这个领域主要有两种技术:无线以太网(WiFi)、蓝牙

1、无线以太网(WiFi)

这个标准定义了两种服务:基本服务集(BSS)、扩展服务集(ESS)

2、蓝牙

用于连接不同功能的设备

Ⅲ.有线WAN

当今以太网中有许多有线WAN,有些是点对点的,有些是交换式的

交换式有线WAN:连接网络的骨干网

Ⅳ.无线WAN

点对点无线WAN:拨号上网服务、数字用户线路(DSL)

DSL提供高速网络连接

1、全球互联接入(WiMax)

是DSL或通过电缆连接因特网的无线版,是一个未来可以代替DSL和电缆的无线接入网络

DSL这里主要讨论非对称数字用户线路(ASDL)

它提供服务将主要工作站与固定工作站或移动工作站相连接

2、手机网络

3、卫星网络

6.5物理层

将从数据链路层接收的比特转换成用于传输的电磁信号

物理层的一个主要功能就是为比特确定在节点间传输的路线

物理层的通信是节点对节点的,节点交换的是电磁信号

数据分为两种形式:模拟的和数字的。信号同样这样分

模拟数据:指连续的信息

数字数据:呈现离散的值

模拟信号:在一个时间段中有无限种不同的等级强度,包括无限个值

数字信号:可以只拥有有限个定义的值

Ⅰ.数字化传输

计算网络将信息从一点传输至另一点,信息需要转化成信号传输

如果这个数据是数字化的,使用数数转换技术(数字数据→数字信息);模拟的,模数转换技术

Ⅱ.模拟传输

数字化传输需要专用通道,模拟传输是没有专用通道的唯一选择

数模转换:基于数字数据的信息改变模拟信号的某个特征的过程

 模模转换:基于模拟数据的信息改变模拟信号的某个特征的过程

6.传输介质

在物理层产生的电信号需要介质来从一端传输至另一端

传输介质通常在物理层之下,并且受到物理层的直接控制,可以说传输介质属于第0层

传输介质:任何将信息从源传输到目标的介质

传输介质分为两类:导向介质、无导向介质

Ⅰ.导向介质

提供从一个设备到另一个设备的通道,包括双绞线、同轴电缆、光纤电缆

1、双绞线

两根绞在一起的导线,分别包着塑料绝缘

一根将信号传送至接收方,另一根作接地参考

干涉(噪音)会影响两根线并制造出多余的信号,如果两根线是平行的,那么两根线受到的影响是不一样的(相对于噪声源处于不同的位置),将两根绞在一起,平衡得以保持

2、同轴电缆

有一个位于中心且密封在绝缘外壳中的实心或绞合线作为核心导线

3、光纤电缆

由玻璃或塑料构成,以光的形式传递信号

这种使用一束光在进入密度较低介质时既不反射也不折射的特性

Ⅱ.非导向介质(无线)

不通过物理上的导体传播电磁波

1、无线电波

频率在3kHz~1GHz之间的电磁波,常用于无线通信

2、微波

没有方向性

3、红外波

用于短程通信

不能在室外使用红外波,因为太阳中的红外波会对通信产生影响

相关文章:

黑皮书-计算机科学导论02

目录 第二部分:计算机硬件 第5章计算机组成 5.1中央处理单元 Ⅰ.算数逻辑单元 Ⅱ.控制单元 Ⅲ.寄存器 5.2主存储器 Ⅰ.随机存取存储器(RAM) Ⅱ.只读存储器(ROM) 高速缓冲存储器(Cache) 5.3输入/输出子系统 Ⅰ.非存储设备 Ⅱ.存储设备(辅助存…...

React--》如何高效管理前端环境变量:开发与生产环境配置详解

在前端开发中,如何让项目在不同环境下表现得更为灵活与高效,是每个开发者必须面对的挑战,从开发阶段的调试到生产环境的优化,环境变量配置无疑是其中的关键。 env配置文件:通常用于管理项目的环境变量,环境…...

初始Python篇(6)—— 字符串

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: Python 目录 字符串的常见操作 格式化字符串 占位符 f-string 字符串的 format 方法 字符串的编码与解码 与数据验证相关的方法 …...

【数字花园】个人知识库网站搭建:⑤本地构建+云服务器部署数字花园plus

目录 写在前面:数字花园的定义[[数字花园]]网站的构建原理包括三个步骤:[[我的数字花园搭建笔记]] 现在的部署流程一、本地操作详细教程-2.前置步骤(前面的文章都提过)-1.创建github中转库0. 本地环境配置基础环境:git…...

力扣题目 - 3264.K 次乘运算后的最终数组I

题目 还需要你前往力扣官网查看详细的题目要求 地址 1.给你一个整数数组 nums ,一个整数 k 和一个整数 multiplier 。2.你需要对 nums 执行 k 次操作,每次操作中:找到 nums 中的 最小 值 x ,如果存在多个最小值,选择最…...

Java常用 Date 时间格式化、Calender日历、正则表达式的用法

目录 1. SimpleDateFormat 日期格式化类 1.1 Date 类型转 String 1.2 String 类型转 Date 2. Calendar 日历类 3. 正则表达式 3.1 正则表达式的组成部分 3.2 手机号正则表达式 3.3 常用密码校验正则表达式 1. SimpleDateFormat 日期格式化类 SimpleDateFormat 是Java中…...

网页爬虫技术全解析:从基础到实战

引言 在当今信息爆炸的时代,互联网上的数据量每天都在以惊人的速度增长。网页爬虫(Web Scraping),作为数据采集的重要手段之一,已经成为数据科学家、研究人员和开发者不可或缺的工具。本文将全面解析网页爬虫技术&…...

细说STM32F407单片机SPI基础知识

目录 一、 SPI接口和通信协议 1、 SPI硬件接口 (1)MOSI(Master Output Slave Input) (2)MISO(Master Input Slave Output) (3)SCK 2、SPI传输协议 (1)CPHA0时的数据传输时序 …...

【OJ题解】面试题三步问题

个人主页: 起名字真南的CSDN博客 个人专栏: 【数据结构初阶】 📘 基础数据结构【C语言】 💻 C语言编程技巧【C】 🚀 进阶C【OJ题解】 📝 题解精讲 目录 **题目链接****解题思路****1. 问题分析****2. 递归思路****3. 优化方案&a…...

Linux vi/vim 编辑器使用教程

Linux vi/vim 编辑器使用教程 引言 Linux 系统中的 vi 和 vim 是非常强大的文本编辑器,它们以其高效性和灵活性而闻名。vim 是 vi 的增强版,提供了更多的功能和改进的用户界面。本文将详细介绍 vi/vim 的基本用法,包括打开文件、编辑文本、…...

长安大学《2024年812自动控制原理真题》 (完整版)

本文内容,全部选自自动化考研联盟的:《长安大学812自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题...

服务器一般装什么系统?

在服务器管理中,操作系统的选择是一个关键因素,它直接影响到服务器的稳定性、性能和可维护性。那么为什么有些服务器选择Linux,而不是Windows?选择合适的操作系统对服务器的性能和安全性有多么重要? 在众多操作系统中…...

Gitlab ci/cd 从0-1持续集成持续发布前端

关于gitlab ci/cd,就是实现DevOps的能力,即Development &Operations的缩写,也就是开发&运维。CI/CD 指的是软件开发的持续集成方法,我们可以持续构建、测试和部署软件。通过持续方法的迭代能使得我们减少在错误代码或者错…...

#GC4049. GC.2017---. GC.2016.六年级

这套题包含了历年真题,包含了前面我写的博客中的题目,十分重要!!!!要考试的同学可以参考一下!! 此套题限时3小时。 #GC4049. GC.2017.六年级.01.更多闰年 题目描述 在 smoj 网站上…...

UE5中实现Billboard公告板渲染

公告板(Billboard)通常指永远面向摄像机的面片,游戏中许多技术都基于公告板,例如提示拾取图标、敌人血槽信息等,本文将使用UE5和材质节点制作一个公告板。 Gif效果: 网格效果: 1.思路 通过…...

Android系统(android app和系统架构)

文章目录 AndroidAndroid Apps四大组件 Android系统Platform API之下:一个微笑内核adb(Android Debug Bridge) Android包管理机制Android的Intent机制参考 Android LinuxFrameworkJVM 在Linux/Java上做了个二次开发?并不完全是:Android定义…...

docker设置容器自动启动

说起开机自动启动应该很多人都遇到过,我们公司做的系统很多的中间件都没有设置开机自动启动然后中间修改问题又设置了一些临时生效的文件,开始的时候大家都不以为意,知道公司陆续有人离职入职管理交接一塌糊涂,项目成了历史遗留问…...

在 React 中,创建和嵌套组件、添加标签和样式、显示数据、渲染条件和列表、对事件做出响应并更新界面以及在组件间共享数据是常见的任务

文章目录 1. 创建和嵌套组件创建组件嵌套组件 2. 添加标签和样式添加标签添加样式 3. 显示数据显示静态数据显示动态数据 4. 渲染条件和列表条件渲染列表渲染 5. 对事件做出响应并更新界面处理事件 6. 在组件间共享数据使用 Context API react 如何创建和嵌套组件 如何添加标签…...

Android命令行工具--dumpsys

dumpsys 是一种在 Android 设备上运行的工具,可提供有关系统服务的信息。可以使用 Android 调试桥 (adb) 从命令行调用 dumpsys,获取在连接的设备上运行的所有系统服务的诊断输出。 此输出通常比您想要的更详细,因此请使用此页面上的命令行选…...

设计模式-访问者模式

背景 做一个对歌手的评价系统,观众分为男人和女人,分别对歌手做出自己的评价。 传统思路: 做一个person父类,Man 和 Woman分别继承自这个父类,在这两个类中执行各自操作。 问题: 可拓展性差&#xff0…...

Vue集成阿里云点播实现视频上传

实现方式有多种&#xff0c;如下是我的实现方式&#xff1a; 一、下载点播插件&#xff0c;在 public 下的 index.html 中引入阿里云点播需要的 js 插件&#xff0c;js 文件最好放在 cdn 上,&#xff0c;这里以放在 public 文件夹下的 static 文件夹中为例&#xff1a; <s…...

ByteByteGo-Forward/Reverse Proxy正/反向代理

原文链接 EP137: Proxy Vs Reverse proxy - ByteByteGo Newsletter 参考链接 Forward proxy vs. reverse proxy: Whats the difference? | TheServerSide 正向代理 &#xff08;Forward Proxy&#xff09; 位置&#xff1a;用户设备 和 互联网 之间 用途&#xff1a;保护客…...

[论文阅读] |智能体长期记忆与反思

写在前面&#xff1a;10月份的时候&#xff0c;联发科天玑9400发布&#xff0c;搭载这款旗舰 5G 智能体 AI 芯片的荣耀MagicOS9.0实现了一句话让手机自动操作美团点咖啡。很快商场实体店里便能看到很多品牌手机已经升级为智能体语音助手。下一步&#xff0c;这些智能体或许便能…...

Elasticsearch Kibana (windows版本) 安装和启动

目录 1.安装 2.启动 elasticsearch 3.启动 kibana 1.安装 elasticsearch下载&#xff0c;官网链接&#xff1a; Download Elasticsearch | Elastichttps://www.elastic.co/downloads/elasticsearch kibana下载&#xff0c;官网链接&#xff1a; Download Kibana Free | G…...

CSS系列(9)-- Transform 变换详解

前端技术探索系列&#xff1a;CSS Transform 变换详解 &#x1f504; 致读者&#xff1a;探索 CSS 变换的魔力 &#x1f44b; 前端开发者们&#xff0c; 今天我们将深入探讨 CSS Transform&#xff0c;学习如何创建引人注目的 2D 和 3D 变换效果。 2D 变换基础 &#x1f68…...

bs4基本运用

1. bs4基本使用 1.1. 简介 bs4的全称为 BeautifulSoup。和lxml一样&#xff0c;是一个html的解析器&#xff0c;主要功能也是解析数据和提取数据 。 本模块作为了解模块&#xff0c;实际开发中很少用这个模块去解析数据&#xff0c;大家可能会想为什么这个模块会逐渐被淘汰&…...

skywalking 搭建 备忘录

基础环境 apache-skywalking-apm-9.6.0.tar.gz apache-skywalking-java-agent-9.1.0.tgz elasticsearch 7.14.1 采用dockers搭建 或者手动部署 kibana 可视化 应用 微服务版 consumer.jar eureka.jar 注册中心 provider.jar skywalking 地址 https://skywalkin…...

C# 和 go 关于can通信得 整理

在C#中开发CAN&#xff08;Controller Area Network&#xff09;通信接口时&#xff0c;确实有一些现成的NuGet包可以简化你的开发工作。这些库通常提供了与CAN硬件接口通信所需的基本功能&#xff0c;如发送和接收CAN消息。下面是一些常用的NuGet包&#xff1a; PCANBasic.NET…...

Unity类银河战士恶魔城学习总结(P179 Enemy Archer 弓箭手)

教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了敌人弓箭手的制作 Enemy_Archer.cs 核心功能 状态机管理敌人的行为 定义了多个状态对象&#xff08;如 idleState、moveState、attackState 等&#xff09;&#xff0c;通过状态机管理敌人的…...

一、LRU缓存

LRU缓存 1.LRU缓存介绍2.LRU缓存实现3.LRU缓存总结3.1 LRU 缓存的应用3.2 LRU 缓存的优缺点 1.LRU缓存介绍 LRU是Least Recently Used 的缩写&#xff0c;意为“最近最少使用”。它是一种常见的缓存淘汰策略&#xff0c;用于在缓存容量有限时&#xff0c;决定哪些数据需要被删…...

基于python绘制数据表(上)

利用python绘制各种数据图表 绘制柱形图-源码 from openpyxl import Workbook from openpyxl.chart import BarChart, Reference# 创建工作薄 wb Workbook(write_onlyTrue) # 创建工作表 ws wb.create_sheet(月收入)# 准备数据 rows [(月份, 销售额),(1, 23),(2, 43),(3, …...

Python Segmentation fault错误定位办法

1. 说明 Python3执行某一个程序时&#xff0c;报Segmentation fault (core dumped)错&#xff0c;但没有告知到底哪里出错&#xff0c;无法查问题&#xff0c;这时就需要一个库faulthandler来帮助分析。 2. 安装faulthandler faulthandler在Python3.3之后成为标准库&#xf…...

快速在远程服务器执行命令、批量在多个服务器执行命令(基于sshpass的自定义脚本fastsh)

在日常服务器操作中&#xff0c;很多时候我们需要同时操作多个服务器。特别对于那些每个服务器都需要操作相同命令的场景&#xff0c;不断的切换命令会话窗口会比较麻烦。基于此&#xff0c;编写了本文中的 fastsh 脚本用于轻度解决这种问题&#xff0c;提高一定的便利性。 使…...

Java基于SpringBoot的企业OA管理系统,附源码

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…...

SSM 垃圾分类系统——环保领域的创新引擎

第1章 概述 1.1 研究背景 随着现代网络技术发展&#xff0c;对于垃圾分类系统现在正处于网络发展的阶段&#xff0c;所以对它的要求也是比较严格的&#xff0c;要从这个系统的功能和用户实际需求来进行对系统制定开发的发展方式&#xff0c;依靠网络技术的的快速发展和现代通讯…...

websocker的java集成过程

第一步&#xff1a;引入依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency> 第二步设置配置类&#xff1a; // 需要注入Bean的话必须声明为配置类 Co…...

如何对小型固定翼无人机进行最优的路径跟随控制?

控制架构 文章继续采用的是 ULTRA-Extra无人机&#xff0c;相关参数如下&#xff1a; 这里用于guidance law的无人机运动学模型为&#xff1a; { x ˙ p V a cos ⁡ γ cos ⁡ χ V w cos ⁡ γ w cos ⁡ χ w y ˙ p V a cos ⁡ γ sin ⁡ χ V w cos ⁡ γ w sin ⁡ χ…...

03、对象的内存布局以及分配方式

在通过前面的文章了解到当一个程序启动的时候&#xff0c;会把一个java文件通过编译成class文件&#xff0c;然后把class字节码加载到JVM内存中&#xff0c;并初始化各种变量和对象实例&#xff0c;同时建立起具体的内存模型进行线程间的数据交换&#xff0c;在这之间对象的实例…...

「Mac玩转仓颉内测版50」小学奥数篇13 - 动态规划入门

本篇将通过 Python 和 Cangjie 双语介绍动态规划的基本概念&#xff0c;并解决一个经典问题&#xff1a;斐波那契数列。学生将学习如何使用动态规划优化递归计算&#xff0c;并掌握编程中的重要算法思想。 关键词 小学奥数Python Cangjie动态规划斐波那契数列 一、题目描述 …...

ADB在浏览器中:ya-webadb项目安装与配置完全指南

ADB在浏览器中&#xff1a;ya-webadb项目安装与配置完全指南 ya-webadb ADB in your browser [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/ya/ya-webadb 项目基础介绍与编程语言 ya-webadb 是一个由 Yume-chan 开发的开源项目&#xff0c;它实现了ADB&#x…...

通过ros2启动gazebo

ros2_integration3.使用gazebo加载URDF 在老版本中&#xff0c;我们使用 gazebo --verbose -s libgazebo_ros_init.so -s libgazebo_ros_factory.so来启动gazebo和ros2与gazebo的桥。 但在新版本中&#xff0c;libazebo_ros_init.so和libazebo_ros_factory.so不再被支持 你…...

WPF 消息循环(二)

们已经知道&#xff0c;win32/MFC/WinForm/WPF 都依靠消息循环驱动&#xff0c;让程序跑起来。 这里就介绍 WPF 中是如何使用消息循环来驱动程序的。 1. 背景 只听说过 Dispatcher &#xff0c;哪里来的消息循环&#xff1f; WPF 启动运行堆栈&#xff1a; > WpfApp1.…...

基于stm32的红外测温系统设计(论文+源码)

1总体方案设计 本课题为基于STM32的红外测温系统设计&#xff0c;在此将系统架构设计如图3.1所示&#xff0c; 整个系统包括STM32F103单片机&#xff0c;红外测温模块MLX90614&#xff0c;显示模块OLED12864&#xff0c;蜂鸣器以及按键等构成&#xff0c;在功能上&#xff0c;…...

分布式 Paxos算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & Paxos算法 & 总结》《分布式 & Paxos算法 & 问题》 参考文献 《图解超难理解的 Paxos 算法&#xff08;含伪代码&#xff09;》《【超详细】分布式一致性协议 - Paxos》 Basic-Paxos 基础帕克索斯算法…...

ubuntu 使用 Times New Roman 字体在 Matplotlib 中绘图并调整字体大小

ubuntu 使用 Times New Roman 字体在 Matplotlib 中绘图并调整字体大小 文章目录 ubuntu 使用 Times New Roman 字体在 Matplotlib 中绘图并调整字体大小1. 安装 Times New Roman 字体验证字体是否安装成功 2. 在 Matplotlib 中加载 Times New Roman 字体3. 在 Matplotlib 中使…...

[网络] UDP协议16位校验和

16位校验和是udp报头中的一个字段,绝大多数的教材和网课都会忽略这个字段,不去细究,我闲的蛋疼问了问ai,得到了一个答案,故作此文,以证明我爱学习之心惊天地泣鬼神(狗头 ai的回答 仅从作用来说,它会根据整个应用层报文进行运算,生成一个准确的数字,这个数字不能保证唯一性,但根…...

【总结·反思·汇报·思考02】裸辞后,我的一些感想和感悟。

Hello&#xff0c;大家好&#xff01; 首先&#xff0c;我需要向大家道个歉&#xff0c;对不起&#xff01;因为最近发生了一些事情&#xff0c;博客文章一直没有更新。&#xff08;90度鞠躬道歉&#xff09; 那么&#xff0c;最近到底发生了什么呢&#xff1f;相信大家已经从…...

【前端开发】HTML+CSS网页,可以拿来当作业(免费开源)

HTML代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content_lizhongyu"widthdevice-width, initial-scale1.0"><title>小兔鲜儿-新鲜、惠民、快捷<…...

java 导出word锁定且部分内容解锁可编辑

使用 Apache POI 创建带编辑限制的 Word 文档 在日常工作中&#xff0c;我们可能需要生成一些带有编辑限制的 Word 文档&#xff0c;例如某些段落只能被查看&#xff0c;而其他段落可以自由编辑。本文介绍如何使用 Apache POI 创建这样的文档&#xff0c;并通过代码实现相应的…...

Scala的隐式类

package hfd //隐式类 //任务&#xff1a;给之前的BaseUser添加新的功能&#xff0c;但是不要直接去改代码 //思路&#xff1a;把BaseUser通过隐式转换&#xff0c;改成一个新类型&#xff0c;而这个新类型中有这新的方法 //implicit class一个隐式转换函数类 //作用&#xff1…...