diff --git a/ComputerNetwork.md b/ComputerNetwork.md new file mode 100644 index 0000000..f255c9a --- /dev/null +++ b/ComputerNetwork.md @@ -0,0 +1,888 @@ +*written by PeterAlbus,Copyright © 2022 - SHOU 1951123 Hong Wu* + +**注:本文根据《2021秋计算机网络期末考试大纲》编写。 \* 号部分表示不在大纲内** + +# 计算机网络 + +### 第一章 概述 + +#### 1.2 互联网概述 + +##### 1.2.1 网络的网络 + +计算机网络由若干个节点(node)以及连接这些节点的链路(link)组成,网络中的节点可以是计算机、集线器、交换机或路由器。 + +网络间还可以通过路由器再互联起来,这就构成了一个覆盖范围更大的计算机网络。这样的网络称为“互连网”(internet)。 + +> 网络把许多计算机连接在一起,而互连网则把许多网络通过路由器连接在一起,与网络相连的计算机常被称为主机(host)。 + +##### 1.2.2 互联网基础结构发展的三个阶段 + +1. 单个网络APARNET向互连网(internet)发展 + + 1969年APARNET——第一个分组交换网。之后开始研究多种网络互连的技术,导致了互连网的出现,也是互联网的雏形。 + + 两个类似但意思不同的名词:internet(互连网)和Internet(互联网)。前者是一个通用名词,泛指多个计算机网络互连而成的计算机网络。后者则是专有名词,指全球最大,由众多网络连接而成的特定互连网,采用TCP/IP协议族作为通信的规则。 +2. 建成了三级结构的互联网(Internet) + + 三级网络,分为主干网、地区网和校园网。 +3. 形成了多层次ISP结构的互联网 + + 互联网主干网逐渐走向商业化,若干个商用互联网主干网替代NSFNET,政府开始不负责互联网的运营。 + + ISP:互联网服务提供者/互联网服务提供商。(中国移动、中国电信、中国联通) + + ISP申请大量IP地址,用户向ISP缴纳费用,即可获取IP地址使用权并通过ISP提供的通信线路接入互联网。 + + ISP也分为不同层次:主干ISP、地区ISP和本地ISP + +#### 1.3 互联网的组成 + +互联网的拓扑结构从工作方式上看可以分为两大块: + ++ 边缘部分:连接在互联网上的主机组成,用户直接使用,用来进行通信和资源共享 ++ 核心部分:由大量网络和连接网络的路由器组成,为边缘部分提供服务(连通性和交换) + +##### 1.3.1 互联网的边缘部分 + +边缘部分的通信方式(主机上的程序和主机上的程序之间)可分为两大类:客户端-服务器方式(C/S)和对等方式(P2P)。 + +1. Client/Server + + 在互联网上最常用也是最传统的方式。客户(Client)和服务器(Server)是指通信中涉及的两个应用进程。客户是服务请求方,服务器是服务提供方。 + + + 客户程序:需要知道服务器程序的地址,向服务器发起请求 + + 服务器程序:专门用来提供某种服务,可同时处理多个客户端发起的请求。系统启动后不停运行,被动等待监听客户程序发来的请求。 + +2. Peer-to-Peer * + + 对等连接(P2P)是指两台主机通信时并不区分哪台是服务请求方,哪台是服务提供方。两台机器都运行了P2P软件,他们就可以进行平等的通信。 + +##### 1.3.2 互联网的核心部分 + +网络的核心部分是互联网中最复杂的部分,它需要保证互联网的边缘部分的大量主机的连通性。 + +在网络部分起到核心作用的是路由器。路由器是实现分组交换(packet switching)的关键构件,其任务是转发收到的分组。 + +1. 电路交换 * + + 是电话交换机至今仍使用的交换方式。电话机通过交换机连接起来,以在控制电线数量的情况下保证电话机和每一台电话机相连。 + + ![image-20220102132003489](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102132003489.png) + + 电话机经过多次更新换代,内部仍使用分组交换。**交换**(switching)就是按照某种方式动态地分配传输线路地资源。电路交换的方式会在端到端间建立连接,保证双方的通信资源,且在通信期间不会被占用。 + + > 必须经过"建立连接(占用通信资源)->通话(一直占用通信资源)->释放连接(归还通信资源)"三个步骤的交换方式称为电路交换。 + + 但若使用电路交换在计算机网络传输数据,由于计算机数据的突发性,线路的传输效率往往会很低。 + +2. 分组交换 + + 分组交换则使用存储转发技术。一个要发送的较长的报文会被划分为一个个分组进行发送。分组包含首部也就是"包头",包含了如目的地址和源地址等重要控制信息,保证了分组能正确的交付到传输终点。 + + 路由器则是负责转发分组,当路由器收到一个分组时,会先暂时储存,再根据首部以合适的接口转发出去。分组在传输时一段一段地占用通信资源。 + + 分组交换的优点: + + | 优点 | 所采用的手段 | + | ---- | ------------------------------------------------------------ | + | 高效 | 在分组传输的过程中动态分配传输带宽,对通信链路逐段占用 | + | 灵活 | 为每一个分组灵活地选择最合适的转发路由 | + | 迅速 | 以分组作为传送单位,可以不先建立连接就能向其他主机发送分组 | + | 可靠 | 保证可靠性的网络协议,分布式多路由的分组交换网,使网络具有很好的生存性 | + + ![image-20220102133855544](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102133855544.png) + +#### 1.6 计算机网络的性能 + +##### 1.6.1 计算机网络的性能指标 + +1. 速率 + + 比特(bit)指一个二进制数字,是信息论中使用的信息量的单位。 + + 网络技术中的速率是指数据的传送速率,也成为数据率或比特率,速率的单位是bit/s + +2. 带宽 + + 带宽(bandwidth)有两种不同的意义 + + + 某个信号具有的频带宽度。单位是赫(千赫、兆赫等)。表示某信道允许通过的信号频带范围就成为该信道的带宽。 + + 计算机网络中,带宽表示网络中某通道传送数据的能力,网络带宽表示的是单位时间内网络中某信道能通过的“最高数据率”。单位是数据率的单位bit/s。 + + 前者为频域称为,后者为时域称谓,其本质是相同的,一条通信链路的带宽越宽,其传输的最高数据率也越高。 + +3. 吞吐量 + + 吞吐量(throughput)表示在单位时间内通过某个网络(或信道、接口)的实际的数据量。用于对现实世界网络的一种测量。 + +4. 时延 + + 时延(delay/latency)是指数据从网路一端到另一端所需的时间。有时也称为延迟或迟延。时延有几个不同的部分组成: + + + 发送时延:主机或路由器发送数据帧所需要的时间。发送时延与发送的帧长成正比,与发送速率成反比。 + $$ + 发送时延=\frac{数据帧长度(bit)}{发送速率(bit/s)} + $$ + + + 传播时延:是电磁波在信道中传播一定的距离所需要化的时间。只与信号传送的距离有关。 + + + 处理时延:收到分组时花费一定的时间进行处理 + + + 排队时延:等待转发处理的时间 + +5. 时延带宽积 + + 由上面的两个度量:传播时延和带宽相乘得到。单位是bit。表示发送的第一个比特到达终点时,若持续发送,链路中正在传输的比特数。 + + 时延带宽积又称为以比特位单位的链路长度。 + +6. 往返时间RTT + + 往返时间RTT(Round-Trip Time)也是个重要性能指标。因为在许多情况下互联网上的信息是双向交互的。 + +7. 利用率 + + 分为信道利用率和网络利用率。信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。网络利用率则是全网络的信道利用率的加权平均值。 + + 信道利用率并非越高越好,当网络通信量增大,在网络节点分组进行处理时需要排队等待,网络引起的时延就会增大。以下是网络当前时延D和网络空闲时延D0、利用率U的关系。 + $$ + D=\frac{D_{0}}{1-U} + $$ + 当网络利用率达到50%时,时延就要加倍。信道或网络利用率过高会产生非常大的时延。 + + ![image-20220102141930754](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102141930754.png) + +#### 1.7 计算机网络体系结构 + +##### 1.7.1 计算机网络体系 + +计算机网络中两台计算机进行通信,要进行协调相当复杂。通过“分层”的方法,将庞大的问题转为若干的小问题来解决。 + +OSI标准是法律上的国际标准,将计算机分为七层协议的体系架构。而事实上的国际标准则是TCP/IP协议。 + +两种协议的详细架构将在本笔记的1.7.3章节展示。 + +##### 1.7.2 协议与划分层次 + +> 为进行网络中的数据交换而建立的规则、标准或约定称为网络协议。 + +##### 1.7.3 五层协议的体系结构 + +TCP/IP的四层协议在目前得到了较为广泛的应用。但由于其网络接口层基本没有什么内容,在学习计算机网络时往往将其与OSI协议结合,形成五层协议的网络体系结构。 + +![image-20220102143439652](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102143439652.png) + ++ 应用层:应用进程间交互和通信的规则 ++ 运输层:两台主机中进程间的通信提供通用的数据传输服务。主要使用传输控制协议TCP和用户数据报协议UDP。 ++ 网络层:负责为分组交换网上的不同主机提供通信服务。网络层把运输层产生的报文段封装成分组或包进行发送。TCP/IP协议中主要使用IP协议,分组也叫IP数据报。同时网络层还有选择路由的任务。 ++ 数据链路层:数据链路层将网络层交下来的IP数据报封装成帧(frame)。在两个相邻节点的链路上传送帧,每一帧包括数据和必要控制信息。 ++ 物理层:关注如何表示1和0,以及接收方如何识别发来的1和0。 + +![image-20220102144255025](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102144255025.png) + +##### 1.7.4 实体、协议、服务和服务访问点 + +协议是控制两个对等实体进行通信的规则的集合。 + +> 通过协议的控制,两个对等实体的通信使得本层向上层提供服务,而实现本层协议也会用到下一层提供的服务。 + +协议是水平的,而服务是垂直的。 + +##### 1.7.5 TCP/IP的体系结构 + +![image-20220102144755214](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102144755214.png) + +技术的使用是灵活地,互联网使用的协议又是也会发生演变,分层次画出沙漏状的TCP/IP协议族如下图所示。TCP/IP协议可以为各式各样的应用提供服务,也允许IP协议在格式各样的网络构成的互联网上运行。 + +![image-20220102145239179](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102145239179.png) + +### 第二章 物理层 + +#### 2.1 物理层的基本概念 + +物理层考虑如何在连接计算机的各式传输媒体上传输数据。 + +#### 2.2 数据通信的基础知识 + +##### 2.2.1 数据通信系统的模型 + +当进行通信时,目的是传递**消息**(message),而**数据**(data)则是运输消息的实体。**信号**(signal)则是数据的电气或电磁的表现。 + +信号可分为两大类: + ++ 模拟信号:消息的参数的取值是连续的 ++ 数字信号:消息的参数的取值是离散的 + +##### 2.2.2 有关信道的几个基本概念 + +信道一般用来表示向某一个方向传送信息的媒体。 + +通信的双方信息交互的方式可以有以下三种: + ++ 单向通信:**单工通信**,一个方向的通信,电视广播等 ++ 双向交替通信:**半双工通信**,通信双方都可以发送和接收,但不能同时发送 ++ 双向同时通信:**双工通信**,双方可以同时发送和接收消息 + +常用编码方式: + +![image-20220102151255099](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102151255099.png) + ++ 不归零制 ++ 归零制 ++ 曼彻斯特编码:位周期中心向上跳变表示0,向下跳变表示1 ++ 差分曼彻斯特编码:位中心始终跳变,每一位开始时有跳变代表0,无跳变代表1。 + +曼彻斯特编码具有自同步能力,不需要时钟信号。 + +带通调制方法: + ++ 调幅AM:载波的振幅变化 ++ 调频FM:载波的频率变化 ++ 调相PM:初始相位变化 + +##### 2.2.3 信道的极限容量 + +> 码元传输的速率越高,或信号传输的距离越远,或噪声干扰越大,或传输媒体质量越差,在接收端波形的失真就越严重。 + +限制码元在信道上传输速率的因素有两个: + +1. 信道能通过的频率范围 + + 信道的频带越宽,能通过的信号高频分量多,就可以用更高的速率传送码元而不出现码间干扰。 + +2. 信噪比 + + 信噪比就是信号的平均功率和噪声的平均功率之比。常记为S/N,用分贝(dB)作为度量单位。(S:信道内信号平均功率,N:高斯噪声功率) + $$ + 信噪比(dB)=10 \log_{10}(S/N) + $$ + 香农公式,信道的极限传输速率C为(W:信道带宽,单位hz): + $$ + C=W \log_2(1 + S/N)(bit/s) + $$ + +#### 2.3 物理层下面的传输媒体 + +传输媒体可分为两大类 + ++ 导引型传输媒体 + + 双绞线 + + 同轴电缆 + + 光缆 ++ 非导引型传输媒体 + + 短波通信 + + 无线电微波通信 + + 卫星通信 + + 红外通信、激光通信(近距离) + +#### 2.4 信道复用技术 + +##### 2.4.1 频分复用、时分复用和统计时分复用 + ++ 频分复用FDM:最基本的复用之一。用户在分配到一定的频带后,自始至终都占用这个频带。频分复用的所有用户在同样的时间内占用不同的带宽资源。 ++ 时分复用TDM:也是最基本的复用之一。将时间分为一段段等长的时分复用帧。每一个时分复用的用户占用固定序号的时间间隙。 + +![image-20220102153631507](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102153631507.png) + ++ 统计时分复用STDM:解决互联网的突发性问题,改进时分复用,能明显提高信道的利用率。通过集中器集中用户的数据发往高速线路。每个时隙由于不固定分配,需要有用户的地址信息。 + +##### 2.4.2 波分复用 + +波分复用WDM就是光的频分复用。使用一根光纤传输多个光载波信号。现在能复用的路数越来越多,又使用了密集波分复用DWDM这一名词。 + +##### 2.4.3 码分复用 + +码分复用CDM是另一种共享信道的方法,各用户使用不同码型,最初用于军事通信,有很强的抗干扰能力。 + +每个比特时间划分为m个短的间隔,被称为码片。每个站会被指派一个m bit的码片序列。发送时该序列代表1,反码代表0。 + +每个站被分配的码片序列都必须正交,即规格化内积为0。 + +码片向量和本身规格化内积为1,和反码规格化内积为1 + +当接收站接收该站信号时,就用该站码片序列和收到的信号计算规格化内积,结果为1表示1,-1表示0,0表示为其他站发送的信号。 + +#### 2.6 宽带接入技术 + +连接到某个ISP以接入互联网的方式。 + +##### 2.6.1 ADSL技术 + +非对称数字用户线ADSL(Asymmetric Digital Subscriber Line)技术是对现有的模拟电话用户需进行改造,把没有被利用的高频部分给用户上网使用。在用户线两端各安装一个调制解调器,采用自适应调制技术选择尽可能高的数据率,不能保证固定的数据率。 + +##### 2.6.2 光纤同轴混合网(HFC网) + +有线电视基础上开发的居民宽带网。 + +##### 2.6.3 FTTx + +x表示不同的光纤接入地点,整个词语表示光纤到xxx + +FTTH即为光纤到户,为理想中的宽带接入方式。(Fiber To The Home) + +### 第三章 数据链路层 + +属于计算机网络的低层,数据链路层使用的信道主要有两种类型:点对点信道和广播信道。 + +主要解决相邻节点的数据传输问题。 + +#### 3.1 点对点信道 + +##### 3.1.1 数据链路和帧 + +链路是一条无源的点到点的物理线路段,中间没有任何其他交换节点 + +而数据链路(data link)是另一个概念,除了物理线路,还必须有一些必要的通信协议来控制这些数据的传输。数据链路是链路加上了实现这些协议的软件和硬件。 + +点对点信道数据链路层的协议数据单元为帧。 + +![image-20220102162037404](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102162037404.png) + +##### 3.1.2 三个基本问题 + +1. 封装成帧 + + 在数据前后分别添加首部和尾部(帧定界) + + ![image-20220102162200402](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102162200402.png) + +2. 透明传输 + + 当要传输的数据中出现某些特定的二进制组合时,例如表示帧结束EOT的一串二进制数字,传输会出现错误。为了让这种数据不出现问题,“看不见”有什么会妨碍数据传输,通过字节填充/字符填充(加入转义字符ESC)来解决这种问题。 + +3. 差错检测 + + 通过一些方式解决传输时出现差错的问题。 + + 数据链路层目前广泛使用了循环冗余检验(CRC)的检错技术。在发送的数据后添加n位冗余码。 + + + 发送数据后添加n个0,用其除以一个规定好的除数 + + 将余数加到发送数据后 + + 收到每个数据后除以该规定好的除数,其余数为0表示无差错 + +MTU:最大传输尺寸,用来限制每个mac帧的长度 + +#### 3.2 点对点协议PPP + +点对点协议PPP(Point-to-Point Protocol)是目前使用的最广泛的数据链路层协议。 + +##### 3.2.1 PPP协议的特点 + +PPP就是用户计算机和ISP通信时使用的数据链路层协议。 + +##### 3.2.2 PPP协议的帧格式 + +![image-20220102164216215](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102164216215.png) + +零比特填充:当使用同步传输时,PPP使用0比特填充实现透明传输。当出现5个连续1的时候,立即填入一个0。接收时相反,发现5个连续1的时候,就把这5个连续1后的0删除。 + +#### 3.3 使用广播信道的数据链路层 + +广播信道用于进行一对多的通信 + +##### 3.3.1 局域网的数据链路层 + +当下的以太网在局域网中占据了绝对的优势。以太网几乎成为了局域网的同义词。 + +1. 以太网的两个标准 + + + DIX Ethernet V2 + + IEEE 802.3 + +2. 适配器的作用 + + 计算机与外界局域网的连接是通过通信适配器(adapter)进行的。适配器的重要作用就是串行传输和并行传输的转换。 + +##### 3.3.2 CSMA/CD协议 + +在数据帧的首部写明接收站的地址来在广播特性的总线上实现一对一的通信。 + +以太网采用较为灵活的无连接的工作方式,以太网不对发送的数据编号也不要求发回确认,提供不可靠的交付。而这些工作以及重传等是否进行就交给上层协议,例如tcp协议会完成这些工作。 + +总线上同一时间只能允许一台计算机发送数据,为了进行协调和监控,使用的协议是CSMA/CD,意为载波监听多点接入/碰撞检测。 + +CSMA/CD协议要点: + ++ 多点接入 ++ 载波监听:不管在发送前,还是发送中,每个站都不停地监听信道 ++ 碰撞检测:边发送边监听 + +一旦检测到了碰撞,就要立即停止发送。在碰撞后,最迟经过2倍的端到端传播时延才能被检测到。 + +![image-20220102181925472](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102181925472.png) + +因此以太网的端到端往返时间2r称为争用期,经过争用期还没有检测到碰撞,才能肯定这次发送不会产生碰撞。 + +长度小于争用期发送的字节数(争用期时间*网速)的帧都被认为是无效帧。 + +##### 3.3.3 使用集线器的星形拓扑 + +传统以太网最终发展为使用更便宜和灵活的双绞线。以太网采用星形拓扑,在中心增加了一种名为集线器的设备。双绞线以太网总是和集线器配合使用。 + ++ 集线器使用电子器件来模拟实际电缆线的工作,使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD协议。同一时刻至多只允许一个站发送数据。 ++ 一个集线器有很多接口。一个集线器很像一个多接口的转发器。 ++ **集线器工作在物理层**,它的每个接口仅仅简单地转发比特,不进行碰撞检测,若两个接口同时有信号输入即发生碰撞,所有的接口都收不到正常的帧。 + +##### 3.3.4 以太网的信道利用率 + +以太网信道被占用的情况包括争用期发生碰撞的情况,如下图所示: + +![image-20220102183433665](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102183433665.png) + +因此要提升以太网的信道利用率,就必须减小r与T0之比。这个比值越打,表名争用期所占的比例越大,每一次碰撞都浪费了不少信道资源。 + +##### 3.3.5 以太网的MAC层 + +> 在局域网中,硬件地址又被称为物理地址或MAC地址。 + +IEEE802标准为局域网规定了一种48位的全球地址,是指局域网上的每一台机器固化在适配器的ROM中的地址。 + +如果连接在局域网上的主机或路由器有多个适配器,那么就有多个地址。准确的说,这48位“地址”是某个接口的标识符。 + +网络上收到一个MAC帧首先检查MAC帧中的目的地址,只收下发往本站的帧。“发往本站的帧”包括三种: + ++ 单播帧:一对一,地址与本站硬件地址相同 ++ 广播帧:一对全体,全1地址 ++ 多播帧:一对多,发送给一部分站点 + +所有的适配器都至少应当能识别前两种帧。 + +#### 3.4 扩展的以太网 + +许多情况下希望扩展以太网的覆盖范围,可以在物理层扩展,也可以在数据链路层扩展。扩展后的以太网在网络层仍被视为一个网络。 + +##### 3.4.1 物理层扩展以太网 + ++ 光纤和一对光纤调制解调器 ++ 使用多个集线器连接成覆盖更大范围的多级星形结构的以太网 + +会扩大以太网的碰撞域。 + +##### 3.4.2 数据链路层扩展以太网 + +最初使用网桥 + +1990年,交换式集线器(switching hub)问世,常称为以太网交换机(switch)或第二层交换机,**工作在数据链路层**。 + +1. 以太网交换机的特点 + + 实质上就是一个多借口的网桥。以太网交换机的每个接口都直接与一个单台主机或另一个以太网交换机相连,一般都工作在全双工方式。相互通信的主机都是独占传输媒体,无碰撞地传输数据。 + + 交换机能在输出接口繁忙时缓存要发送的帧,以后再发送出去。 + + 交换机是一种即插即用设备,内部的帧交换表是通过自学习算法自动地逐渐建立起来。 + + 以太网交换机的性能远远超过普通的集线器。 + +2. 从总线以太网到星形以太网 + + 集线器代替了总线后,可使用全双工方式工作,也不再需要CSMA/CD协议,但仍称作以太网,因为它的帧结构仍未改变。 + +#### 3.5 高速以太网 + +##### 3.5.1 100BASE-T高速以太网 + +100BASE-T是在双绞线上传送100Mbit/s基带信号的星形拓扑以太网。仍使用IEEE的802.3的CSMA/CD协议。 + +### 第四章 网络层 + +#### 4.1 网络层提供的服务 + +问题:在计算机通信中,可靠交付是否应当由网络层提供? + +**面向连接**:两台计算机进行通信时,应当先建立连接,保证发送的分组不丢失,不重复地到达终点。 + +**无连接**:互联网采用的设计思路,网络层向上只提供简单灵活的,无连接的,尽最大努力交付的数据报服务。网络层不提供服务质量的承诺。 + +#### 4.2 网际协议IP + +网际协议IP是TCP/IP体系中两个最主要的协议之一。使用的版本有IPv4和IPv6。 + +与IP配套使用的还有三个协议: + ++ 地址解析协议ARP(Address Resolution Protocol) ++ 网际控制报文协议ICMP(Internet Control Message Protocol) ++ 网际组管理协议IGMP(Internet Group Management Protocol) + +![image-20220102191757773](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102191757773.png) + +##### 4.2.1 虚拟互连网络 + +不同的网络想要连接起来非常复杂,会遇到许多问题。将网络连接起来需要使用一些中间设备,根据中间设备所在二点层次,可以有以下四种不同的中间设备。 + ++ 物理层使用的中间设备叫转发器(repeater) ++ 数据链路层使用的中间设备叫网桥或桥接器(bridge) ++ 网络层使用的中间设备叫路由器(router) ++ 在网络层以上使用的中间设备叫网关(gateway) + +转发器和网桥仅仅是扩大一个网络,从网络层看,这仍是一个网络。网关则比较复杂。 + +网络互连时,都是用路由器进行。 + +路由器其实是一台专用计算机,用来在互联网中进行路由选择。 + +**直接交付**指目的主机就在本网络中,而**间接交付**则指通过查找路由表,先把数据包间接交付给路由器,路由器再继续寻址。 + +![image-20220102192708579](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102192708579.png) + +##### 4.2.2 分类的IP地址 + +在TCP/IP协议中,IP地址是一个最基本的概念。 + +1. IP地址及其表示方法 + + 整个互联网就是一个单一的,抽象的网络,IP地址就是给互联网上的每一台主机或路由器的每一个接口分配一个在全世界范围内唯一的32位标识符。IP地址现在由ICANN进行分配。 + + IP地址的编址经历了3个阶段:分类的IP地址,子网的划分和构成超网。 + + 所谓分类的IP地址就是将IP地址划分位若干个固定类,每一类地址都由固定长度的网络号和主机号组成。 + + 网络号在互联网范围内应当是唯一的,主机号在网络号指明的网络范围内是唯一的,因此整个IP地址在互联网范围内应当是唯一的。 + + ![image-20220102193517957](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102193517957.png) + + ABC3类地址较为常用: + + ![image-20220102193628173](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102193628173.png) + +##### 4.2.3 IP地址与硬件地址 + +物理地址是数据链路层和物理层使用的地址,而IP地址是网络层和以上各层使用的地址。 + +![image-20220102194805436](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102194805436.png) + +##### 4.2.4 地址解析协议ARP + +解决问题:主机或者路由器如何知道应当在MAC帧的首部填入什么样的硬件地址? + +ARP的作用:从网络层使用的IP地址,解析出在数据链路层使用的硬件地址。 + +要点 + ++ 地址解析ARP在主机的ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新。 + ++ 当主机A向B发送数据报时,如果ARP缓存内有B的IP地址,就查出对应硬件地址。如果没有,就会广播一个ARP请求分组,原理如下图。 + + ![image-20220102195450227](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102195450227.png) + ++ ARP缓存的内容都有一个生存时间,以避免硬件的更改。 + +##### 4.2.5 IP数据报的格式 + +![image-20220102195641806](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102195641806.png) + + + +IP数据报的各个字段: + ++ 版本:通信双方使用的版本必须一致(ipv4,ipv6) ++ 首部长度 ++ 区分服务,一般情况下都不使用 ++ 总长度:理论最大长度为65535字节,实际中不可超过数据链路层规定的MTU值 ++ 标识:超过MTU而分片时使用 ++ 标志:占3位但仅仅有两位有意义,最低位MF=1表示后面还有分片,中间为DF=0表示允许分片 ++ 片偏移:以8个字节为偏移单位 ++ 生存时间(TTL):Time to Live,表明数据包在网络中寿命,路由器每跳转一次,TTL减一,防止无法到达的数据包在网络中兜圈子。最大数值255。设置TTL为1,表名该数据报仅在局域网中传输。 ++ 首部检验和 ++ 源地址 ++ 目的地址 + +IP数据报首部还有段可变部分,用于增加功能,但很少使用。 + +##### 4.2.6 转发分组流程 + +![image-20220102200546016](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102200546016.png) + +**默认路由**:减少路由表所占空间和搜索路由表的时间。在一个网络只有很少的对外连接时很好用。 + +#### 4.3 划分子网和构造超网 + +##### 4.3.1 划分子网 + +1. 从两级IP地址到三级IP地址 + + 在IP地址中增加了一个子网号字段,这种做法叫划分子网(subnetting) + + + 一个拥有很多物理网络的单位,可将所属的物理网络划分为若干个子网,这个单位对外仍表现为一个网络。 + + 划分子网的方法是从主机号借用若干位作为子网号,主机号减少相应位数。 + +2. 子网掩码 + + 通过子网掩码与IP地址按位与得到划分的子网的地址。 + + 使用对应类地址的默认子网掩码与IP地址按位与,应当得出该IP的网络地址 + + **子网掩码是一个网络或一个子网的重要属性** + +##### 4.3.2 分组转发 + +![image-20220102201328744](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102201328744.png) + +##### 4.3.3 无分类编址CIDR(构造超网) + +无分类域间路由选择CIDR(Classless Inter-Domain Routing) + ++ CIDR消除了ABC类地址和划分子网的概念,IP地址回到两级编址,分为网络前缀和主机号 ++ CIDR记法/斜线记法,标记网络前缀所占的位数 ++ CIDR的32位地址掩码,一串1就是网络前缀位数,剩余部分为一串0 ++ 一个单位划分到一个CIDR地址块,仍可以分出子网,网络前缀位数增加 + +CIDR在路由匹配时,使用最长前缀匹配。 + +#### 4.4 网际控制报文协议ICMP + +ICMP(Internet Control Message Protocol)允许主机或路由器报告差错情况。ICMP报文作为IP数据包的数据发送。 + +##### 4.4.1 ICMP报文的种类 + +ICMP分为ICMP差错报告报文和ICMP询问报文 + +![image-20220102202328039](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102202328039.png) + +##### 4.4.2 ICMP的应用举例 + +重要应用:分组网间探测PING(Packet InterNet Groper),用来测试两台机器之间的连通性。 + +PING是应用层直接使用网络层的一个例子,没有经过TCP或UDP。 + +另一个应用:traceroute(linux)/tracert(windows),得到目的主机的路由信息 + +#### 4.5 互联网的路由选择协议 + +##### 4.5.1 基本概念 + +1. 理想算法 + + 正确、完整、计算简单、能适应网络拓扑变化、稳定、公平、最佳。 + + 静态选择:人工配置,小规模。 + + 动态选择:自适应 + +2. 分层次的路由选择 + + 把互联网分为许多较小的**自治系统**(autonomous system)。一个AS对其他AS表现出的是一个单一的和一致的路由选择策略。 + + 一个大的ISP就是一个自治系统,路由选择协议划分为两大类: + + + 内部网关协议IGP(Interior Gateway Protocol) 自治系统内部使用,RIP、OSPF + + 外部网关协议EGP(External Gateway Protocol) 自治系统之间使用 + +##### 4.5.2 内部网关协议RIP + +1. 工作原理 + + 分布式的基于距离向量的路由选择协议。 + + 每一个路由器都维护它到其他每一个目的网络的距离(跳数)的记录。RIP协议中跳数为16时表示不可达,只适用于小型互联网。 + + 三个要点: + + + 仅和相邻路由器交换信息 + + 交换的信息是当前本路由器所知道的全部信息,即现在的路由表 + + 按固定时间间隔交换路由信息 + +2. 距离向量算法 + + ![image-20220102203651355](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102203651355.png) + +实现简单、开销较小 + +##### 4.5.3 内部网关协议OSPF + +1. 基本特点 + + OSPF(Open Short Path First)开放最短路径优先,是为克服RIP的缺点(坏消息传的慢)开发出来的。实现较为复杂。使用了Dijkstra提出的最短路径算法。 + + 三个要点: + + + 向本自治系统所有路由器发送信息(洪泛法 flooding) + + 发送的信息是与本路由器相邻的所有路由器的链路状态 + + 链路状态发生变化时才发送此信息 + + 互联网规模大时,比RIP好的多。 + +##### 4.5.4 外部网关协议BGP + +RIP和OSPF在自治系统之间由于规模大、性能不定等原因不合适。 + +因此,BGP力求寻找一条能够到达目的网络且比较好的路由,而不需要找最佳路由。 + +采用了路径向量(path vector)路由选择协议。 + +#### 4.6 IPv6 + +IPv6使用了更大的地址空间,从32位扩充到128位,在可预见的将来不会用完 + +##### 4.6.2 IPv6的地址 + +分为单播、多播和任播。任播的终点是一组计算机,但只交付其中一个。 + +每个IPv6地址站128位,使用冒号十六进制记法使地址简洁些。 + +**零压缩**:一串连续的0可以用两个连续的冒号替代,但一串地址仅能使用一个零压缩。 + +#### 4.8 虚拟专用网VPN和网络地址转换NAT + +##### 4.8.1 虚拟专用网VPN + +三个专用地址,互联网中的路由器不会转发: + +![image-20220102205307827](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102205307827.png) + +利用公用的互联网作为本机构各个专用网间的通信载体,这样的专用网称之为虚拟专用网。 + +##### 4.8.2 网络地址转换NAT + +专用网连接到互联网的路由器上装上NAT软件,NAT路由器有一个全球IP地址,会在通过互联网时进行转换。通过NAT路由器轮流使用有限数量的全球IP地址。 + +现在常用的NAT转换表会把端口号也用上,使得多个主机共用一个NAT路由器上的全球IP地址。 + +### 第五章 运输层 + +#### 5.1 运输层协议概述 + +##### 5.1.1 进程之间的通信 + +运输层向上面的应用层提供服务,属于面向通信的最高层,也是用户功能中的最低层。 + +##### 5.1.2 运输层的两个主要协议 + +运输层的两个协议都是互联网的主要标准: + +1. 用户数据报协议UDP(User Datagram Protocol):不需要事先建立连接 +2. 传输控制协议TCP(Transmission Control Protocol):提供面向连接的服务 + +##### 5.1.3 运输层的端口 + +在运输层使用**协议端口号**(protocol port number)来解决报文要传输给哪个进程的问题。 + +通常简称端口,把传送的报文交到目的主机的合适的端口,剩下的工作由TCP或UDP来完成。 + +16位的端口号允许有65535个不同的端口号。 + +运输层端口号分为以下两类: + +1. 服务器端使用的端口号 + + 1. 熟知端口号(0-0123),这些端口号指派给了一些最重要的应用程序,让所有的用户都知道。 + + ![image-20220102215601577](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102215601577.png) + + 2. 登记端口号(1024-49151),为没有熟知端口号的应用程序使用 + +2. 客户端使用的端口号,49152-65535,客户进程运行时才短暂选择 + +#### 5.2 用户数据报协议UDP + +##### 5.2.1 UDP概述 + +主要特点: + ++ 无连接的 ++ 尽最大努力交付 ++ 面向报文,发送方的UDP对应用程序交下的报文,既不合并,也不拆分,保留这些报文的边界。 ++ 没有拥塞控制,利于某些实时应用 ++ UDP支持一对一,一对多,多对一和多对多的交互通信 ++ UDP首部开销小,只有8个字节 + +#### 5.3 传输控制协议TCP概述 + +##### 5.3.1 TCP主要特点 + ++ TCP是面向连接的运输层协议 + ++ 每一条TCP连接只有两个端点 + ++ TCP提供可靠交付的服务 + ++ TCP提供全双工通信 + ++ 面向字节流,TCP把应用程序交下来的数据仅仅堪称一串无意义的字节流 + + ![image-20220102220250155](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102220250155.png) + + 注:图中的连接是一条虚连接,TCP报文传输到IP层进行处理,而IP是无连接协议,TCP如何实现可靠传输,稍后讨论。 + +##### 5.3.2 TCP的连接 + +TCP连接的端点叫做**套接字(socket)**或插口,端口号拼接到IP地址就构成了套接字。 + +每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。 + +一个IP地址可以有很多个不同的TCP连接,同一个端口号也可以出现在很多不同的TCP连接中。 + +#### 5.4 可靠传输的工作原理 + +TCP采取适当的措施使得两个运输层之间的通信变得可靠。 + +##### 5.4.1 停止等待协议 + +1. 无差错情况 + + 发送报文,收到确认后发送下一条报文 + +2. 出现差错 + + 检测出了差错便丢弃,或者传输错误B未收到,A在超过一段时间没有收到确认,便会自动重传 + + ![image-20220102221229455](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102221229455.png) + +3. 确认丢失和确认迟到 + + 若发送的确认信息丢失或是迟到,A将重新发送该分组,此时B将丢弃重复分组,并仍然向A发送确认。 + + 上述这种可靠传输协议称为自动重传请求ARQ(Automatic Repeat reQuest) + +4. 信道利用率 + + 停止等待协议很简单,但信道利用率很低。当往返时间RTT远大于分组发送时间时,信道利用率会非常低。出现重传还将进一步下降。 + + 为了解决该问题使用流水线传输提高传输效率,会使用**滑动窗口协议**和**连续ARQ协议**。 + +##### 5.4.2 连续ARQ协议 + +最基本的概念:发送方将维持一个发送窗口,发送窗口内的n个分组都可连续发送出去。 + +发送方每收到一个确认,就把发送窗口向前滑动一个位置。 + +接收方则一般使用累计确认,对按序到达的最后一个分组发送确认, + +而如果发送5个分组,第三个分组丢失了,接收方只会对第二个分组发出确认,后面的三个分组都会进行重传,这个情况就叫做Go-back-N(回退N)。 + +#### 5.5 TCP首部 + +![image-20220102222137034](https://www.peteralbus.com:8440/assets/blog/imgs/blogimg/image-20220102222137034.png) + +字段: + +1. 源端口和目的端口 + +2. 序号:字节流中每一个字节都按顺序编号 + +3. 确认号:**期望收到对方下一个报文段的第一个数据字节的序号** + +4. 数据偏移 + +5. 保留 + +6. 紧急URG,通知报文段有紧急数据,优先传送 + +7. 确认ACK,仅当ACK=1时确认号才有效。建立连接后所有报文段都必须把ACK置1 + +8. 推送PSH,尽快交付,很少使用 + +9. 复位RST,RST=1时,连接出现错误,需要释放连接 + +10. 同步SYN,连接建立时用于同步序号 + +11. 终止FIN,释放连接用 + +12. 窗口:发送本报文段一方的接收窗口大小,是发送方设置发送窗口大小的依据 + +13. 检验和 + +14. 紧急指针 + +15. 选项:长度可变,最长40字节 + + 最初规定了一种选项:MSS最大报文段长度(Maximum Segment Size),是**数据字段**的最大长度 + + MSS应尽可能大,保证IP层不需再分片即可 + +#### 5.6 可靠传输的实现 + diff --git a/ComputerOS.md b/ComputerOS.md index df61d51..b81e2ed 100644 --- a/ComputerOS.md +++ b/ComputerOS.md @@ -88,11 +88,11 @@ ### 1.3 操作系统的基本特征 -并发性、共享型、虚拟性、异步性。 +并发性、共享性、虚拟性、异步性。 并发性是操作系统最重要的特性。 -并发性和共享型是操作系统最基本的特征。 +并发性和共享性是操作系统最基本的特征。 #### 1.3.1 并发性 @@ -241,10 +241,10 @@ Spooling技术、窗口技术、虚拟存储器...... ##### 4.进程的特征 + 结构特征:进程包含数据集合和运行于其上的程序,它至少由程序块,数据块和进程控制块等要素组成。 -+ 动态性:进程是程序在数据集合上的一次执行**过程**。程序有其生命周期,由创建而产生,调度而执行,得不到资源而阻塞,撤销而消亡。为进程**最基本的特征**。 -+ 并发性:没有建立PCB是不能并发执行的。(建立了进程才能并发执行)是**进程的重要特征**,也是OS的重要特征。 -+ 独立性:进程实体是一个能独立运行,独立分配资源和独立接受调度的基本单位。 -+ 异步性:也称随机性,是指进程按照各自独立的不可预知的速度向前推进。 ++ **动态性**:进程是程序在数据集合上的一次执行**过程**。程序有其生命周期,由创建而产生,调度而执行,得不到资源而阻塞,撤销而消亡。为进程**最基本的特征**。 ++ **并发性**:没有建立PCB是不能并发执行的。(建立了进程才能并发执行)是**进程的重要特征**,也是OS的重要特征。 ++ **独立性**:进程实体是一个能独立运行,独立分配资源和独立接受调度的基本单位。 ++ **异步性**:也称随机性,是指进程按照各自独立的不可预知的速度向前推进。 ### 3.2 进程状态及其转换 @@ -842,6 +842,20 @@ void V(S1,d1,...,Sn,dn) 考试时要会利用信号量解决实际问题。 +```c +Semaphore hall=200; +Semaphore conductor=1; + +void buy() +{ + P(hall); + P(conductor); + buyticket(); + V(conductor); + v(hall); +} +``` + **使用信号量时注意**: + PV(wait和signal)必须成对出现。 @@ -902,7 +916,7 @@ void V(S1,d1,...,Sn,dn) + UNIX和windows都采用此方法 + 是方便和正确性的一种折中 + 静态预防:消除死锁的4个必要条件的任意一个 - + 消除资源独占条件 + + 消除资源独占条件(互斥条件) + 一些设备可以被共享 + 但不是所有设备都可以被共享 + 消除持有等待条件 diff --git a/ComputerOrganization.md b/ComputerOrganization.md index eafb8d6..7d6cb9d 100644 --- a/ComputerOrganization.md +++ b/ComputerOrganization.md @@ -2,6 +2,55 @@ --- +# 附录 常见缩写及解释 + ++ ALU 算术逻辑单元 ++ CU 控制单元 ++ ACC 运算器的累加器 ++ MAR 存储器地址寄存器 ++ MDR 存储器数据寄存器 ++ MQ 运算器的乘商寄存器 ++ X 操作数寄存器 ++ PC 程序计数器 ++ IR 指令寄存器 ++ MIPS 百万条指令每秒 ++ CPI 执行一条指令所需的时钟周期 ++ FLOPS 浮点运算每秒 ++ MBPS 兆字节每秒 ++ DMA 直接存储器存取 ++ BS 总线忙 ++ BR 总线请求 ++ BG 总线同意 ++ MROM 掩模型只读存储器 ++ PROM 可编程只读存储器 ++ EPROM 可擦除可编程只读存储器 ++ EEPROM 用电可擦除可编程只读存储器 ++ MCT 存取周期 ++ CS(上划线)片选信号(低电平有效) ++ WE(上划线)写允许信号(低电平为写,高电平为读) ++ V CC 代表电源 ++ GND 代表接地端 ++ RAS(上划线) 行地址选通 ++ CAS(上划线) 列地址选通 ++ CCW 通道指令 ++ DBR 数据缓冲寄存器 ++ INTR 中断请求触发器 ++ MASK 屏蔽触发器 ++ AR 主存地址寄存器 ++ WC 字计数器 ++ BR 数据缓冲寄存器 ++ DAR 设备地址寄存器 ++ DREQ 向DMA接口提出申请 ++ HRQ 发出总线使用权的请求信号 ++ RISC 精简指令系统计算机 ++ CISC 复杂指令系统计算机 ++ NOP 空操作 ++ HLP 停机 ++ RET 子程序返回 ++ IRET 中断返回 ++ SP 堆栈指针 ++ FLASH MEMORY 闪速存储器 + # 第一章 计算机系统概论 ### 1.1 计算机系统简介 @@ -43,7 +92,7 @@ + 输入设备用来将人们熟悉的信息形式转换为机器能识别的信息形式 + 输出设备可将机器运算结果转换为人们熟悉的信息形式 -![现代计算机硬件框图](http://47.117.160.245:8080/pictrue/private/co_02.png) +![现代计算机硬件框图](https://www.peteralbus.com:8440/pictrue/private/co_02.png) ### 1.3 计算机硬件的主要技术指标 @@ -657,7 +706,7 @@ $$ ##### 3.组相联映射 -某一主存块可以映射到缓存的某一组的任意一块(直接映射和全相联映射介个) +某一主存块可以映射到缓存的某一组的任意一块(直接映射和全相联映射结合) #### 4.3.3 替换算法